一、RAG介绍
1、LLM的缺陷
- LLM的知识不是实时的,不具备知识更新.
- LLM可能不知道你私有的领域/业务知识.
- LLM有时会在回答中生成看似合理但实际上是错误的信息。
2、为什么会用到RAG
- 减少幻觉(Hallucination):回答基于真实资料,大幅降低 AI 编造事实的概率。
- 知识实时更新:只需更新外部文档库,无需重新训练昂贵的大模型。
- 接入私有数据:让通用 AI(如 GPT)使用企业内部文件、客户数据等私有知识。
- 可追溯、可验证:回答可附带来源链接 / 文档,方便审核与查证。
- 成本更低:相比全量微调(Fine-tuning),RAG 是更经济的领域适配方案。
总之:
- 提高准确性:通过检索相关的信息,RAG可以提高生成文本的准确性。
- 减少训练成本:与需要大量数据来训练的大型生成模型相比,RAG可以通过检索机制来减少所需的训练数据量,从而降低训练成本。
- 适应性强:RAG模型可以适应新的或不断变化的数据。由于它们能够检索最新的信息,因此在新数据和事件出现时,它们能够快速适应并生成相关的文本。
3、RAG 定义
RAG (Retrieval Augmented Generation 检索增强生成)是一种让大语言模型(LLM)在回答问题时,先从外部知识库检索相关信息,再基于检索到的内容生成回答的 AI 技术框架。
简单来说,就是让模型 **“开卷考试”**,先查资料再作答
4、RAG vs. 传统搜索 vs. 模型微调
- 传统搜索:返回文档片段,需要用户自己阅读总结;RAG:直接返回自然语言答案。
- 纯 LLM:知识有截止日期、易编造;RAG:基于外部实时 / 私有数据。
- 模型微调(Fine-tuning):修改模型权重、成本高、难更新;RAG:外挂知识库、成本低、易更新。
RAG文档:2312.10997
5、核心工作流程
RAG 主要分为离线构建与在线查询两大阶段:
1. 离线:构建知识库(Indexing)
- 文档处理:将 PDF、Word、网页等资料切割成小文本块(Chunk)。
- 向量化(Embedding):用 Embedding 模型将每个文本块转换成数值向量(代表语义)。
- 存储:将向量与原文存入向量数据库(Vector DB)
2. 在线:查询与生成
- 检索(Retrieval):用户提问 → 问题向量化 → 在向量库中做语义相似度搜索→ 找出最相关的几段文本。
- 增强(Augmentation):将用户问题 + 检索到的参考资料,拼接成一个新的 Prompt。
- 生成(Generation):将 Prompt 送入 LLM,模型严格依据参考资料生成最终回答。
6、典型应用场景
- 企业智能客服:基于产品手册、内部规章回答员工 / 客户问题。
- 法律 / 医疗助手:引用法条、病历、文献生成专业分析。
- 学术研究:总结论文、基于最新文献回答专业问题。
- 个人知识库:基于自己的笔记、邮件、资料进行问答。
7、核心技术栈(简版)
- 向量数据库:Milvus, FAISS, Pinecone, Chroma
- Embedding 模型:text-embedding-ada-002, BGE, E5
- LLM:GPT-4o, Claude 3, Llama 3, 通义千问
- 框架:LangChain, LlamaIndex
二、完整走一遍RAG(检索增强生成)流程。
场景:用公司内部产品手册,做一个智能问答客服。
一、先明确目标
用户问:
“咱们这款智能门锁支持指纹解锁吗?最多能录几个指纹?”
纯大模型会瞎编(幻觉),RAG 会先去查手册 → 再回答。
二、第 1 步:准备知识库(离线)
你有一份:智能门锁产品手册.pdf
1. 文档切分(Chunking)
把长 PDF 切成小段,比如:
- chunk1:产品外观、材质
- chunk2:解锁方式(指纹、密码、NFC)
- chunk3:指纹录入上限说明
- chunk4:电池续航
- ...
2. 向量化(Embedding)
把每个 chunk 变成一串数字向量(语义向量)。比如:
- “指纹最多支持 50 个” →
[0.12, 0.45, 0.67, ...]
3. 存入向量数据库
把向量 + 原文一起存起来,方便后面快速检索。
三、第 2 步:用户提问(在线)
用户问题:
“智能门锁支持指纹吗?能录多少个?”
1. 问题向量化
把问题也变成向量:[0.11, 0.46, 0.68, ...]
2. 向量检索(最关键一步)
系统在向量库里找最相似的 chunks:
- 最相似:chunk2(解锁方式)
- 次相似:chunk3(指纹上限)
返回结果:
chunk2:本门锁支持指纹、密码、NFC 三种解锁方式。chunk3:指纹最多支持录入 50 个。
三、第 3 步:构造 Prompt(增强)
把问题 + 检索到的资料一起喂给大模型:
请根据以下资料回答问题,不要编造。
资料:
1. 本门锁支持指纹、密码、NFC 三种解锁方式。
2. 指纹最多支持录入 50 个。
问题:智能门锁支持指纹吗?能录多少个?
四、第 4 步:大模型生成回答
模型输出:
这款智能门锁支持指纹解锁,最多可以录入 50 个指纹。
这就是 RAG:检索 → 增强 → 生成
五、RAG 检索增强生成 标准技术架构框图
六、RAG 干了啥
- 传统 LLM:闭卷考试,容易瞎编
- RAG:开卷考试,先查资料再答题
一句话极简版:先查资料 → 再给答案
检索 = 查书
增强 = 把书里内容放进问题里
生成 = AI 整理成通顺回答
先外挂知识库检索 → 再把资料喂给模型 → 最后生成可靠回答
三、RAG系统搭建流程
| 英文术语 | 中文释义 |
|---|---|
| User | 用户 |
| Query | 查询 |
| Input | 输入 |
| Output | 输出 |
| Knowledge base | 知识库 |
| loader | 加载 |
| Documents | 文档 |
| Spliter | 切分 |
| document snippets | 文档片段 |
| Embedding Machine | 嵌入器 |
| Embeddings | 向量化 |
| Vetor Database | 向量数据库 |
| Similarity query | 相似度查询 |
| Relevant Snippets | 相关片段 |
| Combine Context and Prompt | 结合上下文和提示 |
| Indexing | 索引 |
| Retrieval | 检索 |
索引(Indexing):索引首先清理和提取各种格式的原始数据,如PDF、HTML、Word、Markdown,然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成更小的、可消化的块【chunk】。然后使用嵌入模型将块编码成向量表示,并存储在向量数据库中。这一步对于在随后的检索阶段实现高效的相似性搜索至关重要。知识库分割成chunks,并将chunks向量化至向量库中。
检索(Retrieval):在收到用户查询(Query)后,RAG系统采用与索引I阶段相同的编码模型将查询转换为向量表示,然后计算索引语料库中查询向量与块向量的相似性得分。该系统优先级和检索最高k(Top-K)块,显示最大的相似性查询。
例如,二维空间中的向量可以表示为(x,y),表示从原点(0,0)到点(x,y)的有向线段
1.将文本转成一组浮点数:每个下标i,对应一个维度
2.整个数组对应一个n维空间的一个点,即文本向量又叫Embeddings
3.向量之间可以计算距离,距离远近对应语义相似度大小