前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:https://www.captainai.net/dongkelun
上篇用 100 行代码跑通了 RAG 全流程。但真要落地到项目里,你得选一个趁手的框架。
市面上 RAG 相关的工具一大堆,最常被提到的几个:LangChain 、LlamaIndex 、Dify。这次把这几个都拉出来做个横向对比,附上 Haystack、Cohere 等备选方案的简要说明,以及向量数据库怎么选。
三大主流框架概览
| LangChain | LlamaIndex | Dify | |
|---|---|---|---|
| 定位 | 通用 LLM 应用框架 | 数据索引 & 检索框架 | 低代码 AI 应用平台 |
| 上手难度 | 中等 | 简单 | 最简单 |
| 灵活性 | 高 | 中高 | 低(但有 GUI) |
| 代码量 | 100-200 行 | 50-100 行 | 点点点 + 少量配置 |
| 适合谁 | 开发者 | 数据/ML 工程师 | 非技术 & 快速验证 |
LangChain
RAG 爆火的那阵子,LangChain 是最先跑出来的框架。它提供了一套标准化的 RAG 流程:加载文档 → 切段 → embedding → 存向量库 → 检索 → 生成。
优点:
- 生态最大,社区最活跃,遇到问题基本都能搜到答案
- 支持几百种模型和向量数据库的集成
- 提供完整的 Agent 能力,可以跟 RAG 混着用
缺点:
- 抽象层太厚了。一个小功能背后可能套了七八层 class,出了问题很难追
- API 变得快。去年写的代码今年可能就 deprecated 了
- 小项目用着还行,复杂场景会被它的抽象折磨
适合场景: 团队有 Python 开发能力、需要高度定制、或者生态集成是刚需。
不推荐: 只为了做一个简单的 RAG demo。
LlamaIndex
LlamaIndex 是专为"索引和检索"设计的。如果说 LangChain 是个瑞士军刀,LlamaIndex 就是专门做检索的那把主刀。
优点:
- 检索相关的功能更精细。支持多种索引方式(向量索引、树索引、关键词索引)、多种检索策略
- 代码更薄,好理解。你要自己实现"检索后做些逻辑处理"时比 LangChain 舒服
- 数据连接器(Data Connectors)很丰富,可以直接从 Notion、Google Drive、Slack 等 100+ 数据源导入
缺点:
- Agent 能力弱。要做复杂的 Agent 流程还得配 LangChain
- 社区比 LangChain 小,遇到冷门问题可能不好搜
适合场景: 数据检索是核心需求、需要从各种数据源导入、或者觉得 LangChain 太重。
Dify
Dify 是个开源的 AI 应用平台。它比较特别------不用写代码。拖拖拽拽、填填配置就能搭起一个带 RAG 的 AI 应用。
优点:
- 零代码。上传文档 → 自动切段和 embedding → 拖一个问答节点 → 配好模型 → 发布
- 内置用户管理、API 管理、日志监控------这些 LangChain 和 LlamaIndex 都不管
- 可以一键发布成 web 应用或 API
缺点:
- 灵活度有限,定制复杂逻辑很费劲
- 要部署服务(虽然官方有云版本)
适合场景: 非技术人员、快速验证想法、或者需要一个带管理后台的企业内部知识库。
其他值得关注的
Haystack
老牌 NLP 框架,面向生产环境。提供了完整的 pipeline 机制,适合做企业级搜索系统。
跟 LangChain 比,它的 pipeline 设计更成熟、更稳定。但 Agent 能力几乎为零。
适合: 对检索质量要求高、需要生产级部署的企业场景。
Cohere
Cohere 是商业方案,提供端到端的 RAG 服务(embedding + 检索 + 生成)。不需要自己搭向量库,不需要自己搭模型。
适合: 不想折腾基础设施、预算充足、快速上线。
向量数据库怎么选
RAG 绕不开向量数据库。几款主流选择:
| 部署方式 | 适合场景 | 注意事项 | |
|---|---|---|---|
| Chroma | 嵌入式/本地 | 原型开发、个人项目 | 不能分布式,生产慎用 |
| Milvus | 分布式 | 生产环境、海量数据 | 部署运维成本较高 |
| Pinecone | 云服务(SaaS) | 不想管运维 | 收费,量大不便宜 |
| Qdrant | 自部署或云 | 生产环境 | Rust 写的,性能不错 |
| Weaviate | 自部署或云 | 需要混合搜索 | 同时支持向量+关键词 |
建议:
- 原型阶段:Chroma,零配置直接用
- 小规模生产:Qdrant/Milvus(自部署)或 Pinecone(云)
- 需要高精度搜索:Weaviate(混合检索能力强)
怎么选
按你的情况对号入座:
你有多强的开发能力?
├─ 不会写代码 → Dify(零成本搭起来)
├─ 会写 Python,只做检索 →
│ ├─ 数据源多(Notion/GDrive 等)→ LlamaIndex
│ └─ 集成模型种类多 → LangChain
└─ 会写 Python,RAG + Agent 混用 → LangChain(Agent 生态好)
你的项目阶段?
├─ 快速验证想法 → Dify(GUI 拖拽,几分钟出效果)
├─ 原型开发 → Chroma + LangChain/LlamaIndex(最快跑通)
├─ 小规模上线 → Qdrant + 你选的框架
└─ 企业级 → Milvus + Haystack(检索质量优先)或 Cohere(省心)
你的文档量?
├─ 几十篇 → 随便选,差别不大
├─ 几千篇 → 注意检索质量,选 LlamaIndex(索引策略丰富)
└─ 几十万篇 → 向量数据库是关键(Milvus/Pinecone),框架反而不是瓶颈
结尾
工具这东西,没有最好的,只有最适合的。
如果你只是想知道"写篇文章用哪个",答案是:原型阶段 Chroma + 你自己最熟悉的框架。生产阶段,按上面的决策树走一遍就行。
下篇聊聊 RAG 和长上下文的关系------有了 128K 上下文窗口,RAG 还有必要吗?