Text chunking#

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

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 列を導入することによりコレクションのネストを自動的に解除します。パイプラインがマルチパート出力を処理する方法の詳細については、 Creating pipelines を参照してください。