Text chunking
=============

``aidb.chunk_text()``
ファンクションを使用して、長い文字列をより小さい意味的に一貫したセグメントにインテリジェントに分割します。このプロセスは、大規模言語モデルLLMのコンテキストウィンドウ制限内にとどまり、ベクターストレージを最適化するために重要です。

.. code:: sql

   SELECT * FROM aidb.chunk_text(
       input => This is a significantly longer text example that might require splitting into smaller chunks. The purpose of this function is to partition text data into segments of a specified maximum length, for example, this sentence 145 is characters. This enables processing or storage of data in manageable parts.,
       options => {"desired_length": 120, "max_length": 150}
   );

   __OUTPUT__
    part_id |                                                                       chunk
   - --------+---------------------------------------------------------------------------------------------------------------------------------------------------
          0 | This is a significantly longer text example that might require splitting into smaller chunks.
          1 | The purpose of this function is to partition text data into segments of a specified maximum length, for example, this sentence 145 is characters.
          2 | This enables processing or storage of data in manageable parts.
   (3 rows)

構成オプション
--------------

- ``desired_length`` 必須
  各セグメントのターゲットサイズ。スプリッターは、セマンティック境界を維持しながら、このサイズに到達しようとします。
  ``max_length`` を省略すると、これは厳密な上限値になります。

- ``max_length`` オプショナル
  チャンクサイズの上限。指定すると、ファンクションは\ ``desired_length``
  に近いチャンクを生成しようとしますが、より大きな意味単位完全な文や段落などを保持するために\ ``max_length``
  まで拡張する場合があります。チャンクは、意味のある境界をまたぐカットを回避する必要がある場合にのみ\ ``desired_length``
  を超えます。単位は使用する\ ``strategy`` によって異なります。

- ``desired_length = max_length``
  を指定すると、固定サイズのチャンクたとえば、埋め込みのためにコンテキストウィンドウを正確に埋める場合。

- ソフトリミット内にとどまりたいが、ある程度の柔軟性を許可する場合は、より大きな\ ``max_length``
  を使用しますRAG、要約、またはQ&Aアプリケーションで一般的な、より高い意味単位を保持します。

- ``overlap_length`` オプショナル
  連続するチャンク間でオーバーラップするコンテンツの量。これは、1つのチャンクの終わりから次のチャンクの先頭までコンテンツの一部を複製することにより、チャンク境界を超えてコンテキストを保持するのに役立ちます。デフォルト0オーバーラップなし。単位は使用される\ ``strategy``
  によって異なります。

- ``strategy`` オプショナル
  使用するチャンク戦略。文字数によって厳密に分割する文字ベースのチャンクの場合は\ ``"chars"``
  デフォルト、またはワード境界を保持するワードベースのチャンクの場合は\ ``"words"``
  のいずれかです。これにより、\ ``desired_length`` 、\ ``max_length``
  、および\ ``overlap_length`` の単位が決まります。\ ``"chars"``
  は文字、\ ``"words"`` はワードです。

アルゴリズムの概要
^^^^^^^^^^^^^^^^^^

- テキストは、意味的境界の階層を使用して分割されます文字、書記素、単語、文、およびますます長くなる改行シーケンス段落など。

- スプリッターは、指定されたサイズ範囲内に収まる意味的に有効な最大のチャンクを形成しようとします。

- 次のセマンティックユニットの追加が\ ``max_length`` を超える場合、
  ``desired_length`` より短いチャンクが返される場合があります。

..  Tip::
   この操作は、データの形状を変換し、 `part_id` 列を導入することによりコレクションのネストを自動的に解除します。パイプラインがマルチパート出力を処理する方法の詳細については、 :ref:`Creating pipelines <Creating pipelines>` を参照してください。
