RAG(Retrieval-Augmented Generation)の「Retrievalステップの処理フロー」は、ユーザーのクエリに対して関連する外部知識を検索し、生成の材料として提供する重要なプロセスです。このステップは、全体のRAGシステムにおける前段階であり、以下のようなフローで構成されています。
Retrievalステップの処理フロー
1. クエリのエンコーディング(Query Encoding)
ユーザーの入力(質問やプロンプトなどのテキスト)を、ニューラルネットワーク(通常はTransformerベースのエンコーダ)によって密ベクトル(dense vector)に変換します。
-
代表的なエンコーダには、DPR(Dense Passage Retriever)やSentence-BERTなどが用いられます。
-
このベクトルは、文の意味を高次元空間で表現するもので、検索対象との類似度計算に用いられます。
2. ベクトルデータベースとの類似検索(Nearest Neighbor Search)
得られたクエリベクトルを用いて、あらかじめベクトル化されたドキュメント集合の中から類似度の高いものを検索します。
-
使用されるベクトルデータベースには、FAISS、Milvus、Weaviateなどがあります。
-
類似度の指標としては、主にコサイン類似度や内積(dot product)が使われます。
3. 上位ドキュメントの取得(Top-k Retrieval)
類似度スコアが高い上位 k 件の文書を取得します。
-
この k の値はあらかじめ設定されており、たとえば
k=5やk=20のように設定されます。 -
取得されるのは、文単位、パッセージ単位、または段落単位のテキストです。
4. 結果の構造化(Document Packaging)
取得したドキュメントを後続のGeneratorが処理しやすい形に整形します。
-
多くの場合、各パッセージはそのソース(URLやID)やスコアと一緒にまとめられ、入力テンプレートに埋め込まれます。
-
例:
5. 生成モジュール(Generator)への受け渡し
この整形された情報が、次のステップである生成モジュールに入力され、回答生成のための条件付き入力となります。
まとめ
Retrievalステップは、RAGの知識補完機能の要です。モデル自身が持っていない知識を、外部ベクトルデータベースから動的に取得し、生成の材料として活用する仕組みを構成しています。これにより、静的な事前学習モデルに比べて、最新かつ動的な情報に基づく柔軟な回答が可能になります。
生成日:2025/06/07