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_OFFSETおよびCHUNK_LENGTHの値で使用されるCHUNK_TEXT列のデータ型と長さ単位は、次の表に示すようにtext_documentのデータ型によって異なります:
表7-1 入力および出力のデータ型の詳細
| 入力データ型 | 出力データ型 | オフセットと長さの単位 |
|---|---|---|
|
|
|
|
|
|
|
byte |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ノート:
-
データ型の詳細は、SQLリファレンス・マニュアルのデータ型を参照してください。
-
VARCHAR2入力データ型は、MAX_STRING_SIZEパラメータがEXTENDED(32767に制限が拡大されます)に設定されていないかぎり4000バイトに制限されます。
パラメータ
すべてのチャンク化パラメータはオプションであり、デフォルトのチャンク化指定はチャンク・データに自動的に適用されます。
このAPIのチャンク化パラメータを指定する場合は、これらのパラメータをリストされている順序でのみ指定するようにしてください。
表7-2 チャンク化パラメータの表
| パラメータ | 説明および許容される値 |
|---|---|
|
|
データを分割するモードを指定します。つまり、文字、単語または語彙トークンの数をカウントして分割します。 有効な値は次のとおりです。:
デフォルト値: |
|
|
各チャンクの最大サイズの制限を指定します。この設定では、大きいテキストで最大制限に達したときに、固定された位置で入力テキストが分割されます。 有効な値は次のとおりです。:
デフォルト値: |
|
|
最大サイズ制限に達したときに入力テキストを分割する位置を指定します。これにより、チャンクに対して適切な境界を定義することで、関連するデータが一緒になるように維持できます。 有効な値は次のとおりです。:
デフォルト値: |
|
|
チャンクに含める必要がある先行するテキストの量(正の整数リテラルまたはゼロ)を指定します(存在する場合)。これは、先行するチャンク・テキストの一部を含めて、関連するテキスト(文など)を論理的に分割するのに役立ちます。 重なりの量は、チャンクの最大サイズの測定方法(文字、単語または語彙トークン)によって異なります。重なりは、指定された 有効な値: デフォルト値: |
|
|
入力データの言語を指定します。 この句は、別の言語では異なる解釈になる可能性がある特定の文字(句読点や略語など)がテキストに含まれている場合に特に重要です。 有効な値は次のとおりです。:
空白を含む言語名には、二重引用符(
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ユーザーズ・ガイド』の「カスタム・チャンク化指定を使用したテキストからチャンクへの変換」を参照してください。
親トピック: チャンク化関数およびベクトル生成関数








