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的做法是:找到相似文本 → 生成答案。这个项目做得更多:
- 加载与准备:PDF被分割成章节,由LLM进行清洗和总结。
- 索引:书籍引文和章节摘要被编码到向量存储(FAISS)中,以便快速检索。
- 规划:问题被匿名化(命名实体替换为占位符),以便规划者无偏见地进行一般性推理。生成高层计划,然后去匿名化并分解为具体任务。
- 执行:每个任务要么检索信息(然后提炼出关键内容),要么使用思维链推理直接回答。
- 验证与重新规划:代理验证其生成的内容是否基于检索到的上下文(而非模型预训练记忆),并在需要时更新计划。
- 最终答案:从累积的、已验证的上下文中生成。
为什么不同
- 防止幻觉:答案必须可追溯到提供的数据。验证循环检查这一点,呼应了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)和一份通讯。
相关
- 项目
- 项目
- 项目
- 项目
- 项目