# Mutil-AgenticRAG **Repository Path**: tianxiang6/mutil-agentic-rag ## Basic Information - **Project Name**: Mutil-AgenticRAG - **Description**: 基于 LangChain + LangGraph + Streamlit 构建的多智能体 RAG(检索增强生成)系统。通过 9 个专业智能体协作,实现高质量、安全可靠的检索增强问答。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-05-30 - **Last Updated**: 2026-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Multi-Agentic RAG — 多智能体检索增强生成系统 基于 **LangChain + LangGraph + Streamlit** 构建的多智能体 RAG(检索增强生成)系统。通过 9 个专业智能体协作,实现高质量、安全可靠的检索增强问答。 ## 功能特性 - **多智能体协作**:9 个专业智能体各司其职,包括路由、检索、查询重写、联网搜索、知识合成、答案生成、事实核查、安全检查和意图澄清 - **中文优化**:基于 DeepSeek 大模型 + BGE 中文嵌入模型,所有提示词均为中文 - **多知识源支持**:URL 网页内容、TXT/PDF/DOCX 文件上传,均可作为 RAG 的知识库 - **智能回退机制**:当本地知识库无法回答时,自动重写查询重试(最多2次),超限后回退到联网搜索 - **事实核查**:对生成的答案进行事实性验证,标注潜在的不实内容 - **安全检查**:识别并拦截有害、偏见或不当内容 - **可视化工作流**:实时展示多智能体工作流的执行过程,清晰呈现每一步的决策逻辑 - **兼容 LangChain 1.0**:使用拆分包架构(langchain-core、langchain-community 等) ## 系统架构 ### 智能体角色 | 智能体 | 职责 | |--------|------| | **Router(路由器)** | 解析用户查询意图,决定走哪个工作流路径 | | **Retriever(检索器)** | 从内部 Chroma 向量知识库中检索相关文档 | | **Reformulator(重写器)** | 当检索效果不佳时,对查询进行重写以提升召回率 | | **Web Searcher(网络搜索器)** | 通过 Tavily API 执行实时互联网检索 | | **Synthesizer(合成器)** | 从多个知识源中提取和整合相关信息 | | **Generator(生成器)** | 基于检索到的上下文生成最终回答 | | **Fact Checker(事实核查器)** | 识别答案中的事实性陈述,逐一进行核查 | | **Safety Checker(安全检查器)** | 检查回答是否包含有害/偏见/不当内容 | | **Clarifier(澄清器)** | 当用户问题模糊不清时,引导用户补充信息 | ### 工作流 ``` START │ ▼ Router ──→ retrieve ──→ 文档相关性评分 │ │ │ ├── relevant ──→ synthesize ──→ generate │ │ │ ├── reformulate ──→ 重写查询(最多2次重试) │ │ └── 超限 → web_search │ │ │ ├── web_search ──→ synthesize │ │ │ └── clarify ──→ 引导用户补充信息 → END │ ├── reformulate ──→ (同上) ├── web_search ──→ synthesize ├── clarify ──→ END └── generate ──→ (直接生成) │ ▼ fact_check ──→ safety_check ──→ END ``` ## 项目结构 ``` Multi-Agentic-RAG-main/ ├── Agentic_RAG.py # 主应用(DeepSeek + BGE 中文嵌入) ├── test_route.py # Router 智能体单元测试 ├── requirements.txt # Python 依赖 ├── .env.example # 环境变量模板 ├── README.md # 项目文档 └── LICENSE # MIT License ``` ## 快速开始 ### 环境要求 - Python 3.10+ ### 安装 ```bash # 1. 创建虚拟环境 python -m venv venv # Windows: venv\Scripts\activate # Linux/Mac: source venv/bin/activate # 2. 安装依赖 pip install -r requirements.txt ``` ### 配置 API 密钥 ```bash cp .env.example .env ``` 编辑 `.env` 文件,填入你的 API 密钥: | 密钥 | 用途 | 获取地址 | |------|------|----------| | `DEEPSEEK_API_KEY` | DeepSeek 大模型 | https://platform.deepseek.com | | `TAVILY_API_KEY` | Tavily 联网搜索 | https://app.tavily.com | ### 运行 ```bash streamlit run Agentic_RAG.py ``` 启动后在浏览器中打开 `http://localhost:8501` 即可使用。 ## 使用指南 ### 1. 配置知识源 在左侧边栏中: - **URL 输入**:输入网页 URL,系统会自动抓取并索引内容 - **文件上传**:支持 TXT、PDF、DOCX 格式文件上传 - 如未提供任何知识源,系统会自动加载默认的 RAG 相关文章作为知识库 - 点击「Apply Parameters & Update Knowledge」应用配置 ### 2. 参数调整 - **Chunk Size**:文本切分块大小 - **Retriever K**:检索返回的文档数量 - **Temperature**:LLM 生成的温度参数 ### 3. 开始对话 在聊天输入框中输入问题,系统会自动: 1. 路由分析你的意图 2. 从知识库检索或联网搜索相关信息 3. 合成并生成回答 4. 进行事实核查和安全检查 5. 返回最终答案 ### 4. 工作流可视化 展开「Execution Details」查看: - **执行日志**:每个智能体的实时执行状态 - **工作流图**:Graphviz 绘制的工作流拓扑图 - **知识源列表**:当前活跃的知识源 - **Agent 配置**:各智能体的参数配置 ### 5. 清除历史 点击「Clear Chat History」重置对话记录和系统状态。 ## 测试 ```bash python test_route.py ``` 测试覆盖了中文场景下的多种查询路由场景:闲聊、模糊问题、专业知识检索、联网搜索、上下文追问等。 ## 技术栈 | 组件 | 说明 | |------|------| | **LLM** | DeepSeek deepseek-chat(通过 OpenAI 兼容接口) | | **嵌入模型** | BAAI/bge-large-zh-v1.5(HuggingFace 本地运行) | | **向量数据库** | ChromaDB(支持持久化存储) | | **搜索引擎** | Tavily Search API | | **工作流编排** | LangGraph StateGraph | | **前端界面** | Streamlit Chat UI | ## 依赖项 | 包名 | 用途 | |------|------| | streamlit | Web UI | | langchain / langchain-core | LLM 框架核心 | | langgraph | 多智能体工作流编排 | | chromadb | 向量数据库 | | langchain-openai | OpenAI 兼容接口(DeepSeek) | | langchain-community | 社区集成(文档加载器等) | | langchain-huggingface | HuggingFace 嵌入模型 | | langchain-text-splitters | 文本切分 | | tiktoken | Token 计数 | | transformers / huggingface-hub | BGE 模型运行时 | | pysqlite3-binary | ChromaDB Windows 兼容 | | python-dotenv | 环境变量加载 | ## 安全提醒 请勿将包含真实 API 密钥的 `.env` 文件提交到版本控制系统。项目 `.gitignore` 已配置忽略该文件。 ## License MIT License — 详见 [LICENSE](LICENSE) 文件。 ## 致谢 - [LangChain](https://github.com/langchain-ai/langchain) - [LangGraph](https://github.com/langchain-ai/langgraph) - [Streamlit](https://streamlit.io/) - [DeepSeek](https://platform.deepseek.com/) - [Tavily](https://tavily.com/) - [BGE (BAAI)](https://huggingface.co/BAAI/bge-large-zh-v1.5)