データ変換のステージの理解

入力データは、ベクトルに変換する前に異なるステージを通過する場合があります。

入力データのサイズ(短い文字列から非常に大きなドキュメントまで)に応じて、データはオプションの変換ステージのパイプラインをプレーン・テキストからチャンクトークンベクトルへと通過し、ベクトル索引がエンドポイントとなります。

準備: プレーン・テキストとチャンク

このステージでは、非構造化データを準備して、ベクトル埋込みモデルで処理できる形式であることを確認します。

大きい非構造化テキスト・データ(PDFやWordドキュメントなど)を準備するには、まずドキュメントをプレーン・テキストに変換してから、結果のドキュメントをチャンカに渡します。チャンカは、チャンク化と呼ばれる分割プロセスを介して、プレーン・テキスト・ドキュメントを複数の適切なサイズのセグメントに分割します。単一のドキュメントを多数のチャンクに分割し、それぞれをベクトルに変換できます。チャンクは、一連の単語(特定の単語や単語の断片を捕らえます)、文(特定のコンテキストを捕らえます)または段落(より広いテーマを捕らえます)です。

後で、独自のチャンク化指定および戦略を定義するのに役立ついくつかのチャンク化パラメータおよび手法について説明します。これにより、ユース・ケースに従って関連性があって意味のあるチャンクを生成できます。

小さいドキュメント、フレーズ、テキスト文字列または短いサマリーでは、データをチャンクに分割する必要はありません。埋込みモデルでは、そのようなコンテンツをベクトル表現に直接処理できます。この詳細は次の項に記載されています。

埋込み: トークンとベクトル

各テキスト文字列またはチャンクに対するベクトル埋込みを生成するために、テキストまたは抽出されたチャンクを宣言されたベクトル埋込みモデルに入力として渡します。埋込みは、データのセマンティックな意味またはコンテキストを捕らえたベクトル表現です。ベクトル埋込みモデルでは、データの各要素、つまり各単語、文または段落に数値を割り当てることによって、これらの埋込みが作成されます。

チャンクは、まず埋込みモデルに関連付けられたトークナイザに渡されます。トークナイザは、チャンクをさらに個々の単語またはトークンと呼ばれる単語の断片に分割します。埋込みモデルによって、各トークンがベクトル表現に埋め込まれます。

通常、埋込みモデルによって使用されるトークナイザには、処理できる入力テキスト(トークンの数)のサイズに制限があるため、埋込みの生成時にテキストが失われないように、事前にデータを適切なサイズのセグメントにチャンク化することが重要です。トークンの数がモデルによって課される最大入力制限よりも大きい場合、一部のトークンは定義された入力長に切り捨てられます。テキストがこの最大入力制限を満たす場合、チャンク化は不要です。

チャンカでは、モデルの最大入力制限に近いテキスト・サイズを選択する必要があります。トークンの実際の数は、埋込みモデルの指定されたトークナイザによって異なり、通常、トークナイザは単語、数字、句読点およびトークンの断片の語彙リストを使用します。語彙には、統計トレーニング処理中に収集される一連のトークンが含まれています。各トークナイザは、テキストをトークンに処理するために異なる語彙形式を使用します。

たとえば、BERT多言語モデルではWord-Pieceエンコーディングが使用され、GPTモデルではByte-Pairエンコーディングが使用されます。

BERTモデルでは、次の文(4つの単語を含む)をトークン化できます:

Embedding usecase for chunking

次の8つのトークンとなります。また、単語の最初の断片ではないことを示すために## (数字記号)が含められています。

Em ##bedd ##ing use ##case for chunk ##ing

語彙ファイルは、モデルの配布の一部として含まれています。チャンカに事前に語彙ファイル(モデルのトークナイザで認識される)を提供して、チャンク化時に入力データのトークン数を正しく推定できるようにすることができます。

移入および問合せ: ベクトル索引

最後に、抽出されたベクトルをベクトル索引に格納して、それらのベクトルに対する類似検索とリレーショナル検索を組み合せて実装します。

ベクトル索引のみを作成するかわりに、ベクトル索引とOracle Text検索索引の両方を組み合せたハイブリッド・ベクトル索引を作成することもできます。これにより、同じデータに対してベクトルベースの類似検索とテキストベースのキーワード検索の両方を同時に実行することによって、より関連性の高い検索結果を取得するためのハイブリッド検索を実装できます。