AgenticRAG(注:此词为特定技术或概念的名称,直接翻译可能无具体含义,故保持原样)
代理检索增强生成(RAG) 系统与 模型上下文协议(MCP) 智能网页搜索与文档检索的集成。此仅为测试和教育用途。
🎯 概述
AgenticRAG是一个集以下功能于一体的问答系统:
- LangGraph 用于协调自主工作流
- FAISS(快速应用索引库) 用于语义文档检索的向量存储
- MCP(模型上下文协议) 用于外部工具集成
- DuckDuckGo 搜索 通过MCP进行实时网页查询
- 剧作家MCP 用于浏览器自动化
- Groq LLM(大语言模型) (Llama 3.1) 用于快速推理
该系统能够智能地决定是仅从其知识库中检索答案,还是在互联网上进行搜索,或者结合这两种方法来回答问题。
🏗️ 建筑学
核心组件
- 代理工作流(LangGraph)
- decide分析查询以确定是否需要检索 - retrieve从FAISS向量存储中检索相关文档 - generate使用检索到的上下文通过大型语言模型(LLM)生成答案
- 向量存储
- 来自网络来源的预索引文档 - 嵌入(或表示): sentence-transformers/all-MiniLM-L6-v2 - 存储:FAISS(Facebook AI 相似性搜索)
- MCP 集成
- DuckDuckGo搜索实时信息 - 用于浏览器自动化的Playwright - 可通过以下方式配置 browser_mcp.json
数据流
User Question
|
v
[Decide] ----needs_retrieval?----> [Retrieve from FAISS]
| |
v v
[Generate Answer] [DuckDuckGo Search via MCP] --merge--> [Re-generate]
|
v
Final Answer📦 安装
先决条件
- Python 3.8或更高版本
- Node.js(用于MCP服务器)
- Groq API密钥
设置
- 克隆仓库
git clone
cd AgenticRAG- 创建并激活虚拟环境
Windows(PowerShell):
python -m venv venv
.\venv\Scripts\Activate.ps1Windows(命令提示符):
python -m venv venv
venv\Scripts\activate.batLinux/macOS:
python3 -m venv venv
source venv/bin/activate- 安装Python依赖项
pip install -r requirements.txt- 安装MCP服务器
npm install -g @playwright/mcp
npm install -g duckduckgo-mcp-server- 配置环境变量
创建一个 .env 文件:
GROQ_API_KEY=your_groq_api_key_here🚀 使用方法
运行Flask API
python app.py服务器在(某个时间或条件下)启动 http://localhost:5000。
API 端点
POST(邮政服务/帖子/邮寄) /ask
向RAG系统提出一个问题。
请求体:
{
"question": "What is LangChain?",
"use_ddg": false
}参数:
question(字符串,必填):您的问题use_ddg(布尔值,可选):通过MCP启用DuckDuckGo搜索(默认:false)
回答:
{
"answer": "LangChain is a framework for developing applications powered by language models..."
}使用 cURL 的示例:
curl -X POST http://localhost:5000/ask \
-H "Content-Type: application/json" \
-d '{"question": "What is LLM poisoning?", "use_ddg": true}'输出
独立MCP示例
基本的MCP浏览器自动化
python basic_mcp.py使用Playwright MCP演示浏览器自动化以搜索谷歌。
MCP连接测试
python mcp_test.py测试MCP客户端初始化和会话创建。
🔧 配置
MCP 服务器(browser_mcp.json)
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
},
"duckduckgo-search": {
"command": "npx",
"args": ["-y", "duckduckgo-mcp-server"]
}
}
}默认索引源
系统对这些URL进行了预索引:
- LangChain 表达式语言文档
- LangGraph 文档
- IBM 人工智能主题
- 人类学研究论文
你可以修改 urls 列在 app.py 添加你自己的资源。
📁 项目结构
AgenticRAG/
├── app.py # Main Flask application with LangGraph workflow
├── basic_mcp.py # Example MCP browser automation
├── mcp_test.py # MCP connection testing
├── browser_mcp.json # MCP server configuration
├── requirements.txt # Python dependencies
├── .env # Environment variables (create this)
└── README.md # This file🔑 主要特点
1. 智能检索决策
该系统通过关键词匹配分析查询,以确定是否需要检索文档:
- 检索触发词:“什么”,“如何”,“解释”,“告诉我”,“描述”
- 简单查询的直接答案
2. 混合搜索
联合
- 当地知识带有预索引文档的FAISS向量存储
- 实时数据通过MCP使用DuckDuckGo进行搜索时
use_ddg=true
3. MCP工具集成
利用模型上下文协议用于:
- 网络搜索(DuckDuckGo)
- 浏览器自动化(Playwright)
- 可扩展至其他MCP兼容工具
4. 异步处理
针对MCP操作和并行处理的高效异步/等待模式。
🧪 测试
测试API
基本查询(仅限向量存储):
curl -X POST http://localhost:5000/ask \
-H "Content-Type: application/json" \
-d '{"question": "Explain LangGraph"}'使用网页搜索进行查询:
curl -X POST http://localhost:5000/ask \
-H "Content-Type: application/json" \
-d '{"question": "Latest AI news", "use_ddg": true}'测试MCP组件
# Test MCP client
python mcp_test.py
# Test browser automation
python basic_mcp.py🛠️ 技术栈
- 框架Flask(API)、LangGraph(工作流编排)
- LLMGroq(Llama 3.1 8B Instant)
- 嵌入表示(或嵌入)HuggingFace
sentence-transformers/all-MiniLM-L6-v2 - 向量存储FAISS(高效相似性搜索和大规模图像识别库)
- MCP 工具剧作家,DuckDuckGo搜索
- 文档处理LangChain,BeautifulSoup
🔄 工作流程详情
状态管理
class AgentState(TypedDict):
question: str # User's question
documents: List[Document] # Retrieved documents
answer: str # Generated answer
needs_retrieval: bool # Retrieval flag图节点
- 决定确定检索的必要性
- 检索;取回查询FAISS向量存储
- 生成使用大型语言模型(LLM)+上下文生成答案
条件路由
- 如果需要检索→
retrieve→generate - 如果无需检索 → 直接到
generate
📝 环境变量
| 变量 | 是否必需 | 描述 |
|---|---|---|
GROQ_API_KEY 是的,您的Groq API密钥用于访问大型语言模型(LLM) |
🚦 故障排除
MCP连接问题
- 确保已安装 Node.js:
node --version - 验证MCP软件包:
npx @playwright/mcp@latest --version
FAISS 安装(Windows)
如果你遇到问题 faiss-cpu,尝试:
pip install faiss-cpu --no-cache-dir缺失的依赖项
pip install --upgrade -r requirements.txt致谢
- 该存储库的内容灵感来源于 克里希·奈克 MCP与AgenticRag课程。如需深入了解这些主题,请参阅相关资料
