RAG 学习笔记
1. 什么是 RAG
RAG = Retrieval-Augmented Generation(检索增强生成)
核心思路:先搜再答。
为什么需要 RAG?
大模型(ChatGPT、Claude 等)存在以下局限:
- 不知道训练截止日期之后的新信息
- 无法访问私有数据(公司文档、项目资料等)
- 细分领域的专业知识可能不准确
RAG 的工作流程
用户提问 → 检索相关文档 → 把文档 + 问题一起给大模型 → 大模型基于文档生成回答
分两步:
- Retrieval(检索):从知识库/数据库/搜索引擎中搜出和问题相关的资料
- Generation(生成):把搜到的资料喂给大模型,让它基于资料来回答
举例
问:“我们公司的退货政策是什么?”
- 没有 RAG:大模型凭记忆瞎编一个退货政策
- 有 RAG:先从公司文档库搜到退货政策原文,再让大模型基于原文回答,准确且有据可查
2. 什么是 Baseline
Baseline(基线/基准)= 用来做对比参考的”最低标准”系统。
在实际项目中的作用:
- 先搭一个简单的、能跑通的基础版本作为 baseline
- 再开发更复杂的方案
- 对比两者效果,证明新方案更优
类比
你要开发一个新的排序算法,先用”冒泡排序”跑一遍作为 baseline,然后看新算法比冒泡排序快多少。
3. 搜索 API 工具
RAG 系统中”检索”部分需要搜索能力,以下是两个常用的搜索 API:
Tavily
- 专门为 AI/LLM 设计的搜索 API
- 返回已整理好的文本,可直接喂给大模型
- 有免费额度,LangChain 等框架常用它做示例
- 特点:开箱即用,省事
Exa
- 语义搜索引擎 API,用向量/语义匹配而非纯关键词
- 能搜网页、论文、公司信息等
- 返回数据较原始,可能需要自己清洗
- 特点:搜索质量高,但需额外处理
对比
| Tavily | Exa | |
|---|---|---|
| 定位 | 为 AI 专门设计 | 通用语义搜索 |
| 上手难度 | 简单,开箱即用 | 稍复杂,需清洗数据 |
| 返回数据 | 已整理好的文本 | 较原始 |
| 适合场景 | 快速搭 RAG 原型 | 高质量语义搜索 |
4. 讨论背景(来源)
来自社区讨论截图,用户 litchii 的场景:
- 目标:做一个类搜索引擎的多智能体(Multi-Agent)工程流
- 问题:用 Wikipedia 检索当 baseline,但搜索结果总是匹配到其他领域的同义词,效果差
- 解决方案:接搜索引擎 API + 大模型,搭一个 RAG 系统作为 baseline
- 社区建议:使用 Tavily 或 Exa 作为搜索 API
5. 关键概念速查
| 概念 | 一句话解释 |
|---|---|
| RAG | 给大模型配搜索助手,先查资料再回答 |
| Baseline | 用来垫底做对比的参考系统 |
| Tavily | 为 AI 设计的搜索 API,开箱即用 |
| Exa | 语义搜索 API,质量高但需清洗数据 |
| Multi-Agent | 多个 AI 智能体协作完成任务的架构 |
| 语义搜索 | 按语义/含义匹配,而非纯关键词匹配 |
6. 与本知识库其他章节的关联
- RAG 检索”示例题”而不是”知识文档”的变种:Medprompt方法论解析.md——动态 few-shot 本质就是 RAG 思路,只不过检索的是”最相似的历史例题”
- RAG 在真实业务的落地:宠物CT影像AI辅助诊断方案.md——第一阶段就是”DICOM 切片向量化 + 历史病例相似检索 + 多模态大模型生成诊断”的典型 RAG 工作流
- RAG 用到的多模态调用:LLM接口规范实战.md——OpenAI 兼容接口的
content数组、图片 Base64 编码、Geminiparts格式等 - 自建 RAG 的三件套深度补全:Embedding-Reranker-向量数据库.md——Embedding 模型选型 + 7 大向量库横评 + Reranker 精排 + 完整 RAG Pipeline 示例