完整架构回顾:掌柜智库 — 知识图谱 RAG 全栈系统
阅读目标:最后一张全景图,把 5 个阶段的积累在一张 Mind Map 和一个 UML 类图中完整呈现。
7.1 技术栈全景 Mind Map
7.2 全量 UML 类图
7.3 完整文件依赖图
shopkeeper_brain/
│
├── .env 配置入口
├── docker-compose.yml 6 个 Docker 服务
├── requirements.txt / pyproject.toml 依赖声明
│
└── knowledge/
├── api/
│ └── import_router.py FastAPI 路由(导入触发)
│
├── core/
│ ├── paths.py 项目路径管理
│ └── deps.py FastAPI 依赖注入
│
├── processor/
│ ├── import_process/ ← 导入流程(8 个节点)
│ │ ├── base.py BaseNode 基类 ← 所有节点的基石
│ │ ├── state.py ImportGraphState
│ │ ├── config.py ImportConfig dataclass
│ │ ├── exceptions.py 异常体系
│ │ ├── main_graph.py StateGraph 定义 ← 导入流程的入口
│ │ └── nodes/ 8 个节点各一个 .py
│ │
│ └── query_process/ ← 查询流程(7 个节点)
│ ├── state.py QueryGraphState
│ ├── main_graph.py StateGraph 定义 ← 查询流程的入口
│ └── nodes/ 7 个节点各一个 .py
│
├── utils/ 10 个独立工具类
│ ├── bge_m3_embedding_util.py 嵌入
│ ├── bge_rerank_util.py 重排序
│ ├── llm_client_util.py LLM 调用
│ ├── milvus_util.py Milvus 操作
│ ├── neo4j_util.py Neo4J 操作
│ ├── minio_util.py MinIO 操作
│ ├── mongo_history_util.py 历史记录
│ ├── markdown_util.py MD 处理
│ ├── sse_util.py SSE 流式
│ └── task_util.py 任务追踪
│
├── prompts/
│ ├── upload/import_prompt.py 导入用提示词
│ └── query/query_prompt.py 查询用提示词
│
├── schema/
│ ├── task_schema.py 任务 Schema
│ ├── upload_schema.py 上传 Schema
│ └── query_schema.py 查询 Schema(Pydantic)
│
└── services/
├── import_file_service.py 导入业务逻辑
├── query_service.py 查询业务逻辑
└── task_service.py 任务状态管理7.4 两条流程的 End-to-End 数据流
7.5 "如果从零重写"精简清单
如果你现在要从零实现一个类似的 RAG 知识图谱系统,按优先级排列的实施顺序:
| 优先级 | 工作 | 预估时间 | 依赖 |
|---|---|---|---|
| 🥇 | 环境部署(Docker Compose) | 30 min | — |
| 🥇 | BaseNode + State + EntryNode | 30 min | 环境就绪 |
| 🥇 | Milvus 建库 + bge-m3 嵌入 | 1 hr | Milvus 运行 |
| 🥇 | 查询流程:向量检索→RRF→Reranker→LLM | 2 hr | Milvus 有数据 |
| 🥈 | PDF→MD(MinerU) | 1 hr | MinerU 安装 |
| 🥈 | VLM 图片摘要 + MinIO | 1 hr | VLM API Key |
| 🥈 | 文档切分 + 商品名识别 | 1 hr | LLM API Key |
| 🥉 | Neo4J 知识图谱 | 2 hr | Neo4J 运行 |
| 🥉 | MCP 检索集成 | 30 min | MCP Server |
| 🥉 | 前端对接 + SSE 流式 | 1 hr | 全部后端就绪 |