AI初认识 (Retrieval-Augmented Generation,RAG,检索增强生成)

4 阅读4分钟

一、RAG介绍

1. LLM的缺陷,为什么需要RAG

问题RAG 的解决方案
知识过时(LLM的知识不具备自动更新能力,无法获取最新信息)检索最新数据,确保答案实时更新
缺乏专业领域知识(LLM不知道你的专业领域或业务知识)连接企业文档、数据库等内部知识源
模型幻觉基于检索到的真实信息生成,减少虚构
训练成本高无需重新训练模型,只需更新外部知识库

2. RAG概念

RAG(Retrieval Augmented Generation,检索增强生成)顾名思义,通过检索外部数据增强大模型的生成效果。

RAG为LLM提供了从某些数据源检索到的信息,并基于此修正生成的答案。RAG基本上是 Search + LLM 提示 的组合:通过大模型回答查询,并将搜索算法所找到的信息作为大模型的上下文。查询和检索到的上下文都会被注入到发送给LLM的提示语中。

3. RAG工作流程

RAG 的工作流程如下:

用户提问 
    ↓
【检索】从知识库/数据库/网络中搜索相关信息
    ↓
【增强】将检索到的信息 + 用户问题 组合成提示词
    ↓
【生成】大语言模型基于提供的上下文生成答案
    ↓
返回最终回答

image.png 带来的优点如下:

  1. 提高准确性:通过检索相关的信息,RAG可以提高生成文本的准确性。
  2. 减少训练成本:与需要大量数据训练的大型生成模型相比,RAG可以通过检索机制减少所需的训练数据量,从而降低训练成本。
  3. 适应性强:RAG模型可以适应新的或不断变化的数据。由于它们能够检索最新的信息,因此在新数据和事件出现时能够快速适应并生成相关的文本。

4. RAG搭建流程

image.png 加载文件 → 读取文本 → 文本分割 → 文本向量化 → 输入问题向量化 → 在文本向量中匹配出与问题向量最相似的 top k 个 → 匹配出的文本作为上下文和问题一起添加到 prompt 中 → 提交给 LLM 生成回答

索引(Indexing)

  • 数据清洗与提取:首先清理和提取各种格式的原始数据,如 PDF、HTML、Word 和 Markdown,然后将其转换为统一的纯文本格式。
  • 文本分割:为了适应语言模型的上下文限制,文本被分割成更小的、可消化的块(chunk)。
  • 向量化与存储:使用嵌入模型将文本块编码成向量表示,并存储在向量数据库中。这一步对于在随后的检索阶段实现高效的相似性搜索至关重要。
  • 总结:知识库分割成 chunks,并将 chunks 向量化至向量库中。

检索(Retrieval)

  • 查询向量化:在收到用户查询(Query)后,RAG 系统采用与索引阶段相同的编码模型将查询转换为向量表示。
  • 相似性计算:计算索引语料库中查询向量与块向量的相似性得分。
  • Top-K 筛选:系统优先级和检索最高 k(Top-K)块,显示最大的相似性查询。

例如,二维空间中的向量可以表示为 (x, y),表示从原点 (0, 0) 到点 (x, y) 的有向线段。。。向量的空间距离代表文本的语义相似度(距离越近,语义越相似) image.png

5.RAG 与 Fine-tuning 对比

  • RAG:让模型学会  "查资料" (知识来自外部)
  • Fine-tuning:让模型学会  "懂业务" (能力来自内部)
维度RAG(检索增强生成)Fine-tuning(微调)
核心原理将内部文档数据先进行 embedding,借助检索先获得大致的知识范围答案,再结合 prompt 给到 LLM,让 LLM 生成最终答案用一定量的数据集对 LLM 进行局部参数的调整,让 LLM 更好地理解业务逻辑
数据使用方式外部知识库(动态更新,不修改模型本身)训练数据集(固定数据集,修改模型参数)
对模型的影响不改变 LLM 的权重,只改变输入上下文改变 LLM 的权重,对模型进行参数微调
主要目标引入外部知识,弥补模型知识不足让模型更理解特定业务逻辑,提升 zero-shot 能力
更新成本(只需更新知识库,无需重新训练模型)(需要重新训练或微调模型)
适用场景需要实时更新知识的场景、私有知识问答需要特定风格、术语、逻辑的任务,如客服机器人、领域专家

6.RAG的一篇学习论文

学习资料地址:arxiv.org/pdf/2312.10…

image.png