本项目基于 LangGraph 和 Milvus 实现了一个 Agentic RAG 智能疫苗接种问答助手,
支持问题分类、混合检索、答案评估与自动重试,并提供 Web 前端界面。
Agentic_RAG/
├── server.py # FastAPI 后端服务(Web API)
├── static/
│ └── index.html # 前端聊天界面(纯 HTML/CSS/JS)
├── workflow.py # LangGraph RAG 工作流(核心)
├── run.py # CLI 启动入口
├── prompt.py # 提示词模板
├── query_optim.py # 查询优化(重写 + HyDE)
├── doc_process/ # PDF 文档处理
│ ├── process.py # 方案1:chunk_by_title 分块
│ ├── pdf_process.py # 方案2:递归分块,无标题
│ └── docs_process.py # 方案3:递归分块 + 手动添加标题
├── retrieve/ # 检索模块
│ ├── milvus_retrieve.py # Milvus 混合检索器
│ └── retrieve.py # Chroma 检索器(含 reranker)
├── vector_db/ # 向量库构建脚本
│ ├── chroma_vector.py # Chroma 向量库
│ ├── milvus_vector.py # Milvus 向量库(pymilvus 原生)
│ └── milvus_vector_langchain.py # Milvus(langchain_milvus 封装)
├── main.py # CLI 问答(Chroma + 向量检索)
├── main_hybrid.py # CLI 问答(Milvus + 混合检索)
└── test/ # 测试脚本
workflow.py 实现了基于 LangGraph 的 Agentic RAG 流程:
用户输入 → classify_node(问题分类)
├── 医疗/疫苗问题 → retrieve_node(Milvus 混合检索)
└── 日常问题 ────→ answer_node(直接生成答案)
↓
evaluate_node(Ragas 评估)
├── 质量合格 → 返回答案
└── 质量不足 → query_optim_node(重写查询 → 重新检索)
pip install -r requirements.txt
pip install fastapi # Web 服务框架提供了三种文档处理方式,位于 doc_process/ 目录:
| 文件 | 分块方式 | 标题信息 |
|---|---|---|
process.py |
unstructured chunk_by_title |
✅ 自动包含 |
pdf_process.py |
递归分块 | ❌ 不包含 |
docs_process.py |
递归分块 | ✅ 手动添加 |
ChromaDB:
python vector_db/chroma_vector.pyMilvus(推荐):
python vector_db/milvus_vector.py启动 FastAPI 后端,浏览器访问 http://localhost:8000:
python server.pyAPI 端点:
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/api/health |
健康检查 |
POST |
/api/chat |
非流式聊天,一次性返回完整结果 |
POST |
/api/chat/stream |
SSE 流式聊天,逐词打字机效果,可查看检索中间结果 |
前端功能:
- 流式打字机效果展示答案
- 可折叠的检索结果面板(显示检索到的文档类型和摘要)
- 多轮对话上下文记忆(
thread_id会话管理) - "新对话" 按钮重置会话
- 快捷问题入口
- 响应式设计,适配移动端
Chroma + 向量检索:
python main.pyMilvus + 混合检索:
python main_hybrid.pyLangGraph 工作流(CLI):
python run.py本项目需要调用多模态 LLM 的 API,若无可用 API,可参考 https://blog.csdn.net/m0_55930133/article/details/156461063?spm=1011.2124.3001.6209