| 特性 |
说明 |
| 5 路意图路由 |
LangGraph StateGraph 实现:闲聊 / 追问 / 知识库查询 / 图片分析 / 文件处理,自动识别用户意图并路由 |
| Text2Cypher 闭环 |
自然语言 → Cypher 查询 → 正则 + LLM 双重校验 → 自动修正 → 执行,实现图数据库的自然语言查询 |
| 混合检索 + 相关性评分 |
BM25 + 向量检索 RRF 融合,LLM 逐条评分过滤不相关结果,不足时自动切换策略重检索 |
| 4 种 GraphRAG 检索策略 |
Local / Global / DRIFT / Basic,覆盖事实查询、宏观分析、多跳推理、快速检索等场景 |
| 语义缓存 |
基于 Embedding 向量余弦相似度(阈值 0.90),相同语义问题直接返回缓存,降低 LLM 调用成本 |
| 幻觉检测 |
LLM 校验生成回答是否基于事实数据,为回答质量提供最后保障 |
| Docker Compose 一键部署 |
MySQL + Redis + Neo4j + App,healthcheck 保障启动顺序,开箱即用 |
| 丰富的知识库 |
内置产品知识文档 + 1,800 条电商 FAQ + 2,600+ 条真实客服对话(JDDC 数据集) |
用户请求 → FastAPI API 层
│
├─ /api/chat ──────────→ LLMFactory → DeepSeek/Ollama → SSE 流式响应
│ ↑
│ Redis 语义缓存检查
│
├─ /api/search ────────→ Function Calling → SerpAPI 联网搜索
│
├─ /api/langgraph/query ──→ LangGraph Agent(5 路意图路由)
│ │
│ ├─ general-query → 纯 LLM 闲聊
│ ├─ additional-query → 护栏检查 + 追问
│ ├─ graphrag-query → Multi-Tool Workflow
│ │ ├─ Text2Cypher(NL → Cypher 查询)
│ │ ├─ PredefinedCypher(预定义模板 + 向量匹配)
│ │ └─ GraphRAG(4 种检索策略)
│ │ └─ 混合检索(BM25+向量) → 相关性评分(LLM) → 策略切换重检索
│ ├─ image-query → GPT-4o 图片分析
│ └─ file-query → 文件处理
│
└─ /api/upload ────────→ GraphRAG 索引构建
| 层次 |
技术 |
作用 |
| 后端框架 |
FastAPI |
REST API,原生异步,SSE 流式响应 |
| 智能体 |
LangGraph |
StateGraph 多路由 Agent 编排,支持会话持久化 |
| LLM |
DeepSeek API |
对话、推理、Agent(工厂模式可切换 Ollama) |
| 知识图谱 |
Neo4j |
电商数据(商品、订单、客户),Text2Cypher 查询 |
| 文档检索 |
Microsoft GraphRAG |
文档索引 + 4 种检索策略 + 混合检索 |
| Embedding |
SiliconFlow (BAAI/bge-m3) |
语义向量生成,免费 API |
| 向量缓存 |
Redis |
语义缓存(余弦相似度 >= 0.90 命中) |
| 数据库 |
MySQL |
用户、会话、消息持久化 |
| 前端 |
Vue(静态 dist) |
聊天界面 |
- Python 3.8+
- Docker & Docker Compose(推荐)
# 1. 克隆项目
git clone https://github.com/wang219416/GraphRAG-.git
cd GraphRAG-
# 2. 编辑 .env.docker 填入 API Key
# 必填:DEEPSEEK_API_KEY
# 可选:SERPAPI_KEY、VISION_API_KEY
# 3. 一键启动
docker compose up -d
# 4. 查看日志
docker compose logs -f app
服务将在 http://localhost:8000 启动。
# 1. 克隆项目
git clone https://github.com/wang219416/GraphRAG-.git
cd GraphRAG-
# 2. 创建虚拟环境并安装依赖
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # Linux/Mac
pip install -r requirements.txt
# 3. 配置环境变量
cp llm_backend/.env.example llm_backend/.env
# 编辑 llm_backend/.env 填入 API Key 和数据库连接信息
# 4. 启动 MySQL、Redis、Neo4j(可用 Docker 单独启动)
docker compose up -d mysql redis neo4j
# 5. 初始化数据库
cd scripts
python init_db.py
# 6. 启动服务
cd llm_backend
python run.py
# 确保 llm_backend/.env 中以下变量已配置:
# GRAPHRAG_API_KEY, Embedding_API_KEY
PYTHONIOENCODING=utf-8 python scripts/build_graphrag_index.py
| 端点 |
方法 |
说明 |
/api/chat |
POST |
普通聊天(SSE 流式) |
/api/reason |
POST |
深度推理(SSE 流式) |
/api/search |
POST |
联网搜索(Function Calling) |
/api/langgraph/query |
POST |
Agent 多路由查询(SSE 流式) |
/api/upload |
POST |
上传文件 -> GraphRAG 索引构建 |
/api/conversations |
POST |
创建会话 |
/api/conversations/{id}/messages |
GET |
获取历史消息 |
/api/register |
POST |
用户注册 |
/api/token |
POST |
登录获取 JWT |
├── llm_backend/ # 后端服务
│ ├── main.py # FastAPI 入口,所有 API 端点
│ ├── app/
│ │ ├── core/ # 配置、数据库、安全、日志
│ │ ├── services/ # 业务服务层
│ │ │ ├── llm_factory.py # LLM 工厂模式(DeepSeek/Ollama)
│ │ │ ├── deepseek_service.py # DeepSeek API + 语义缓存
│ │ │ ├── search_service.py # SerpAPI 联网搜索
│ │ │ ├── redis_semantic_cache.py # Redis 语义缓存
│ │ │ └── indexing_service.py # GraphRAG 索引构建
│ │ ├── lg_agent/ # LangGraph 智能体
│ │ │ ├── lg_builder.py # StateGraph 构建与路由
│ │ │ ├── lg_states.py # 状态定义(Router/AgentState)
│ │ │ └── kg_sub_graph/ # 知识图谱子图
│ │ │ └── agentic_rag_agents/
│ │ │ └── components/
│ │ │ ├── customer_tools/ # GraphRAG 查询 + 混合检索
│ │ │ ├── cypher_tools/ # Text2Cypher 闭环
│ │ │ ├── relevance_grader.py # LLM 相关性评分
│ │ │ └── hybrid_retrieval/ # BM25+向量 RRF 融合
│ │ ├── graphrag/ # Microsoft GraphRAG 集成
│ │ ├── models/ # SQLAlchemy 数据模型
│ │ ├── api/ # 认证路由
│ │ └── prompts/ # 提示词模板
│ └── static/dist/ # Vue 编译后的前端
├── scripts/ # 工具脚本
│ ├── generate_product_knowledge.py # 从 CSV 生成产品知识文档
│ ├── download_datasets.py # 下载开源电商 FAQ 数据集
│ ├── download_jddc.py # 下载 JDDC 客服对话数据集
│ └── build_graphrag_index.py # 手动构建 GraphRAG 索引
├── docker-compose.yml # Docker Compose 配置
├── Dockerfile # Docker 镜像构建
├── .env.docker # Docker 环境变量
├── .env.example # 环境变量模板
└── STUDY_NOTES.md # 项目学习文档(面试准备)
| 模式 |
应用位置 |
说明 |
| 工厂模式 |
LLMFactory |
通过 .env 配置切换 DeepSeek/Ollama,不改代码 |
| 策略模式 |
config.py |
CHAT/REASON/AGENT 可分别选不同 LLM 服务 |
| 回调模式 |
deepseek_service.py |
on_complete 回调触发消息持久化,解耦 LLM 和存储 |
| 责任链 |
Text2Cypher |
生成 -> 校验 -> 修正 -> 执行流水线 |
| 状态图 |
LangGraph |
StateGraph + 条件边实现多路由 Agent |
本项目内置了三类知识库数据(位于 llm_backend/app/graphrag/data/input/):
| 数据类型 |
文件数 |
来源 |
说明 |
| 产品知识文档 |
10 |
从项目 CSV 聚合生成 |
涵盖 8 个品类 10 款智能家居产品 |
| 电商 FAQ |
81 |
Chinese-EcomQA |
1,800 条品牌/商品/推荐问答 |
| 客服对话 |
85 |
JDDC |
2,600+ 条真实电商客服对话 |
MIT License