この図は、最新の洗練されたQA(Question Answering)またはRAG(Retrieval-Augmented Generation)システムのアーキテクチャの青写真を明確に表しています。ユーザーが質問をするところから始まり、最終的な答えの生成まで、その間の重要なステップとテクノロジーの選択を詳細に示しています。全プロセスを以下のコア・ステージに分解することができる:
1、クエリー構築(クエリー構築)
これはユーザーとシステムとのインタラクションの最初のステップであり、システムがユーザーの意図を理解するための出発点である。画像は、異なるタイプのデータベースに対してクエリがどのように構築されるかを示しています:
a. リレーショナルDB:リレーショナル・データベースの場合、クエリーを構築する一般的な方法はText-to-SQLであり、これはシステムがユーザーの自然言語による質問を構造化されたSQLクエリー文に変換する必要があることを意味する。これには通常、自然言語理解(NLU)技術と、自然言語のセマンティクスをSQL構文とデータベーススキーマにマッピングする能力が必要です。PGVectorはベクトル・データベース(PostgreSQLのベクトル拡張)と組み合わせて使用することで、SQLクエリを強化し、例えば意味的類似性検索を実行することができます。
b. グラフDB: グラフDBの場合、対応するクエリ構築方法は、Text-to-Cypherである。Text-to-Cypherは、グラフデータベースNeo4j用のクエリ言語で、SQLに似ているが、グラフ構造クエリに適している。Text-to-Cypherは、自然言語による質問をCypherのクエリ文に変換する必要があり、グラフデータベースの構造とグラフクエリ言語の特性を理解する必要がある。
c. ベクトルデータベース (ベクトルデータベース):ベクトルデータベースについては、Self-query retrieverが例示されている。これは、システムがユーザーの質問に基づいてメタデータフィルターを自動的に生成し、ベクトルデータベースに直接問い合わせることができることを意味する。ベクトルデータベースは通常、テキストやデータのベクトル表現を格納し、類似性検索によって検索される。Self-query retrieverの鍵は、自然言語の質問からフィルタリングのための構造化情報を抽出し、ベクトル類似性検索と組み合わせることで、より正確な検索を実現する能力である。
クエリ構築フェーズの要約:このフェーズの中心的な目的は、ユーザーが自然言語で投げかけた質問を、システムが理解し実行できるクエリ文に変換することである。マルチモーダルデータとクエリモダリティに対するシステムのサポートが実証されている。
2、クエリー翻訳(クエリー翻訳)
クエリ構築後、ユーザーの意図をより効率的に検索し理解するために、元のユーザークエリをさらに処理し最適化する必要がある場合がある。2つの主なクエリ変換戦略を図に示す:
a. クエリの分解:複雑な質問は、より小さく管理しやすいサブ質問(サブ/ステップバック質問)に分解することができる。 これは、マルチクエリ、ステップバック、RAG-Fusionなどのテクニックを使って行うことができる。 - マルチクエリとは、異なる角度から質問を探求するために、いくつかの異なるクエリを生成することを意味します。 - ステップバックとは、より基本的な、前提条件となる質問にまず答え、それから最終的な複雑な質問を徐々に解いていくことを意味します。 - RAG-Fusionとは、複数の検索と融合を通してユーザーの意図をより完全に理解するために、検索を強化した生成とクエリフュージョン技術を組み合わせることを指す。 - 核となる考え方は、複雑な質問の処理の難易度を下げるために、入力質問を分解または再フレーズすることである。
b. 擬似文書:HyDE(Hypothetical Document Embeddings)は、擬似文書を生成するための代表的な手法である。この擬似文書は本物である必要はないが、質問に対する答えのモデルの初期理解と予測を含んでいる必要がある。HyDEは、モデルの事前知識を導入することで、ベクトル検索者が関連する実際の文書をよりよく見つけられるようにすることを目的としている。
クエリ変換フェーズの要約:このフェーズでは、ユーザーのクエリを最適化し、その後の検索プロセスにより適したものにすることを目的とする。クエリの分解によって複雑さを処理し、疑似文書の生成によってベクトル検索の精度を向上させることができる。これは、ユーザーの意図を理解し処理するシステムの柔軟性とインテリジェンスを反映したものである。
3.ルーティング
システムが翻訳されたクエリを受信すると、クエリを検索するためにどのデータソースにルーティングするかを決定する必要がある。図に2つのルーティング戦略を示す:
a.論理ルーティング:LLMに質問に基づいてDBを選択させる。これは、大規模言語モデル(LLM)を使用して、質問の内容と特徴に基づいて、どのデータベースがクエリされるべきかを決定することを意味する。例えば、質問が知識グラフに関連するエンティティやリレーションシップを含む場合、グラフデータベースにルーティングされ、質問が構造化データクエリを含む場合、リレーショナルデータベースにルーティングされ、質問がよりセマンティック検索に向いている場合、ベクトルデータベースにルーティングされる。
b. 意味ルーティング:質問を埋め込み、類似性に基づいてプロンプトを選択する。 このアプローチでは、まず質問を埋め込み、次に質問ベクトルの類似性に基づいて別のプロンプトを選択する(プロンプト#1、プロンプト#2)。プロンプト#2)。 つまり、異なるタイプの質問や意図に対して、システムは異なるプロンプト戦略をプリセットし、意味的類似性によって自動的に最も適切なプロンプトを選択し、その後の検索や生成プロセスをガイドする。
ルーティング・フェーズを要約する:ルーティング・フェーズは、システムのインテリジェントな意思決定における重要なステップであり、問題の内容や特性に応じて、最も適切なデータソースと処理戦略を選択する。
4、インデキシング(索引付け)
効率的な検索のためには、データにあらかじめインデックスを付けておく必要がある。画像の青い部分は、インデックス最適化のための様々な戦略を示している:
a. チャンク最適化:長い文書を扱う場合、文書をチャンクに分割し、そのチャンクにインデックスを付ける必要があることが多い。
- 文字、セクション、セマンティック・デリミターによる分割:文字数、セクション、セマンティック・デリミターなど、さまざまなチャンキング戦略がある。
- セマンティック・スプリッター:セマンティック・チャンキングの重要性を強調し、埋め込みに使用するチャンクサイズを最適化し、各チャンクをより意味的に完全で独立したものにする。
b. 複数表現によるインデックス作成:Summary -> {} -> Relational DB / Vectorstore これは、インデックス作成のために文書の複数の表現を作成することが可能であることを意味する。これは、インデックス作成のために文書の複数の表現を作成できることを意味する。例えば、文書の元のテキストブロックに加えて、文書の要約を生成し、その要約をインデックス化することができる。これにより、異なるクエリ要件に対応するために、異なる表現を使用することができる。この図は、要約をリレーショナルデータベースまたはベクトルデータベースに格納できることを意味している。
- 親文書、密X: 文書をその親文書に関する情報とともにインデックス化すること、また密なベクトル表現(Dense X)を使って文書を表現することを指す場合がある。
- ドキュメントをコンパクトに変換 回収 文書を要約のようなコンパクトな検索単位に変換し、検索効率を向上させる。
c. 特殊エンベッディング:微調整、CoLBERT、[0, 1, ...] -> Vectorstore。 これは、CoLBERTのような、特別に訓練または微調整された埋め込みモデルを、ドキュメントのベクトル表現を生成し、これらのベクトルをベクトルデータベースに格納するために使用できることを意味する。
- ドメイン固有および/または高度な埋め込みモデル:ドメイン固有またはより高度な埋め込みモデルを使用して、より正確な意味表現を取得し、検索を強化する可能性を強調する。
d. 階層的索引付け要約: Splits -> cluser -> cluser -> ... -> RAPTOR -> Graph DB。 -> RAPTOR(階層的文書要約・索引作成法を指す場合もある)は、クラスタの多層構造によって文書要約の階層構造を構築する。
- 様々な抽象化レベルでの文書要約のツリー:RAPTORは複数の抽象化レベルでの文書要約のツリーを構築することを重視。
- グラフデータベース(Graph DB)に格納されたグラフは、この階層的なインデックス構造を保存・管理するために使用され、マルチレベルの検索とナビゲーションを容易にする。
インデックス作成段階の要約:インデックス作成段階は、高速かつ正確な検索のために、データを効率的かつ効果的に整理し、表現することに関係する。チャンキングの最適化、複数の表現、専用の埋め込みから階層的なインデックスサマリーまで、インデックス作成戦略の多様性と高度化を反映している。
5.検索
ルーティングされたデータソースとインデックスに基づいて、システムは実際の検索処理を実行する。画像の緑色の部分は、検索の2つの主要な側面を示している:
a. ランキング:質問 -> {} -> 関連性 -> 検索されたドキュメントは、クエリとの関連性に基づいてランク付けされる必要がある。
- Re-Rank、RankGPT、RAG-Fusion:Re-Rank(最初の検索結果の上に、より細かいランキングを行う再ランキング)、RankGPT(GPTのような大きなモデルを使ったランキング)、RAG-Fusion(ランキングと検索拡張生成を融合させたもの)など、いくつかの高度なランキング技術が挙げられている。
- 関連性に基づく文書のランク付け、フィルタリング、圧縮:ランク付けの目的には、直接ランク付けして最も関連性の高い文書を返す場合と、関連性に基づいて文書をフィルタリングまたは圧縮して後続の処理に利用する場合がある。 - CRAG(Context-Relevant Answer Generation)はソートセッションにも登場し、ソートプロセスも文脈情報を考慮する必要がある。
b. 能動的検索: {} -> CRAG -> 答え。 検索された文書が適切でない場合、再検索および/または新しいデータソース(例えばウェブ)からの検索を行う。能動的検索とは、最初の検索結果が満足のいくものでなかった場合、システムが能動的に再検索(Re-retrieve)したり、新しいデータソース(例えばウェブ)から検索したりすることを意味する。
- CRAGは能動検索にも登場し、文脈的関連性と反復検索の重要性をさらに強調している。
- Self-RAG、RRR(Retrieval-Rewrite-Read)などのテクニックは、反復的な検索と生成プロセスを通じて、検索結果と回答の品質を継続的に最適化することを目的とした能動的検索にも関連する可能性がある。
検索フェーズの要約:検索フェーズの中心的な目的は、ユーザーのクエリに対して最も関連性の高い文書や情報を見つけることである。ソートからアクティブ検索まで、システムは検索戦略の洗練とインテリジェンスを反映し、高品質の検索結果を提供するよう努める。
6.世代
最終的に、システムは検索された文書に基づいて回答を生成し、ユーザーに提示する必要がある。画像の紫色の部分は、生成段階のコア・テクノロジーを示している:
a. 能動検索(再出現):{}→回答→自己RAG、RRR→質問の書き直し、および/または文書の再検索。能動検索は生成段階でも重要な役割を果たす。
- Self-RAG (Self-Retrieval Augmented Generation)は、自己検索拡張型の生成方法で、生成モデルが答えを生成する過程で必要に応じて積極的に検索を実行し、検索の結果に基づいて生成戦略を調整することができます。 - RRR(Retrieval-Rewrite-Read)は、検索、質問の書き換え、ドキュメントの読み取りなどのステップを含む反復生成プロセスで、複数の反復を通じて回答品質を最適化します。
- 質問の再作成および/または文書の再検索を通知するために生成品質を使用する: 生成された回答の品質は、質問の再作成および文書の再検索をガイドするために使用することができ、閉ループの最適化プロセスを形成することが強調されています。
生成段階のまとめ:生成段階は、回答の最終的な出力における重要なステップである。能動的検索と自己検索強化型生成(Self-RAG、RRR)技術は、生成プロセスをよりインテリジェントで制御可能にし、より正確でユーザーフレンドリーな回答を生成することができる。
全体概要:この図は、最新のRAGシステムの複雑さと細かさを明確に示している。クエリの理解、データルーティング、インデックスの最適化、効率的な検索から最終的な回答生成までの完全なプロセスをカバーし、各ステップで採用できる多くの高度なテクニックと戦略を示している。
主なハイライトと傾向
- マルチデータベースのサポート:システムはリレーショナルデータベース、グラフデータベース、ベクトルデータベースをサポートしており、異なるタイプのデータやクエリ要件を扱うことができます。
- クエリの最適化と翻訳:クエリの分解や擬似文書生成などの技術により、複雑で意味的なクエリを処理するシステムの能力を強化する。
- インテリジェントルーティング:データソースのインテリジェントな選択とタスクスケジューリングのためのLLMと意味的類似性を用いたルーティング決定。
- インデクシング最適化の多様性:チャンキング、複数表現、専用埋め込みから階層的インデックスサマリーまで、インデクシング戦略と深い最適化の多様性を反映。
- 検索の洗練と積極性:ソートアルゴリズムから積極的な検索まで、システムは高品質で関連性の高い検索結果を提供するよう努めています。
- 生成と検索の深い統合:Self-RAG、RRR、その他の技術は、生成段階がもはや単純な情報の継ぎ接ぎではなく、検索プロセスと深く統合され、反復最適化の閉じたループを形成することを示している。
この図は、現在のRAGシステムの開発における重要な傾向を表している。つまり、システムのインテリジェンス、モジュール性、スケーラビリティにより焦点を当てている。将来のRAGシステムは、単純な「検索+生成」だけでなく、よりインテリジェントな方向へと発展し、ユーザーの意図をよりよく理解し、マルチモーダルデータをより効果的に利用し、より正確に検索・生成し、最終的にはより良い、よりパーソナライズされたユーザー体験を提供できるようになるでしょう。この図は、次世代のRAGシステムを理解し、構築するための非常に貴重な参照フレームワークを提供します。
参考文献
[1] GitHub: https://github.com/bRAGAI/bRAG-langchain/
[2] https://bragai.dev/