VECTOR_CHUNKS
ベクトル索引またはハイブリッド・ベクトル索引とともに使用できるベクトル埋込みを生成するために、プレーン・テキストを複数の小さいチャンクに分割するには、VECTOR_CHUNKS
を使用します。
chunks_table_arguments::=
chunking_spec::=
split_characters_list::=
custom_split_characters_list
normalization_spec
custom_normalization_spec
normalization_mode
chunking_mode::=
目的
VECTOR_CHUNKS
は、text_document
引数として文字値を取り、それらを、オプションのchunking_spec
で指定されたチャンク化パラメータによって制御されるプロセスを使用して複数のチャンクに分割します。チャンクは、仮想リレーショナル表の行として返されます。そのため、VECTOR_CHUNKS
は、副問合せのFROM
句においてのみ指定できます。
返された仮想表には次の列があります:
-
データ型
NUMBER
のCHUNK_OFFSET
は、ソース・ドキュメント内の各チャンクの位置であり、そのドキュメントの開始位置(位置1)を基準とします。 -
データ型
NUMBER
のCHUNK_LENGTH
は、各チャンクの長さです。 -
CHUNK_TEXT
は、text_document
から分割されたテキストのセグメントです。
CHUNK_TEXT
列のデータ型と、CHUNK_OFFSET
とCHUNK_LENGTH
の値で使用される長さ単位は、次の表で示すように、text_document
のデータ型によって異なります。
表7-13 入力および出力のデータ型の詳細
入力データ型 | 出力データ型 | オフセットと長さの単位 |
---|---|---|
|
|
|
|
|
byte |
|
|
|
|
|
|
|
|
|
|
|
|
ノート:
-
データ型の詳細は、SQLリファレンス・マニュアルのデータ型を参照してください。
-
VARCHAR2
入力データ型は、MAX_STRING_SIZE
パラメータがEXTENDED
(32767
に制限が拡大されます)に設定されていないかぎり4000
バイトに制限されます。
パラメータ
すべてのチャンク化パラメータはオプションであり、デフォルトのチャンク化指定はチャンク・データに自動的に適用されます。
このAPIのチャンク化パラメータを指定する場合は、これらのパラメータをリストされている順序でのみ指定するようにしてください。
表7-14 チャンク化パラメータの表
パラメータ | 説明および許容される値 |
---|---|
|
データを分割するモードを指定します。つまり、文字、単語または語彙トークンの数をカウントして分割します。 有効値:
デフォルト値: |
|
各チャンクの最大サイズの制限を指定します。この設定では、大きいテキストで最大制限に達したときに、固定された位置で入力テキストが分割されます。 有効値:
デフォルト値: |
|
最大サイズ制限に達したときに入力テキストを分割する位置を指定します。これにより、チャンクに対して適切な境界を定義することで、関連するデータが一緒になるように維持できます。 有効値:
デフォルト値: |
|
チャンクに含める必要がある先行するテキストの量(正の整数リテラルまたはゼロ)を指定します(存在する場合)。これは、先行するチャンク・テキストの一部を含めて、関連するテキスト(文など)を論理的に分割するのに役立ちます。 重なりの量は、チャンクの最大サイズの測定方法(文字、単語または語彙トークン)によって異なります。重なりは、指定された 有効な値: デフォルト値: |
|
入力データの言語を指定します。 この句は、別の言語では異なる解釈になる可能性がある特定の文字(句読点や略語など)がテキストに含まれている場合に特に重要です。 有効値:
空白を含む言語名には、二重引用符(
1ワードの言語名の場合、引用符は必要ありません。たとえば:
デフォルト値: セッションの |
|
ドキュメントがテキストに変換されるときに発生する可能性のある問題(連続する複数の空白やスマート・クォートなど)を自動的に前処理または後処理します。正規化モードを使用して高品質のチャンクを抽出することをお薦めします。 有効値:
デフォルト値: |
|
|
例
VECTOR_CHUNKS
は、次の例で示すように、文字リテラルまたはバインド変数で指定された単一の文字値に対してコールできます。
COLUMN chunk_offset HEADING Offset FORMAT 999 COLUMN chunk_length HEADING Len FORMAT 999 COLUMN chunk_text HEADING Text FORMAT a60 VARIABLE txt VARCHAR2(4000) EXECUTE :txt := 'An example text value to split with VECTOR_CHUNKS, having over 10 words because the minimum MAX value is 10'; SELECT * FROM VECTOR_CHUNKS(:txt BY WORDS MAX 10); SELECT * FROM VECTOR_CHUNKS('Another example text value to split with VECTOR_CHUNKS, having over 10 words because the minimum MAX value is 10' BY WORDS MAX 10);
表の列の値をチャンク化するには、次の例で示すように、左相関を使用してVECTOR_CHUNKS
コールとその表を結合する必要があります。
CREATE TABLE documentation_tab ( id NUMBER, text VARCHAR2(2000)); INSERT INTO documentation_tab VALUES(1, 'sample'); COMMIT; SET LINESIZE 100; SET PAGESIZE 20; COLUMN pos FORMAT 999; COLUMN siz FORMAT 999; COLUMN txt FORMAT a60; PROMPT SQL VECTOR_CHUNKS SELECT D.id id, C.chunk_offset pos, C.chunk_length siz, C.chunk_text txt FROM documentation_tab D, VECTOR_CHUNKS(D.text BY words MAX 200 OVERLAP 10 SPLIT BY recursively LANGUAGE american NORMALIZE all) C;
関連項目:
-
前述の表で示した各チャンク化パラメータのすべての例は、AI Vector Searchユーザーズ・ガイドのチャンク化手法および例の詳細を参照してください。
-
このファンクションを使用してエンドツーエンドの例のシナリオを実行するには、AI Vector Searchユーザーズ・ガイドのカスタム・チャンク化仕様によるテキストのチャンクへの変換を参照してください。