ドキュメントをチャンクに分割してチャンクをエンリッチしたら、次の手順では、ベクトル検索の実行を計画しているチャンクとメタデータ フィールドの埋め込みを生成します。 埋め込みは、テキストなどのオブジェクトの数学的表現です。 ニューラル ネットワークのトレーニング中は、オブジェクトの表現が多数作成され、各表現にはネットワーク内の他のオブジェクトへの接続が含まれます。 埋め込みは、オブジェクトのセマンティックな意味をキャプチャするため、選択されているオブジェクトの表現の 1 つです。
埋め込みはオブジェクトの数学的表現であり、その表現には他のオブジェクトの表現への接続が含まれているため、オブジェクトを数学的に比較できます。 埋め込みによってセマンティックな意味と相互関係がどのようにキャプチャされるかを示す有名な例を次に示します。
embedding("王") - embedding("男性") + embedding("女性") ≈ embedding("女王")
埋め込みは、類似性と距離の概念を使用して相互に比較されます。 次の図は、埋め込みを比較する方法を示しています。
図 1. 埋め込みの比較
検索拡張生成 (RAG) ソリューションでは、多くの場合、チャンクと同じ埋め込みモデルを使用してユーザー クエリを埋め込み、データベースから関連するベクトルを検索して、セマンティック的に最も関連性の高いチャンクを返します。 その後、関連するチャンクの元のテキストが、基礎データとして大規模言語モデルに渡されます。
Note
ベクトルのこの特徴から、数学的近接性をセマンティック関連性を使用してより緊密に追跡できるように、チャンクをクリーニングすることの重要性が強調されます。
この記事はシリーズの一部です。 概要を参照してください。
埋め込みモデルの重要性
選択した埋め込みモデルは、ベクトル検索結果の関連性に大きな影響を与える可能性があります。 埋め込みモデルの選択時に考慮する必要がある主な要因の 1 つは、モデルのボキャブラリです。 すべての埋め込みモデルは、特定のボキャブラリでトレーニングされます。 たとえば、BERT のボキャブラリ サイズは約 30,000 語です。
埋め込みモデルのボキャブラリは、埋め込みモデルがボキャブラリにない単語をどのように扱うかという点で重要です。 単語がボキャブラリに含まれていない場合でも、モデルはその単語に対するベクトルを計算する必要があります。 そのために、多くのモデルでは単語をサブワードに分割し、それを異なるトークンとして扱うか、サブワードのベクトルを集約して単一の埋め込みを作成します。
図 2. 不明な単語のサブワードへの分割
埋め込みモデルのボキャブラリに "histamine" という単語が含まれていない架空の例を見ていきましょう。 "Histamine (ヒスタミン)" には、体から放出される化学物質 (多くのアレルギー症状の原因) というセマンティックな意味を持っています。 埋め込みモデルには "histamine" が含まれていないため、そのボキャブラリに含まれる "his"、"ta"、"mine" というサブワードに分解される可能性があります。 これらのサブワードのセマンティックな意味は、"histamine" の意味に近い場所にありません。 サブワードの個々のベクトル値または集約されたベクトル値は、"histamine" がモデルのボキャブラリに含まれていた場合よりも不十分なベクトル一致を生成します。
埋め込みモデルの選択
ユース ケースに適した埋め込みモデルの決定は、人間が行う作業です。 埋め込みモデルのボキャブラリとデータの単語との重複は、埋め込みモデルを選択する際に考慮すべき重要な要素です。
図 3: 埋め込みモデルの選択フロー
最初に判断すべき事柄は、コンテンツがドメイン固有かどうかです。 たとえば、ドキュメントはユース ケース、組織、または業界に固有のものですか? ドメインの限定性を判断する方法として、コンテンツ内のエンティティとキーワードが一般提供されているかどうか、またはインターネットで見つけ出せるかどうかを確認することをお勧めします。 そうである場合は、一般的な埋め込みモデルがそうする可能性があります。
一般的なコンテンツまたは非ドメイン固有のコンテンツ
一般的な埋め込みモデルを選択する場合は、Hugging Face ランキングから開始することをお勧めします。 このサイトでは、埋め込みモデルの最新のランク付けを確認できます。 上位モデルから始めて、モデルがデータをどのように処理するかを評価します。
ドメイン固有のコンテンツ
ドメイン固有のコンテンツの場合、最初の手順は、使用できるドメイン固有のモデルがあるかどうかを判断することです。 たとえば、データがバイオメディカル ドメイン内にあるとします。 大規模なバイオメディカル資料で事前トレーニングされた言語モデルである BioGPT モデルの使用を検討する必要があります。 このモデルは、バイオメディカルのテキスト マイニングと生成を目的としています。 ドメイン モデルを使用できる場合は、最初に、これらのモデルがデータをどのように処理するかを評価します。
使用可能なドメイン固有のモデルがない場合、またはドメイン固有のモデルが適切に動作しない場合、次のオプションは、ドメイン固有のボキャブラリを使用して一般的な埋め込みモデルを微調整することになります。
重要
選択したモデルについて、ライセンスがニーズに適しており、必要な言語サポートがモデルに用意されていることを確認する必要があります。
埋め込みモデルを評価する
埋め込みモデルを評価する 2 つの効果的な方法は、埋め込みを視覚化すること、そして質問ベクトルとチャンク ベクトル間の距離を評価することです。
埋め込みの視覚化
t-SNE などのライブラリを使用して、チャンクと質問のベクトルを X-Y グラフにプロットします。 次に、チャンク同士がどれだけ離れているか、また質問がどれだけ離れているかを判断します。 図は、チャンク ベクトルがプロットされている状態を示しています。 互いに近い 2 つの矢印は 2 つのチャンク ベクトルを表し、残りの矢印は質問ベクトルを表します。 この視覚化を使用すれば、質問がチャンクからどの程度離れているかを理解できます。
図 4 埋め込みのプロット
埋め込みの距離の計算
埋め込みモデルがどの程度適切に質問やチャンクを処理しているかをプログラムで評価する方法は、質問ベクトルとチャンク ベクトル間の距離を計算することです。 ユークリッド距離またはマンハッタン距離を使用できます。
埋め込みの経済性
埋め込みモデルを選択すると、パフォーマンスとコストの間にトレードオフが生じます。 通常、埋め込みモデルが大きいほど、データセットのベンチマークのパフォーマンスが向上します。 ただし、パフォーマンスの向上にはコストがかかります。 ベクトルが大きいほど、ベクトル データベース内に格納する領域を増やす必要があり、埋め込みの比較時に必要な計算リソースと時間が増えます。 通常、埋め込みモデルが小さいほど、同じベンチマークでパフォーマンスが低下します。 ベクトル データベースに必要な領域が少なくなり、埋め込みの比較時に必要なコンピューティングと時間が少なくなります。
システムを設計するときは、ストレージ、コンピューティング、パフォーマンス要件の両方の面で埋め込みのコストを考慮する必要があります。 実験を通じてモデルのパフォーマンスを検証することは非常に重要です。 公開されているベンチマークは、主に学術的なデータセットです。 ほとんどの結果は、ビジネス データやユース ケースに直接転用できません。 要件に応じて、コストよりもパフォーマンスを優先したり、低コストと引き換えに適切なパフォーマンスのトレードオフを受け入れたりすることができます。