RAGの性能改善について考える

LLMの1つの使い道として、RAGに注目が集まっている。LLM単独では性能に限界あるため、必要な情報を与えることで、より使い道を広げようという試み。

そんなRAGについて、簡単に概要を整理しつつ、”性能”の評価指標を整理する。

RAGの全体像

RAGは、大規模言語モデル(LLM)を用いた検索と生成を組み合わせた手法で、検索精度を高めるために前処理として文書を適切にIndexingすることが重要です。RAGの全体フローにおいて、Indexing、Retrieval、Generationの各段階での具体的な手法を紹介する。

1. Indexing

Indexingは、RAGを実行する前に文書をどのように分割し、保存するかを決定するフェーズです。この段階では、文書の分割方法やEmbeddingの最適化が行われます。

Chunk Optimization: 文書を効率的に分割するための手法で、固定サイズでの分割や意味的に関連する単位での分割など、複数の方法があります。

Multi-representation Indexing: 文書を複数の形式(要約や命題)でIndexingし、Retrieveしやすくする手法です。

Specialized Embeddings: 特定のドメインや用途に応じたEmbeddingモデルをFine-Tuneし、より適切な検索結果を得るための手法です。

Hierarchical Indexing: 文書を階層的にIndexingする手法で、クラスタリングや要約を繰り返して多層的に文書を整理します。

2. Retrieval

Retrievalは、ユーザークエリに基づいて適切な文書を検索する段階です。ここでは、クエリをどのように変換し、検索結果をどのように最適化するかが重要です。

Query Translation: クエリを複数の形式に変換して検索精度を向上させる手法です。例として、クエリの言い換えや分解が含まれます。

Routing: クエリの内容に応じて最適な検索方法を選択するルーティング手法です。クエリの種類によって異なるデータソースや検索手法が適用されます。

Query Construction: 自然言語のクエリをSQLCypherなどのクエリ言語に変換し、データベースから情報を取得する手法です。

Ranking & Refinement: 検索結果を再ランキングし、LLMを用いて結果をさらに精査する手法です。Retrieveされた文書を再評価して最適な順序に並べ替えます。

3. Generation

Generationは、検索された情報を基に最終的な回答を生成する段階です。この段階では、文書のRetrieveの要否を判断し、必要な場合にのみ検索を行う手法や、検索結果をさらに精査して適切な回答を生成する方法が取られます。

Self-RAG: 必要に応じてRetrieveを行うかどうかを最初に判断し、Retrieveされた文書とクエリの関連性を評価して精度を向上させます。

(参考)

qiita.com

RAGの評価指標

RAG(Retrieval-Augmented Generation)システムの評価指標について、公表されている内容を整理したもの。

1. Component-Wise Evaluation

RAGパイプライン内の個々のコンポーネントの性能が全体のパフォーマンスに大きく影響します。

Ragasは、これらの個別のコンポーネントを評価するための特定の指標を提供します。

2. 主要な評価指標

Faithfulness: 回答が元のコンテキストに忠実であるかを評価します。LLMが生成する回答が、参照元の情報にどれだけ正確に基づいているかを測定します。

Answer Relevance: 提供された回答が元の質問にどれだけ関連しているかを測定します。関連性が低い場合、回答が質問に対して適切でない可能性があります。

Context Precision: 検索されたコンテキストが質問に対してどれだけ正確かを評価します。

Context Utilization: 回答生成に使用されたコンテキストの適切な利用度を測定します。

Context Recall: 検索されたコンテキストが、必要な情報をどれだけ網羅しているかを測定します。

Context Entities Recall: コンテキスト内の重要なエンティティが適切に利用されているかを評価します。

Noise Sensitivity: システムがノイズ(無関係な情報)にどれだけ影響を受けやすいかを評価します。

Answer Semantic Similarity: 回答のセマンティックな類似性を評価します。元の情報と回答の意味的な一致度を測ります。

Answer Correctness: 回答が正確であるかを評価します。特定の基準に基づいて、回答が正しいかどうかを判断します。

Aspect Critique: 特定の側面に焦点を当てた評価を行います。

Domain Specific Evaluation: 特定のドメインに特化した評価指標を提供します。

Summarization Score: 要約の質を評価します。

3. その他の評価方法

Synthetic Test Data Generation: 合成データを生成してシステムを評価する方法。

Utilizing User Feedback: ユーザーフィードバックを活用してシステムを改善する方法。

4. Metrics-Driven Development

これらの指標を使用して、RAGシステムの開発と改善を行う「メトリクス駆動型開発」のアプローチが推奨されています。

(詳細は↓)

docs.ragas.io

RAGの改善

RAG(Retrieval-Augmented Generation)の評価と改善箇所特定に関する考え方を整理した記事。内容は、RAGの回答品質を向上させるために必要な指標、評価方法、および改善ポイントについて内容を整理した記事。

RAGシステムの評価指標を紹介し、各コンポーネントの性能を評価するための方法を提供しています。主要な評価指標には、Faithfulness、Answer Relevance、Context Precisionなど上の記事の評価指標を拡張している。これらの指標を用いて、RAGの品質を測定し、改善を行うことが推奨されています。メトリクス駆動型開発のアプローチも提案されています。ドキュメントには、各指標の具体的な計算例も含まれています。

目的は、 RAGの構築よりも、回答品質を向上させるための評価方法と指標に焦点を当て、前提として、 自社や関連組織が作成・管理しているドキュメントを対象とし、Web検索など幅広い情報収集を目的としたRAGではない点を前提としています。

今後の発展としては、以下の点を挙げている

Cacheの利用:テスト済みのQuestionやAnswerをCacheし、類似のReal Questionに対して再利用することで、計算コストの削減や回答品質の安定を図る。

回答すべき質問の判定: RAGが回答すべき質問、回答しなくてもよい質問、回答してはならない質問に分類し、不要な質問には回答しない処理を導入する。

 

↓詳細はこちら。

qiita.com