ChefMate GraphRAG — 图增强智能食谱问答

GraphRAGNeo4jMilvusDeepSeekRAG

ChefMate 的下一代版本,引入 Neo4j 知识图谱解决传统 RAG 在复杂推理上的局限。已通过跨云分布式架构上线运行。

部署架构(跨云分布式)

┌─────────────── Aliyun ECS (2GB) ───────────┐
│  Nginx (HTTPS)                              │
│    ├── /          → 静态站点                 │
│    ├── /api/*     → V1 ChefMate RAG :8000    │
│    └── /api/graphchat → ──────────────────┐  │
└───────────────────────────────────────────│──┘

┌─────────────── Tencent (4GB) ────────────▼──┐
│  GraphRAG API (FastAPI :8001)                │
│    ├── Neo4j 5.26  (知识图谱, :7687)         │
│    ├── Milvus 2.5  (向量索引, :19530)        │
│    ├── etcd + MinIO (Milvus 依赖)            │
│    └── DeepSeek V4 API                       │
└──────────────────────────────────────────────┘

为什么用跨云架构? Neo4j + Milvus 需要至少 2GB 额外内存,而 Aliyun 单机仅 2GB。将 GraphRAG 栈独立部署到腾讯云 4GB 实例,Aliyun 仅承担 Nginx 反向代理和轻量 V1 服务,清晰解耦。


知识图谱

从 361 个菜谱 Markdown 文件中自动抽取构建的 Neo4j 知识图谱:

节点类型数量
Recipe360
Ingredient1195
Category16
CookingStep3392
关系总数6332
Milvus 向量4112 chunks

Schema

关系类型:
  REQUIRES            菜谱 → 食材
  BELONGS_TO_CATEGORY 节点 → 分类
  SIMILAR_TO          菜谱 ↔ 菜谱 (共享食材 ≥ 3)
  SUBSTITUTE_FOR      食材 → 替代食材
  CONTAINS_STEP       菜谱 → 烹饪步骤

三策略智能路由

策略触发场景举例
🔍 传统混合做法查询、推荐「宫保鸡丁怎么做」→ Milvus + BM25 + RRF
🕸️ 图 RAG搭配推理、相似查询「鸡肉配什么蔬菜」→ Neo4j 多跳遍历
🔄 组合策略多条件交叉查询「哪些菜用了土豆又用了猪肉」→ RRF 融合

路由决策由 规则引擎快速路径(正则匹配,0ms)+ LLM 多维分析(DeepSeek V4,兜底)两级实现。约 80% 查询命中规则而不需调用 LLM。


多跳推理示例

查询: "鸡肉配什么蔬菜"

图查询规划 (LLM):
  query_type: multi_hop
  sources: ["鸡肉", "鸡"]  targets: ["蔬菜"]
  max_depth: 3

Cypher 遍历 (Neo4j):
  (鸡肉:Ingredient) → [新疆大盘鸡:Recipe] → (大蒜:Ingredient)
  → [蔬菜:Category]

路径评分为 1/length + 关系类型匹配加权,取 Top 30 纳入 LLM 上下文

相似菜品推理

1199 条 SIMILAR_TO 关系自动关联(共享食材 ≥ 3),「和宫保鸡丁类似的菜」可即时返回相似菜品。

食材替代查询

17 条 SUBSTITUTE_FOR 规则映射(土豆→山药/芋头、猪肉→牛肉/鸡肉 等),覆盖常见替代场景。


幻觉防御(三重防线)

防线实现效果
JSON 约束列表推荐强制 {"dishes": [{"name":...,"reason":...}]}从结构约束
白名单过滤有效菜名列表物理剔除技术兜底
模糊纠错difflib.get_close_matches「宫宝鸡丁」→「宫保鸡丁」

核心技术栈

组件技术
图数据库Neo4j 5.26 Community
向量数据库Milvus 2.5 Standalone
嵌入模型BAAI/bge-small-zh-v1.5 (512-dim)
关键词检索rank-bm25 + jieba 分词
LLMDeepSeek V4 API (deepseek-chat)
后端FastAPI + SSE Streaming + slowapi 限流
前端Astro v6 + Tailwind CSS + marked.js
容器化Docker Compose (5 containers)
跨云代理Nginx 反向代理 (Aliyun → Tencent)

与 V1 对比

维度RAG 版 (V1)GraphRAG 版 (V2)
检索方式FAISS + BM25Milvus + BM25 + Neo4j
推理能力文本匹配多跳遍历 + 子图提取 + 图推理
路由策略LLM 3 分类规则引擎 + LLM 多维分析
食材搭配✅ 图谱关系推理
相似菜品✅ SIMILAR_TO (1199 条)
食材替代✅ SUBSTITUTE_FOR (17 组)
部署容器15 (API+Neo4j+Milvus+etcd+MinIO)
跨云分布式✅ Aliyun Nginx → Tencent
状态✅ 生产运行✅ 生产运行