RAG是什么
📍 In One Sentence
RAG从你的知识库检索相关文档,并将其与问题一起提供给LLM,因此模型从你的数据而非猜测中回答。
💬 In Plain Terms
无RAG = 闭卷考试(模型从记忆答题,可能编造细节)。有RAG = 开卷考试(模型先查看你的笔记)。仍可能读错笔记,但至少不会凭空造事实。
RAG结合一个查找相关信息的检索器和一个使用该信息撰写最终答案的生成器。 检索器根据用户查询搜索知识库(索引PDF、网页、内部文档)。生成器随后阅读检索的段落并生成引用或反映该内容的答案。
这不同于模型仅从其内部参数回答的简单语言模型调用。在RAG中,模型在每次提问时"阅读"新的上下文。截至2026年4月,RAG是企业AI系统需要从受保护文档、最新数据或私有知识库回答时的标准架构。
为什么RAG很重要
**RAG很重要,因为它减少幻觉并保持答案最新。** 纯LLM能够自信地在专业或最新主题上虚构细节。通过RAG,答案固定在你管理的文档中。
对隐私和治理也至关重要。与其用敏感数据微调模型,不如将该数据保留在自己的存储中,并仅在查询时将相关片段传递给模型。模型对你的内容推理但永不吸收。
当您要检索的文档不能离开自己的基础设施时,整条 RAG 管线都可以在自己的硬件上运行。要查看符合 GDPR 的架构、审计日志和部署模式,请参阅面向企业数据的本地 RAG。
RAG系统如何运作
典型RAG系统执行4个主要阶段:取入、索引、检索、生成。 每个阶段都可独立调优。
要查看在自己的 PDF 上用本地模型一步步运行该管线的完整流程,请参阅在自己的 PDF 上一步步搭建本地 RAG。
- 1取入:加载文档(PDF、知识库文章、工单、代码)并将其分成块。可附加元数据如标题、日期、作者或标签。
- 2索引:通过嵌入模型将每个块转换为向量表示,存储在向量数据库或搜索索引中。允许系统为新查询查找语义相似内容。
- 3检索:当用户提问时,系统向量化查询并从索引检索最相似块。过滤(日期范围、文档类型、用户权限)可在此阶段应用。
- 4生成:系统构建包含用户问题和检索块的提示,发送给语言模型。模型生成与提供的上下文一致的答案。
🔍 检索是瓶颈
RAG质量80%取决于检索。优秀的检索器配弱模型 = 劣质检索器配GPT-4o。花时间优化索引和分块。
RAG vs 微调
**RAG和微调解决不同问题,最适合组合使用。** 从RAG开始。仅当需要提示无法提供的一致行为变化时才添加微调。
| 因素 | RAG | 微调 |
|---|---|---|
| 知识来源 | 在查询时从文档检索 | 在训练期间烘烤到参数 |
| 数据新鲜度 | 实时—更新,答案改变 | 静态—需重新训练 |
| 敏感数据 | 保留在你的基础设施 | 吸收入权重 |
| 可追溯性 | 可追溯到源文档 | 无明确来源 |
| 更新成本 | 低—添加/删除文档 | 高—新训练 |
| 行为变化 | 不可能 | 可能 |
| 最适合 | 变化数据 | 稳定行为 |
| 用例 | Q&A、支持 | 法律、医学 |
🔍 RAG优先,其次微调
RAG添加知识(可逆:更新向量存储)。微调改变行为(永久:重新训练)。总是先用RAG获取内容,仅用微调调整风格/语调。
示例:无RAG vs 有RAG
RAG的优势在比较仅凭记忆的答案与基于检索文档的答案时变得明显。 这是内部政策问题的概念示例。
糟糕的提示—无RAG
"我们的出差费用报销政策是什么?"
模型根据通用模式猜测,可能对你的组织不准确。
优秀的提示—有RAG
"你是回答内部公司政策问题的助手。以下是相关政策摘录: ...检索的政策文本块... 仅基于这些摘录回答问题:"我们的出差费用报销政策是什么?"如果摘录中没有,说明未指定。"
在第二种情况下,模型固定在你的实际政策文档,处理缺失信息的方式很清晰。
向量数据库对比
选择合适的向量数据库取决于基础设施、延迟约束和合规要求。 以下是6个主要选项。
| 数据库 | 类型 | 最适用于 | EU数据驻留 | 自托管 | 大约成本 |
|---|---|---|---|---|---|
| Pinecone | 托管向量(云) | 快速原型、MVP、最小运维 | 是,eu-west-1 | 否 | $100-1,000/月(按使用量) |
| Weaviate | 向量开源 | 企业部署、混合搜索 | 是,自托管 | 是(Kubernetes) | 免费+基础设施($500-5,000/年) |
| Chroma | 向量轻量 | 原型、本地应用、演示 | 是,本地 | 是(Python) | 免费 |
| Milvus | 向量高性能 | 数百万向量、<100ms延迟 | 是,自托管 | 是(Kubernetes、Docker) | 免费(开源)或$500-2,000/月(支持) |
| Qdrant | 向量现代Rust | 高级过滤+向量、高性能 | 是,自托管 | 是 | 免费或$500-2,000/月(云) |
| pgvector(PostgreSQL) | PostgreSQL扩展 | 向量+SQL查询、简化基础设施 | 使用现有PostgreSQL | 是 | 免费(扩展)+现有PostgreSQL |
多模型工作流中的RAG
当与多模型和结构化提示结合时,RAG变得更强大。 你可以:
- 用一个模型进行嵌入和检索,另一个用于生成答案。
- 在检索上下文之上应用推理重点的提示,如chain-of-thought或TRACE风格结构。
- 在多个模型上运行相同的RAG提示以比较每个模型如何使用相同文档。
🔍 相同文档,不同答案
在GPT-4o、Claude Opus 4.7、Gemini 2.0 Pro上用同样的RAG提示对相同向量存储做测试。你会看到长度、风格、文档利用率不同。PromptQuorum允许路由相同查询到多个模型并做对比。
这种模块化是RAG的最大优势:升级各个组件—检索器、索引、生成器、提示—而无需重建整个系统。
实用建议:为中国企业优化
针对中国企业部署RAG的关键考虑:
- 数据驻留:使用符合数据安全法(数据安全法)要求的本地或自托管向量数据库。确保所有敏感企业数据保留在你的基础设施内。
- 合规性:记录所有知识来源和检索日志。CAC生成式AI服务规定(2023)要求在生产前审查和批准所有检索源。
- 模型选择:对于私有数据,优先选择本地部署的开源LLM(如通过Ollama的LLaMA或Mistral)而非云API。这确保数据隐私。
- 典型用例:客户支持系统(阿里巴巴、字节跳动、腾讯)、内部知识管理、合规文档查询系统。
受管制环境中的RAG
RAG是管理敏感数据的首选—它永不进入模型参数。
欧盟 / GDPR : 处理个人数据的EU组织的推荐架构。文档保留在你的基础设施,仅相关片段在查询时传递给LLM。个人数据不传输给外部模型提供商。直接满足GDPR第46条。EU AI法第11条要求记录知识源—带版本管理文档存储的RAG直接满足。德国BSI指南为敏感数据处理推荐本地或自托管向量数据库。
日本(METI): AI辅助决策指南要求记录使用的数据源。带有策划和版本管理文档的RAG精确生成此审计线索—每个答案可追溯到查询时检索的特定文档。日本企业部署通常将RAG与本地推理(通过Ollama的LLaMA)结合,确保所有数据保留在组织基础设施。
中国(CAC): CAC生成式AI服务规定(2023)要求在生产AI系统中使用前记录和审查检索数据源。带有批准的国内源的RAG架构是企业AI的标准合规架构。确认向量数据库提供商遵守中国数据安全法(数据安全法)数据驻留要求。
常见错误
❌ 为模型已知的信息使用RAG
Why it hurts: 检索模型已准确掌握的内容(如Python标准库)只是浪费令牌和增加延迟,没有价值
Fix: 将RAG保留给特定领域、专有或最新信息。一般知识已在模型参数中。
❌ 块大小太小(<100字)
Why it hurts: 失去周围上下文。政策句子若无其邻近段落通常难以理解,模型无法准确解释
Fix: 以200-500字为基线。在你的领域代表查询上测试块大小。
❌ 没有相关性阈值
Why it hurts: 所有检索文档都传给LLM,强迫其处理无关上下文,导致噪声和错误增加
Fix: 设置最小分数:>0.7余弦相似度。不达标的文档返回"未在知识库中找到"。
❌ 不分离测试检索和生成质量
Why it hurts: 答案错误可能源于检索失败(取错文档)或生成失败(模型推理),原因不明
Fix: 在评估整个管道前,在20+代表查询上独立测试检索器。
❌ 忽视元数据(日期、部门、权限)过滤
Why it hurts: 大型存储无过滤会返回陈旧、机密或无权限访问的内容
Fix: 在取入时附加元数据,在检索时应用过滤。实施基于角色的访问控制(RBAC)。
实施RAG
- 1识别AI需要回答的知识源(文档、PDF、数据库、API)。 2026年4月,最常见的源是内部PDF、知识库文章、产品文档。客户支持:常见问题、产品文档、过去工单。研究:论文库、外部数据库。
- 2用向量数据库(Pinecone、Weaviate、Chroma、Milvus)将静态文档转换为可搜索的嵌入。 过程:分块文档、向量化、存储用于快速语义搜索。
- 3在查询时:(1)向量化用户问题、(2)检索最相似文档、(3)将检索的文档和问题传递给LLM。 例:用户问"重置密码?" → 系统找到相关常见问题 → LLM生成答案,基于那些文档而非训练数据。
- 4对大型文档集合(100+页),实现分块策略:200-500字块,10-20%重叠。 平衡理解和精度。在代表查询上测试块大小。
- 5验证检索文档在生成前实际包含答案。 坏检索=坏LLM。使用相关性阈值:仅当检索文档超过相似度分数(如>0.7余弦相似度)时才传递给LLM。
🔍 混合搜索的优势
结合向量搜索(语义)+ BM25(关键词)。Weaviate和Qdrant原生支持。查询"客户合同2024":语义抓住段落,BM25抓住年份。合并 = 更好的召回。
延伸阅读
- 什么是提示工程? — 与RAG检索上下文一起工作的提示设计基础
- Chain-of-Thought提示 — 将Chain-of-Thought与RAG结合以进行检索文档上的复杂多步推理
- 提示注入和安全 — 通过检索文档的间接注入是RAG的主要安全风险
- 开源vs专有LLM — 为RAG生成阶段选择云或本地LLM
- AI限制—LLM无法做什么 — 理解为什么需要RAG来克服LLM知识截止和幻觉限制
- 构建质量检查 — RAG输出验证模式:幻觉检测、来源验证
常见问题
RAG(检索增强生成)是什么?
生成答案前从知识库检索相关文档的AI技术。答案基于你提供和管理的文档,而非模型训练。
RAG如何减少幻觉?
将答案固定在检索文本。提示指示模型仅从提供摘录回答,标记缺失信息。消除模型编造细节的动机。
RAG与微调的区别?
RAG在查询时检索外部知识,微调永久修改参数。RAG适合变化数据,微调适合一致行为。
2026年最佳向量数据库?
Pinecone(托管)、Weaviate(开源)、Chroma(轻量)、Milvus(企业)。EU首选自托管。
最优块大小?
200-500字,10-20%重叠对大多有效。<100丧失上下文,>1000降低精度。在你的查询上测试。
能用Ollama(本地)使用RAG?
可以。无模型限制。本地LLaMA 3.1、Mistral via Ollama/LM Studio:数据留在你的硬件。
RAG能用GPT-4o、Claude、Gemini?
可以。三者都接受检索上下文。Claude Opus 4.7擅长标记上下文不足。GPT-4o简洁。
相关性阈值是什么?
最小相似度分数。0.7余弦=70%以上语义匹配必须。以下返回"未找到"。
RAG优于大上下文窗口?
大文档集合:是的。毫秒内搜索数百万文档,低成本因为仅传递相关块。
如何防止通过RAG的注入?
不信任检索内容如指令。提示中清晰分隔。验证格式和来源后才包含。
生产RAG管道?
取入、分块、嵌入、搜索、过滤、提示、生成、引文。每个阶段独立可测。
没有向量数据库的RAG?
小集合可以。<10,000块的BM25关键字搜索。大规模语义搜索需数据库。
来源
- Lewis, P., et al. (2020). "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks." NeurIPS 2020. https://arxiv.org/abs/2005.11401
- Gao, Y., et al. (2023). "Retrieval-Augmented Generation for Large Language Models: A Survey." arXiv:2312.10997. https://arxiv.org/abs/2312.10997
- Guu, K., et al. (2020). "REALM: Retrieval-Augmented Language Model Pre-Training." ICML 2020. arXiv:2002.08909. https://arxiv.org/abs/2002.08909
- OpenAI. (2024). "Retrieval and Augmentation in Language Models." Platform documentation. https://platform.openai.com/docs/guides/prompt-engineering
常见问题
RAG是什么?
RAG(检索增强生成)不只依赖模型的训练数据,而是先从知识库中检索相关文档,然后生成答案。答案根植于你的文档,而非凭空捏造。
RAG如何减少幻觉?
RAG将答案锚定在取得的文本中。提示词指导模型只基于提供的摘录回答,并标记缺失信息。这消除了模型编造看似合理的细节的动机。
RAG与微调有什么区别?
RAG在查询时检索知识并添加到提示词中。微调永久性修改模型参数。RAG适合数据变化的情况;微调适合稳定行为。
RAG适用于任何语言模型吗?
是的。RAG模型无关。任何接受带上下文提示的LLM都可以使用检索到的文档。这包括GPT-4o、Claude Opus、Gemini、开源模型如Llama,以及通过Ollama的本地模型。
RAG的最优块大小是多少?
对于大多数情况:每块200-500字,相邻块之间有10-20%的重叠。较小块(50-100字)提高精度;较大块(500+字)增加上下文但可能包含无关段落。
RAG中的关联性阈值是什么?
这是相似度分数的最小值。如果检索文档的相似度低于阈值(例如0.7余弦相似度),就不会传递给LLM。这防止低质量内容混淆模型。
RAG比大上下文窗口更好吗?
对于大规模文档集合是的。RAG使用语义相似度在毫秒内有效搜索数百万文档。大上下文窗口成本更高,且需要提前知道包含哪些文档。
能结合RAG和微调吗?
可以。微调模型改进风格、语调或领域行为。然后使用RAG将其根植于最新事实。这结合了两者的优势:一致行为+事实依据。
如何防止RAG中的提示词注入攻击?
在将检索内容包含在提示词中之前进行验证。在系统指令和检索文本之间使用清晰分隔符。不要将检索内容视为可执行指令。监控可疑模式。
RAG需要向量数据库吗?
不是小型集合。BM25关键词搜索可用于少于10,000个文档,无需向量。对于较大集合中的语义相似性,向量数据库(Weaviate、Pinecone、Chroma、Milvus)是必需的。