本地知识库智能问答系统
LangGraph + MCP + RAG + FlashRank
一个基于 LangGraph 多智能体架构的本地知识库问答系统。
把文档放进 data/ 目录,用自然语言提问,系统会自动规划检索策略、并发读取文件、生成结构化报告。
flowchart TD
U[用户提问] --> M[Manager 意图识别]
M -->|chat| C[Chat 闲聊]
M -->|research| P[Planner 任务规划]
P --> D[并发分发]
D --> R1[Reader 1]
D --> R2[Reader 2]
D --> RN[Reader N]
R1 --> W[Writer 报告撰写]
R2 --> W
RN --> W
W --> END((END))
C --> END
- Manager:意图识别,分流 chat/research
- Planner:将复杂问题拆解为 2-4 个子任务
- Reader:并发调用 MCP 工具检索知识库
- Writer:汇总数据,生成结构化报告
- Chat:处理日常对话
- 向量检索:ChromaDB + 语义 Embedding
- 精排序:FlashRank 重排序提升准确率
- 置信度:每条结果附带相似度分数
- PDF(pdfplumber)
- Word(python-docx)
- Markdown / TXT(自动编码检测)
- 文件指纹检测(mtime),变动文件才重建
- 秒级启动,无需重复向量化
- SSE 实时推送执行阶段
- 前端可见工具调用过程
private-knowledge-agent/
├── agents/ # 多智能体模块
│ ├── manager.py # 意图识别
│ ├── chat.py # 闲聊处理
│ ├── planner.py # 任务规划
│ ├── reader.py # 知识检索
│ └── writer.py # 报告撰写
├── tools/ # MCP 工具
│ ├── mcp_server_local.py # MCP 服务
│ ├── rag_store.py # RAG 检索
│ └── registry.py # 工具注册
├── api/ # 后端接口
│ ├── routes.py # 路由
│ └── stream.py # SSE 流式处理
├── frontend/ # Streamlit 前端
│ ├── app.py
│ ├── chat_flow.py
│ ├── backend_client.py
│ └── ui.py
├── bootstrap/ # 生命周期管理
├── data/ # 知识库文件目录
├── chroma_db/ # 向量数据库
├── db/ # 索引状态/运行持久化
├── models/ # 本地模型与缓存目录
├── graph.py # LangGraph 编排
├── state.py # 状态定义
├── server.py # FastAPI 入口
├── config.py # 配置
├── Dockerfile
└── docker-compose.yml
git clone https://github.com/你的用户名/private-knowledge-agent.git
cd private-knowledge-agentcp .env.example .env编辑 .env:
# LLM 配置
OPENAI_MODEL=deepseek-chat
OPENAI_API_KEY=sk-xxx
OPENAI_BASE_URL=https://api.deepseek.com/v1
# 可选:LangSmith 追踪
LANGCHAIN_API_KEY=xxx# 知识库文件
cp 你的文件.pdf data/
cp 你的文档.docx data/
# 本地 Embedding 模型目录(默认路径)
# models/embedding/bge-m3docker compose up -d --build服务启动后:
- MCP Server:
http://localhost:8003 - Backend API:
http://localhost:8011
streamlit run frontend/app.py或部署到 Streamlit Cloud,在 Secrets 配置:
BACKEND_URL = "http://你的服务器IP"| 工具 | 功能 | 参数 |
|---|---|---|
list_local_files |
列出知识库文件 | 无 |
read_local_file |
读取文件全文 | filename |
search_local_knowledge |
语义检索 | query |
| 类别 | 技术 |
|---|---|
| 编排框架 | LangGraph |
| 协议 | MCP (fastmcp) |
| 后端 | FastAPI + SSE |
| 前端 | Streamlit |
| 向量数据库 | ChromaDB |
| Embedding | HuggingFace (BAAI/bge-m3, 本地加载) |
| 重排序 | FlashRank |
| 文件解析 | pdfplumber, python-docx |
| 持久化 | SQLite (checkpointer) |
项目内置了回归评测文件,用来验证 /chat SSE 接口在稳定性、回答约束、来源引用和延迟上的表现。
常用命令:
# 完整评测
python scripts/run_eval.py --dataset evals/eval_set.jsonl --timeout 200
# 快速冒烟
python scripts/run_eval.py --dataset evals/eval_test.jsonl --timeout 200结果会输出到 evals/results/。更详细的说明见:
evals/README.mdevals/EVAL_CASE_GUIDE.md
- 支持 Excel / CSV
- 支持图片 OCR
- 本地 LLM 方案(Ollama)
- Web 文件管理界面
- 📬 提交 Issue / PR:欢迎提出改进建议或贡献代码!
- 📩 技术交流:微信 a19731567148(备注 Agent)
🌟 如果这个项目帮到了你,请给我点个 Star ⭐,这将是我持续更新的最大动力!


