Docs · App Dev Guide
大模型应用开发
从 Prompt 工程到 AI Agent,一站式覆盖大模型应用开发全链路 —— 让你能在 1 周内跑出生产级 MVP。
RAG · 概览与典型场景
RAG(Retrieval-Augmented Generation)= 检索增强生成。这是 LLM 应用中工程难度最高、效果差距最大、最值得深入的一个模块。
一句话理解 RAG
回答前先去查资料。把外部知识库里相关的片段拼到 prompt 里,让模型基于这些资料回答而非凭记忆瞎编。
用户问题
↓
[ 检索 ] 从知识库找相关片段
↓
[ 拼接 ] 片段 + 问题一起喂给 LLM
↓
[ 生成 ] 模型基于片段作答
↓
准确回答(且能引用来源)
RAG 解决什么问题
| 问题 | 没有 RAG | 有 RAG |
|---|---|---|
| 知识截止 | "我不知道 2025 年的新闻" | 从最新文档库查实时信息 |
| 私域知识 | "我不知道你公司的政策" | 查内部文档库 |
| 幻觉 | 经常编造看似合理的错误 | 基于引用的事实回答,幻觉率↓80% |
| 可解释性 | 答案凭空出现 | 能指出"答案来自文档 X 的第 N 段" |
| 更新成本 | 改答案要重训模型 | 改文档库即时生效 |
| 数据隔离 | 训练数据混在公共模型里 | 私域数据独立存储 |
典型应用场景
场景 1:企业内部知识问答
- 员工查 HR 政策、报销流程、技术文档
- 客服查产品手册、常见问题
- 律师查法规、案例、合同模板
场景 2:技术文档助手
- API 文档智能问答(如 Stripe / Notion 自家产品)
- 开源项目问答(用 LangChain 文档训自己的版本)
- 代码库问答(基于公司 codebase)
场景 3:垂直领域专家
- 医疗:基于最新论文 + 临床指南
- 金融:基于研报 + 财报 + 监管文件
- 学术:基于论文库的科研问答
场景 4:客户智能客服
- 售前:基于产品手册 + 价目表
- 售后:基于工单历史 + 解决方案库
RAG vs 长上下文(Long Context)
2024 后模型上下文越来越长(Gemini 2M、Claude 200K),很多人问:「直接把所有文档塞进 prompt 不就行了?」
| 维度 | 长上下文 | RAG |
|---|---|---|
| 数据量上限 | 几十万 token(一本书) | 无限(亿级文档) |
| 单次成本 | 每次都付全 context 费用 | 只付检索到的片段 |
| 延迟 | 长 prompt 推理慢(10s+) | 快(1-2s) |
| 准确性 | 长 context 中间内容易丢失("lost in middle") | 精准定位相关片段 |
| 实时更新 | 重新打包整个 prompt | 修改单篇文档即可 |
| 权限控制 | 全部可见 | 可按用户过滤检索范围 |
结论:
- 数据量小(< 50K token)+ 全量都可能相关 → 长上下文
- 数据量大 + 只用少量相关片段 → RAG
- 实际生产 90% 用 RAG
RAG 的「难度地图」
RAG 看起来简单,做好极难。难度按层次:
Level 1: Hello World 能跑
↓ 简单:30 行代码搞定
Level 2: 单文档百问百答
↓ 中等:搞定 chunking + embedding
Level 3: 多文档跨知识库
↓ 难:召回率优化
Level 4: 千万级文档生产
↓ 很难:向量库选型 + 混合检索 + 重排
Level 5: 准确率达标可上线
↓ 极难:评测 + 持续优化
Level 6: 多模态 + 实时 + 个性化
↓ 顶级:行业最前沿
新手很容易在 Level 1 跑通后误以为完工,实际生产可能要 Level 4+。
RAG 的核心数据:检索质量
99% 的 RAG 问题不是 "LLM 不行",而是 "没检索到正确的片段"。
检索失败的常见原因:
- 切片不当:相关内容被切成两段,单独看都不完整
- Embedding 不准:语义相近但没召回
- Top-K 太小:相关片段在第 6 名,但只取前 5
- 没有 Rerank:向量检索召回的顺序不一定对
- 查询本身有歧义:用户问"价格",文档里说"售价"
改进 RAG = 改进检索。下面几节会详细讲。
RAG 全栈一览
完整 RAG 系统需要的所有组件:
┌──────────────────── 数据准备 ────────────────────┐
│ 文档源 (PDF/Word/Markdown/HTML/网页/数据库) │
│ ↓ │
│ 解析器 (unstructured / llamaparse / 自研) │
│ ↓ │
│ 切片器 (按字符/按 token/按语义/递归/Late chunking) │
│ ↓ │
│ Embedding 模型 (BGE / OpenAI / Voyage / Cohere) │
│ ↓ │
│ 向量数据库 (Qdrant / Weaviate / Milvus / pgvector)│
│ + BM25 索引 (Elasticsearch / Tantivy) │
└────────────────────────────────────────────────┘
┌──────────────────── 查询时 ────────────────────┐
│ 用户 query │
│ ↓ │
│ Query 改写 (HyDE / Multi-query / Step-back) │
│ ↓ │
│ 向量召回 + BM25 召回 (Hybrid Search) │
│ ↓ │
│ Reranker (Cohere / BGE-reranker / Jina) │
│ ↓ │
│ 组装 Prompt (Top-K 片段 + 问题 + 系统指令) │
│ ↓ │
│ LLM 生成 │
│ ↓ │
│ 引用追溯 / 后处理 / 缓存 │
└────────────────────────────────────────────────┘
┌──────────────────── 持续优化 ────────────────────┐
│ 评测集 (人工标注 + LLM-as-Judge) │
│ 在线监控 (用户反馈 + bad case) │
│ 数据迭代 (清洗 / 补充 / 重新切片) │
└────────────────────────────────────────────────┘
每个组件都有讲究。下面几节逐一深入。
学习路径
| 章节 | 学完后能做什么 |
|---|---|
| 标准流水线 | 跑通最小 RAG demo |
| 切片策略 | 设计合理切片,避免上下文割裂 |
| Embedding 选型 | 中英文场景挑对模型 |
| 向量数据库 | 千万级数据下选对存储 |
| 混合检索 + Reranker | 把准确率从 70% 提到 90% |
| 进阶模式 | 跨文档推理、Self-RAG、GraphRAG |
下一节:RAG 标准流水线 —— 跑通第一个 demo。