Skip to content

Repository files navigation

基于 LangGraph + Milvus 的 Agentic RAG 智能医疗问答系统

本项目基于 LangGraphMilvus 实现了一个 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(重写查询 → 重新检索)

1. 安装依赖

pip install -r requirements.txt
pip install fastapi    # Web 服务框架

2. 文档处理

提供了三种文档处理方式,位于 doc_process/ 目录:

文件 分块方式 标题信息
process.py unstructured chunk_by_title ✅ 自动包含
pdf_process.py 递归分块 ❌ 不包含
docs_process.py 递归分块 ✅ 手动添加

3. 构建向量数据库

ChromaDB:

python vector_db/chroma_vector.py

Milvus(推荐):

python vector_db/milvus_vector.py

4. 运行问答助手

Web 界面(推荐)

启动 FastAPI 后端,浏览器访问 http://localhost:8000

python server.py

API 端点:

方法 路径 说明
GET /api/health 健康检查
POST /api/chat 非流式聊天,一次性返回完整结果
POST /api/chat/stream SSE 流式聊天,逐词打字机效果,可查看检索中间结果

前端功能:

  • 流式打字机效果展示答案
  • 可折叠的检索结果面板(显示检索到的文档类型和摘要)
  • 多轮对话上下文记忆(thread_id 会话管理)
  • "新对话" 按钮重置会话
  • 快捷问题入口
  • 响应式设计,适配移动端

CLI 命令行

Chroma + 向量检索:

python main.py

Milvus + 混合检索:

python main_hybrid.py

LangGraph 工作流(CLI):

python run.py

说明

本项目需要调用多模态 LLM 的 API,若无可用 API,可参考 https://blog.csdn.net/m0_55930133/article/details/156461063?spm=1011.2124.3001.6209

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages