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)和一份通讯。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目