ベクトル検索を成功させる

post image

2022 年以前は、目の前に作品自体がなくても、お気に入りの本の特定の一節や、見たばかりの映画の引用をすぐに思い出したい場合は、おそらく検索エンジンを利用するでしょう。 適切に定式化された検索入力でプロンプトを表示し、返された結果を解析し、答えが含まれていると思われる SparkNotes または IMDB リンクにアクセスすると、数分以内にそのページで探しているテキストが見つかります。 ここで、ChatGPT を開き、「最も有名なターミネーターの名言は何ですか?」と入力するだけです。 または、「二都物語の冒頭の一節を書き上げて」、数秒以内に逐語的に答えてもらいます。

大規模言語モデル (LLM) の最も単純な用途の 1 つは、知識のデータベースとして使用することです。 LLM は、豊富な情報の膨大なデータセットでトレーニングされており、ChatGPT のようなインターフェイスを使用すると、そのデータセットを簡単に取得できるようになります。 たとえば、映画や書籍のコンテンツを返すように ChatGPT に指示する場合、トレーニング中にさらされた情報を呼び出すモデルの機能を利用しているだけです。 しかし、もしそれがターミネーターの脚本で訓練されていなかったら、あるいはその重みがディケンズの作品を重視していなかったらどうなるでしょうか? 基本的な情報検索などの最も単純なユースケースに対しても、最も正確で関連性の高い結果を提供するために、LLM には、広範囲の情報に正確にアクセスできる、高度なインデックス作成および検索メカニズムが必要です。

LLM コンテンツの生成とトレーニングについて理解する LLM コンテンツは、次のトークン予測として知られるプロセスを通じて生成されます。これにより、応答が状況に応じて適切で、多様性があり、人間のような理解をある程度反映していることが保証されます。 次のトークンの予測がどのように機能するかを段階的に説明します。

入力処理: プロンプトまたは質問を入力すると、その入力はトークン、つまり単語または単語の断片に変換されます。 コンテキストの理解: モデルは、与えられたトークンを調べ、そのトレーニングに基づいて、現在のトピックから使用している可能性のある口調まで、すべてを含むコンテキストを理解しようとします。 次のトークンの予測: モデルは、理解されたコンテキストを使用して、最も可能性の高い次のトークンが何かを予測します。 直前の単語に基づいて推測するだけではありません。 それまでの会話の文脈全体を考慮します。 トークンの選択: 次に考えられるトークンの範囲を予測したら、1 つを選択します。 この選択は確率、つまりモデルがトレーニングされたデータに基づいて次に来る可能性が最も高いトークンに基づいています。 ただし、ここにもランダム性があり、より多様で自然な応答を生成するのに役立つことに注意してください。 出力生成: 選択されたトークンは人間が読めるテキストに変換されます。 応答が完了していない場合 (多くの場合、トークンが 1 つだけでは完了しません)、プロセスが繰り返されます。 新しいトークンがシーケンスに追加され、モデルはこの更新されたコンテキストに基づいて次のトークンを予測します。 反復改良: 次のトークンを予測してシーケンスに追加するこのプロセスは、モデルが停止点に到達するまで繰り返されます。 これは、応答が特定の長さに達したとき、モデルが文または一節の終わりを示すトークンを予測したとき、またはプロンプトに埋め込まれた指示を満たしたときなどが考えられます。 LLM トレーニングにおける圧縮の制限 LLM がトークンを予測するとき、その重みに埋め込まれた圧縮された知識を効果的に取得して利用し、状況に応じて適切な出力を生成します。 このように、LLM トレーニングはデータベース圧縮を反映します。 データベースが頻繁にアクセスされるデータをすぐに呼び出すように最適化されているのと同じように、LLM はその重みから情報 (特定の補間メモリ) を取得するように設計されています。 この機能により、適切にインデックス付けされた情報をデータベースにクエリするのと同じように、トレーニング中に遭遇した馴染みのある内容に関するクエリに対して正確な応答を生成することができます。 ただし、モデルがあまり馴染みのないコンテンツや不明瞭なコンテンツに遭遇すると、制限が発生します。 たとえば、LLM に聖書の特定の一節を要求すると、LLM はそれらを一語一語引用しますが、トレーニング中に重複して「目撃」していない概念については、その概念に関連付けられた重みが多すぎるため、一語一語引用することはできません。 取るに足らない。 その意味でも、LLM はデータベースに似ています。 データベースがデータベース内に明示的に保存されているデータのみを返すのと同様に、LLM はトレーニング中にあまり見たことのないトピックに関するコンテンツを生成するのに苦労する可能性があります。

もちろん、LLM は、単に検索を超えて純粋に物事を「理解」できるようにするワールド モデルを内部に持っているため、この類似性の範囲を超えています。 ただし、この過度の単純化は、LLM がコンテンツを生成するようにトレーニングされる方法における重要な制限のいくつかを理解するのに役立ちます。

LLM トレーニングのさらなる制限 さらに、次のトークン予測システムには、テキストを生成する基本的なアプローチに起因する他の固有の制限があります。

コンテキスト ウィンドウ サイズ: プライマリ const の 1 つ

Raints はモデルのコンテキスト ウィンドウ サイズ、つまりモデルが予測を行う際に考慮できるテキスト (トークン単位) の最大量です。 GPT の以前のバージョンを含む多くのモデルでは、このウィンドウは長い会話やドキュメントにわたってコンテキストを維持するには十分な大きさではないため、直前のトークンを超えてコンテキストを維持する必要がある長いテキストや複雑なディスカッションでは一貫性が失われる可能性があります。 一般化と特異性: これらのモデルは膨大なデータセットでトレーニングされますが、このトレーニングから一般化する能力により、一般的なコンテンツや漠然と関連性のあるコンテンツが生成される場合があります。 トレーニング データ以外の詳細な理解や最新の知識を必要とする、非常に具体的または微妙な応答を生成する際に的を外してしまう可能性があります。 外部知識へのアクセスの欠如: 次のトークン予測モデルは、トレーニング データセット内に含まれる情報に限定されます。 トレーニング後に新しい情報にアクセスしたり取り入れたりすることができないため、すぐに情報が古くなったり、最近の出来事、発見、トレンドのトピックなどの現在のコンテキストが欠如したりする可能性があります。 反復性と予測可能性: 次のトークン予測のアルゴリズムの性質により、テキスト生成が反復的または予測可能になる場合があります。 モデルは多くの場合、特定のコンテキストに従う可能性が統計的に高いトークンを優先するため、ループに陥ったり、一般的なフレーズを優先したりして、出力の変動性を低減する可能性があります。 検索拡張生成 (RAG) の説明 前述したように、LLM はトレーニング中にデータのさまざまな側面に割り当てた重みに基づいて応答を生成します。 これらの重みは、入力データのさまざまな要素がモデルによってどのように認識されるか、または重要であるかを反映します。 ユーザーのプロンプトに、トレーニング データではあまり表されていない要素が含まれている場合、モデルは正確な、または適切な応答を生成できない可能性があります。

会話が LLM のコンテキスト ウィンドウを超える場合、またはプロンプトが LLM 独自のトレーニング データセットの重要な重みの制限を超える場合 (ユーザーが探している答えを正確に思い出せないことを意味します)、モデルは通常、外部のベクトル検索データベースに依存します。 これにより、ユーザーからのプロンプトに追加できる関連するコンテキストや新しいデータを検索できるようになります。 このプロセスは、検索拡張生成 (RAG) として知られています。

「成功へのベクトル検索」 RAG プロセスは、データをベクトルとして保存および管理する高度なタイプのデータベースであるベクトル検索データベースを通じて可能になります。 これらのベクトルは高次元空間内のデータを表し、各次元がデータの意味の一部の側面を捉え、複雑な関係と属性の表現を可能にします。 テキストと言語のコンテキストでは、ベクトル検索データベースは埋め込みなどの技術を使用してテキストを数値ベクトルに変換します。 この変換により、システムは、この多次元空間内の対応するベクトル間の距離を計算することにより、異なるテキスト間の意味上の類似性を測定できるようになります。

RAG 中に、クエリ (つまり、LLM へのユーザー入力) と保存されたデータ (記事、文書、文章など) の両方が、テキスト埋め込みを使用してベクトルに変換されます。 これらの埋め込みは、テキスト データを数値ベクトルに変換し、同様の意味がベクトル空間内の近接点にマッピングされます。 次に、データベースはクエリ ベクトルと保存されたデータのベクトルの間の距離を計算し、テキストの意味がどの程度密接に関連しているかを判断します。 データベースは、クエリ ベクトルに最も近いベクトル、つまり入力に意味的に最も似ているベクトルを持つデータ ポイント (テキスト コンテンツ) を取得します。 これらのデータ ポイントは、コンテキストと意味の観点から「最近傍」とみなされます。

これらの最近傍は、ベース LLM が独自のトレーニング データ内でアクセスできなかった、コンテキストに関連した追加情報を提供します。これにより、LLM の出力の精度、関連性、豊富さ、多様性が大幅に向上します。 とりわけ、Sam Altman は、モデルの微調整のみではなく RAG にエージェントの開発を依存する「成功へのベクトル検索」アプローチを提唱しています。

微調整の代替としての RAG LLM の微調整には、特定のデータセットでの追加トレーニングに基づいてモデルの重みを調整して、特定のタスクのパフォーマンスを向上させたり、特定の領域での理解を向上させたりすることが含まれます。 このプロセスはイノベーションのペースよりも遅い、つまり、微調整されたモデルは更新されるとほぼ同時に陳腐化するだけでなく、新しいデータの問題にも対処できません。

対照的に、RAG を使用すると、モデルはリアルタイムで外部データベースにアクセスし、手元のクエリに関連する最新の情報を取得できます。 基礎となるモデルが最近更新または微調整されていない場合でも、最新のデータを含む応答を生成できます。 モデルは新しいデータに適応できるため、より長く関連性を保ちます。