RAG 与框架选型
读 RAG / Agent 动手篇之前,先扫一眼本篇:无框架 PoC、LangChain、GraphRAG、LangGraph 不在同一层,也不是三选一。按问题类型选型,再点进对应正文。
| 主题 | 入口 |
|---|---|
| RAG 概念与流水线 | RAG 与检索增强 |
| Agent 概念与循环 | Agent 核心概念与架构 |
| Agent 图编排 | [LangGraph 编排实践](/docs/ai/Agent/LangGraph 编排实践) |
| Coding Agent Harness | [Pi Agent Harness 实践](/docs/ai/Agent/Pi Agent Harness 实践) |
| Token 与成本 | Token 计算与成本 |
分层直觉
你要解决什么问题?
│
├─ 搞懂 RAG 流水线(切分 → 检索 → 生成)
│ → 无框架 PoC → LangChain RAG 实践
│
├─ 段落级 FAQ / 手册 / 私有知识问答(向量相似段)
│ → LangChain + 向量库(PoC:Chroma → 生产:[Milvus](/docs/ai/RAG/Milvus 向量库实践))
│
├─ 全局主题 / 跨文档归纳 / 实体关系(向量 top-k 不够)
│ → GraphRAG(微软图索引路线)
│
└─ 多步闭环:检索 + 调工具 + 观察 + 再规划
→ Agent(手写 loop 或 LangGraph 编排)
记忆口诀:LangChain 管 RAG 怎么拼;GraphRAG 管 另一种索引怎么建;LangGraph 管 Agent 怎么循环。
各方案是什么
| 名称 | 类型 | 解决什么 | 典型产物 |
|---|---|---|---|
| 无框架 PoC | 基线写法 | 理解流水线,不依赖库 | 自写 chunk / score / answer |
| LangChain(RAG) | 应用框架 | Loader、Splitter、VectorStore、Retriever | 向量 RAG 服务 |
| GraphRAG | 索引 + 查询方案 | 实体关系图、社区摘要、Global/Local 查 | parquet 图索引 + CLI 查询 |
| Neo4j | 图数据库 | 节点/关系持久化、Cypher 多跳查询 | 在线图库(可与 RAG 组合) |
| LangGraph | 编排框架 | 有状态图:节点、边、条件分支、循环 | ReAct / 多工具 Agent |
| LlamaIndex | 应用框架(并列) | 与 LangChain 类似的 RAG 拼装 | 本篇不展开,选型逻辑同 LangChain |
常见误解
| 误解 | 实际 |
|---|---|
| LangChain = LangGraph | LangGraph 是 Agent 编排;LangChain RAG 是 线性检索链,二者常组合而非替代 |
| GraphRAG = LangChain 里的 Graph | GraphRAG 是 Microsoft 独立流水线(抽图 + 社区),不依赖 LangChain |
| 必须三选一 | 常见组合:LangChain 向量 RAG + LangGraph Agent;复杂库再 叠加 GraphRAG |
| GraphRAG 是「更好的 embedding」 | 是 不同的索引结构(图 + 社区报告),索引成本更高 |
| GraphRAG = Neo4j | GraphRAG 是 RAG 索引方案;Neo4j 是 图库,可存 GraphRAG 抽出的图或业务图谱 |
按场景选型
| 场景 | 优先 | 说明 |
|---|---|---|
| 第一次学 RAG | RAG 落地实践 | 无框架,建立流水线直觉 |
| 接向量库快速上线 | [LangChain RAG 实践](/docs/ai/RAG/LangChain RAG 实践) + [Milvus 向量库实践](/docs/ai/RAG/Milvus 向量库实践) | PoC 可用 Chroma;规模化 / 生产常见 Milvus |
| 「整个知识库在讲什么?」 | [GraphRAG 概览与查询](/docs/ai/RAG/GraphRAG 概览与查询) | Global Search 强项 |
| 实体关系、多跳推理 | GraphRAG 或 向量 RAG + 重排 | 先向量基线,失败 case 再升级 |
| ReAct / 多工具闭环 | Agent 最小可运行项目 → [LangGraph 编排实践](/docs/ai/Agent/LangGraph 编排实践) | 先手写 loop,再用状态图表达同一循环 |
| 终端可扩展 coding agent | [Pi Agent Harness 实践](/docs/ai/Agent/Pi Agent Harness 实践) | 最小 harness + Skills/扩展;不是业务状态图框架 |
| Agent 里要查私有库 | [LangGraph 编排实践](/docs/ai/Agent/LangGraph 编排实践) + RAG 检索节点 | RAG 链见 LangChain 篇;编排归 Agent |
| 短 FAQ、频繁更新 | 向量 RAG 即可 | 不必上 GraphRAG |
| 纯对话、无工具无检索 | Chatbot / Prompt | 不必 Agent 也不必 RAG |
组合关系
| 组合 | 是否常见 | 一句话 |
|---|---|---|
| LangChain RAG + LangGraph Agent | 常见 | Agent 图里挂 retriever 工具或 RAG 节点 |
| GraphRAG + LangGraph | 可以 | GraphRAG 当检索后端,LangGraph 管多步推理 |
| GraphRAG 替代 LangChain RAG | 少见 | 仅当全局/关系题占主导且接受索引成本 |
| LangChain RAG + GraphRAG 双路 | 进阶 | 简单题走向量,分析题走 GraphRAG,需路由 |
实践路径:Naive 向量 RAG 基线 → 评测集看失败类型 → 按需加混合检索 / GraphRAG / Agent 编排。
深度与正文分工
| 方案 | 详细正文 |
|---|---|
| 无框架 RAG | RAG 落地实践 |
| LangChain RAG | [LangChain RAG 实践](/docs/ai/RAG/LangChain RAG 实践) |
| Milvus 向量库 | [Milvus 向量库实践](/docs/ai/RAG/Milvus 向量库实践) |
| GraphRAG | [GraphRAG 概览与查询](/docs/ai/RAG/GraphRAG 概览与查询) |
| Neo4j(含 GraphRAG 对比) | Neo4j |
| Agent 概念 / 高频题 | Agent 核心概念与架构、Agent 系统高频题 |
| 手写 Agent 闭环 | Agent 最小可运行项目 |
| 工具与评测 | 工具调用与评测实践 |
| LangGraph 专篇 | [LangGraph 编排实践](/docs/ai/Agent/LangGraph 编排实践) |
| Pi Agent Harness | [Pi Agent Harness 实践](/docs/ai/Agent/Pi Agent Harness 实践) |
| Agent 记忆分层 | [Agent 记忆分层实践](/docs/ai/Agent/Agent 记忆分层实践) |
面试速记
- LangChain / GraphRAG / LangGraph 各管什么? LangChain 拼 RAG 链;GraphRAG 建图索引答全局/关系题;LangGraph 编 Agent 状态图。
- 能互相替代吗? 不能简单替代;LangChain RAG + LangGraph Agent 常组合;GraphRAG 是 RAG 路线升级而非换 embedding。
- 选型第一步? 先 Naive 向量 RAG + 小评测集,按失败 case 加能力,别一上来堆框架。
- LlamaIndex 呢? 与 LangChain 同层的 RAG 框架,选型逻辑类似,不必两套都背。
- FDE 现场怎么说? 先澄清问答类型(段落 / 全局 / 要多步工具),再选 RAG 深度与是否要 Agent。