LangGraph + Qdrant 60 分钟搭通本地 RAG 全流程
一、为什么这个组合值得花一小时
本地的 RAG(RAG = Retrieval-Augmented Generation,检索增强生成)方案里,LangGraph + Qdrant 是少有能把"状态机驱动 + 高性能向量检索 + Python 生态"三件事同时做好的组合。LangGraph 用图结构组织"检索→重排→生成→校验"的多步流程,Qdrant 则用 Rust 写的高效向量索引处理百万级文档片段。本地用 docker compose 一键起服务,30 分钟能跑通最小可用版本,再加 30 分钟扩到生产级。
这篇文章走完整链路:文档切片 → 嵌入 → 写入 Qdrant → 检索 → 重排 → 生成回答。60 分钟内全部跑通,生产环境再上 PostgresSaver 持久化检查点。
二、核心事件:LangGraph 1.x 与 Qdrant 1.x 的稳定期
2026 年上半年,LangGraph 与 Qdrant 都进入了"工程化稳定期"。LangGraph 1.x 在保留灵活图编排的同时,把持久化(postgres/redis checkpointer)、人机协同(human-in-the-loop)、流式输出(streaming events)等生产必备能力全部纳入官方支持。Qdrant 1.x 则把标量量化(scalar quantization)与二分搜索(Binary Quantization)做到默认开启,普通笔记本跑 1M 条 768 维向量只要约 4GB 内存。
更关键的是两者都把 Python SDK 打磨到接近 1.0 的稳定 API,老教程里那些 from langchain... 的间接调用逐步被替换成 from langgraph... 直调——这意味着你跟着官方 quickstart 抄的代码,在 2026-07 仍然能跑。
三、技术解析:4 个节点 + 1 个检索器
整个 RAG 流程只需要 4 个 LangGraph 节点:

1. Retriever 节点:输入 query,从 Qdrant 召回 top-k=20 候选片段,带 metadata 过滤(如时间范围、文档类型)。
2. Reranker 节点:用 cross-encoder 模型(如 BAAI/bge-reranker-v2-m3)对 20 个候选精排,留 top-5。
3. Decision 节点:用 LLM 判断 top-5 是否真的相关(简单 yes/no + 置信度),避免 LLM 拿无关 context 强行编答案。
4. Generator 节点:把 top-5 拼成 prompt,调用 LLM 生成最终答案,带引用编号。
如果 Decision 判断相关性不足,触发 Query Rewrite:让 LLM 重写 query(扩写/换关键词/拆子问题),然后回到 Retriever 重试,最多 3 轮。整体跑下来是个闭环图,而非传统 RAG 的"一次性检索+生成"。

四、关键点(实战踩坑清单)
- 切片策略:用
RecursiveCharacterTextSplitter+ chunk_size=512 + overlap=64,比固定字符切分保住语义完整度。中文文档必须设separators=["\n\n", "\n", "。", "!", "?", ";", " "]。 - 嵌入模型:本地选
BAAI/bge-m3(支持中英双语、1024 维、~2GB 显存),云端选text-embedding-3-small(便宜、1536 维)。混用嵌入会导致检索全废——同一份 corpus 用什么模型嵌入,检索时就必须用什么模型查。 - Qdrant payload 索引:除了向量字段,
metadata.source / metadata.page / metadata.timestamp这些过滤字段必须建 payload 索引,否则 "上周文档" 这种时间过滤会全表扫。 - Persistence:用
PostgresSaver把 LangGraph 的 checkpoint 存到 Postgres,中断恢复、断点续跑、人机协同(用户改写 query 后从上次中断点继续)全部依赖这一层。 - 评估:写完别只用人眼挑 5 个 query 看效果——用 RAGAS 跑 50 个测试 query,看
context_precision / context_recall / faithfulness / answer_relevancy4 个指标,任何一项 < 0.7 都说明有环节出问题。
五、行业影响
本地 RAG 的成本结构在 2026 年彻底翻转:LLM 调用走云端(按 token 付费),检索与状态机跑本地(零边际成本)。一家中型企业每月处理 10 万次内部知识问答,本地化方案月成本可压到云端全托管方案的 1/5 至 1/3,而响应延迟从 1.2s 降到 200ms 量级。
更值得聚焦的是合规边界:金融、医疗、法律行业的客户数据不允许出域,本地 RAG 让大模型能力第一次真正落在私有部署里。LangGraph 的状态图 + Qdrant 的本地服务,正好切中这一波"私有化 AI 中台"的需求。
六、结语
60 分钟搭通 ≠ 60 分钟上线。生产环境的 RAG 系统要解决的事远不止"检索+生成":文档更新怎么增量同步?query 理解怎么纠错?Prompt 怎么版本管理?答案怎么追溯引用?这些都需要 LangGraph 的状态图能力 + 评估体系(RAGAS/DeepEval)+ 监控(LangSmith/Phoenix)协同。下一步建议从评估入手,先知道"现在哪里差"再优化,比盲目调参有效得多。
参考资料
官方文档
- LangGraph 官方文档 [200] - 2026-07
- Qdrant 文档 - Quickstart [200] - 2026-07
- LangGraph GitHub Releases [200] - 2026-07
开源项目
- langchain-ai/langgraph 仓库元数据 API [200] - 2026-07-13
- qdrant/qdrant 仓库元数据 API [200] - 2026-07-13
- BAAI/bge-reranker-v2-m3 模型卡片 [200] - 2026-07
行业报道
- 36Kr: 企业级 RAG 私有化部署白皮书 2026 [未找到 - 反爬 challenge]
- 量子位: LangGraph 1.x 工程化解读 [200]
社区讨论
- HN 讨论: Building production RAG with LangGraph (Algolia items API) [200] - 600+ points
- Reddit r/LocalLLaMA: Qdrant vs Milvus for local RAG [200]
对比基准
- RAGAS 框架 - 官方文档 [200] - 2026-07
- Qdrant 基准测试: 1M 向量检索性能 [200] - 2026-07
- lmarena.ai 排行榜 [200] - 持续更新
本文由 AI 生成。内容基于公开资料整理,可能存在事实偏差,引用链接请以原始来源为准。
