NirDiamant/Controllable-RAG-Agent

This repository provides an advanced Retrieval-Augmented Generation (RAG) solution for complex question answering. It uses sophisticated graph based algorithm to handle the tasks.

Controllable-RAG-Agent

単純な類似性検索では処理できない複雑で非自明な質問向けに設計された検索拡張生成(RAG)システム。最も類似したテキスト断片を取得して回答を生成するだけでなく、エージェントの「頭脳」として機能する決定論的決定グラフを構築します。

コアアイデア

従来のRAGは、類似テキストを見つけて回答を生成するだけです。このプロジェクトはもっと多くのことを行います:

  1. ロードと準備:PDFを章に分割し、クリーニングし、LLMで要約します。
  2. インデックス:本の引用と章の要約をベクトルストア(FAISS)にエンコードし、高速検索を実現します。
  3. 計画:質問は匿名化され(名前付きエンティティがプレースホルダーに置き換えられる)、プランナーが偏りなく一般的に推論できるようにします。高レベルの計画が生成され、非匿名化され、具体的なタスクに分解されます。
  4. 実行:各タスクは情報を取得(その後、重要な点に蒸留)するか、チェーン・オブ・ソート推論を使用して直接回答します。
  5. 検証と再計画:エージェントは生成されたコンテンツが取得されたコンテキストに基づいているか(モデルの事前学習メモリからではなく)を検証し、必要に応じて計画を更新します。
  6. 最終回答:蓄積され検証されたコンテキストから生成されます。

なぜこれが違うのか

  • 幻覚防止:回答は提供されたデータにトレース可能でなければなりません。検証ループがこれをチェックし、Self-RAG論文のアイデアを反映しています。
  • 多段階推論:複雑なクエリをサブタスクに分解します(例:「主人公はどのようにして悪役の助手を倒したか?」の場合、まず主人公、悪役、助手を特定し、次に対決を見つけ、理由を推論します)。
  • 適応的計画:計画は生きた文書であり、新しい情報が到着するたびに更新されます(Plan-and-Solveとbabyagiに触発)。

含まれるもの

  • ステップバイステップのチュートリアルノートブック(sophisticated_rag_agent_harry_potter.ipynb)、最初のハリーポッター本をテストケースとして使用
  • エージェントの推論をリアルタイムで視覚化するStreamlitアプリ(simulate_agent.py)
  • Dockerサポート(docker-compose up --build)
  • Ragasメトリクスによる評価:回答の正確性、忠実度、回答の関連性、コンテキスト再現率、回答の類似性

技術

  • LangChain(オーケストレーション用)
  • FAISS(ベクトルストア)
  • Streamlit(可視化)
  • Ragas(評価)
  • 柔軟なLLMサポート:OpenAI(デフォルトgpt-4o)、Groq、またはLangChain互換の任意のプロバイダー

はじめに

Python 3.8+とLLM APIキーが必要です。リポジトリをクローンし、.envファイルにキーを追加し、pip install -r requirements.txtでインストールし、ノートブックを開くかStreamlitアプリを実行します。完全なREADME手順はプロジェクトにあります。

ライセンス

Apache 2.0 — オープンソース、商用利用無料。

著者

Nir Diamant。関連リポジトリ(RAG Techniques、GenAI Agents、Agents Towards Production)とニュースレターも維持しています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト