【大模型知识点】检索增强生成(Retrieval Augmented Generation,RAG)简要介绍

RAG介绍

  • 1. RAG是什么?
  • 2. RAG的应用
  • 3. 为什么需要 RAG for LLM?
  • 4. RAG 的一般流程
  • 5. 检索优化
  • 6. 重排序

1. RAG是什么?

Retrieval-Augmented-Generation : 检索-增强-生成

一句话总结:通过引入外部数据库或知识库中的信息来增强LLM生成内容

【大模型知识点】检索增强生成(Retrieval Augmented Generation,RAG)简要介绍_第1张图片

2. RAG的应用

  • 问答系统:RAG从外部知识库中检索相关信息,生成更加准确可靠的答案。如医疗、法律领域的专业问答系统
  • 智能助手:RAG可用于构建智能助手,结合聊天记录回答用户的问题、提供信息和执行任务

3. 为什么需要 RAG for LLM?

LLMs的挑战及解决:

  • 幻觉:生成不准确或错误的信息 ——> 可参考外部知识库
  • 过时知识:模型无法自动更新知识 ——> 外部知识库可实时更新
  • 推理过程不透明、不可追溯:可解释性差 ——> LLM生成的回复是基于检索结果得到的

4. RAG 的一般流程

RAG 的一般流程如下:

  • Index:将各种形式(PDF, HTML, Markdown, Word等)的原始数据转换为统一的纯文本形式,分块后用embedding模型将每一个Chunk转换为向量形式,存入向量数据库

  • Retrieval:用 embedding模型将问题转换为嵌入向量,与向量数据库中的 Chunk embedding计算相似度,得到Top K个Chunk

  • Generation:“原问题+检索到的Chunk”做Prompt,引导LLM生成回复

一个RAG的典型例子如下,图参考自论文《Retrieval-Augmented Generation for Large Language Models: A Survey》

【大模型知识点】检索增强生成(Retrieval Augmented Generation,RAG)简要介绍_第2张图片

为了对 RAG 的质量做优化,一般有以下优化点:

1)在检索前:提高检索到的文本的质量

  • 优化索引结构:提高被索引内容的质量
  • 优化原始查询:使原始问题更加清晰,更适合检索任务

2)检索:提高检索性能

  • 稀疏检索:通过分析查询和文档中关键词的频率和分布来确定文档的相关性,如BM25
  • 密集检索:将文本块和用户查询通过嵌入模型转换为向量表示,然后通过计算向量之间的相似度检索最相关的文档
  • 混合检索:结合稀疏检索和密集检索
  • 微调嵌入模型:微调嵌入模型使其与文本更拟合

3)在检索后:对检索结果重排序 / 将检索到的内容有效地与查询集成

  • 重排序:将检索到的Top K个内容重新排序
  • 上下文压缩:精简检索的内容,减少输入噪声

下面主要先介绍检索和重排序的常见方法。

5. 检索优化

​1) 稀疏检索(Sparse Retrieval)​

基于关键词匹配的检索方法,如BM25、TF-IDF等。这些方法通过计算查询与文档中关键词的词频和文档频率来评估相关性。优点是计算速度快,适合处理精确关键词匹配的场景,但语义理解能力有限。且其无训练性质,这使得检索性能严重依赖于数据库和查询的质量

2)​稠密检索(Dense Retrieval)​

将查询和文档映射到低维向量空间,通过计算向量相似度(如余弦相似度)来评估相关性。稠密检索能够捕捉语义信息,适合处理复杂语义查询。密集检索通常是可训练的,因此具有更大的灵活性和适应潜力。RAG中的一种常见的检索器设计是使用BERT结构构建双编码器(Bi-Encoder)(一个用于查询,另一个用于文档)

密集检索和稠密检索分别适用于什么场景?

密集检索利用深度学习技术将文本映射到高维向量空间,通过计算向量之间的相似度来检索相关文档。它适合以下场景:

  • 复杂语义理解:密集检索能够捕捉文本的深层语义信息,适合需要理解复杂语义的任务,如自然语言理解、智能问答系统等。
  • 语义匹配:在处理同义词、转述或表达相同意思的不同方式时,密集检索表现出色。
  • 特定领域任务:在需要高精度检索的领域(如医学、法律等),密集检索可以通过微调模型来提升性能。

稀疏检索一般基于词频进行检索,适合以下场景:

  • 高效检索:稀疏检索计算速度快,适合对检索效率要求较高的场景,如大规模文档检索、日志分析等。
  • 关键词匹配:在处理明确关键词的查询时,稀疏检索(如BM25)能够提供有效的结果。
  • 资源受限场景:稀疏检索对计算资源要求较低,适合在计算资源有限的环境中部署

3)​混合检索(Hybrid Retrieval)​

结合稀疏检索和稠密检索的优势,例如同时使用BM25和向量相似度进行检索。这种方法既能处理精确关键词匹配,又能捕捉语义信息,提高检索的全面性

在混合检索中,如何结合 稀疏检索BM25 (基于关键词的检索)和 稠密检索向量检索 (基于语义的检索)的结果?

1)加权汇总:对 BM25 和向量检索的分数分别赋予权重,然后加权求和

2)重排序:先用 BM25 获取初步结果(如 Top-N 文档)。对初步结果使用向量检索进行重排序。

3)基于规则的融合:定义规则来决定如何结合 BM25和向量检索的结果。例如:优先选择两种检索方法都返回的文档。然后根据文档的排名进行加权。

4) 倒数排名融合 (RRF) :计算每个元素在不同列表中的排序的倒数的和,然后倒序比较

4)假设文档嵌入HyDE

HyDE,全称为Hypothetical Document Embeddings(假设文档嵌入),一种用于改进信息检索的方法。它的核心思想是利用大型语言模型(LLM)生成一个与查询相关的假设文档,然后通过嵌入将其转换为向量表示,最后在文档库中检索与假设文档相似的真实文档。

详细步骤:

  • 生成假设文档:当用户输入一个查询时,HyDE使用LLM根据查询生成一个假设文档。这个文档是虚构的,但它捕捉了查询的核心意图和相关性模式。
  • 文档嵌入:将生成假设的文档转换为嵌入向量
  • 相似度检索:文档库中搜索与假设文档嵌入最相似的真实文档

HyDE的优势:

  • 无需人工标注数据:HyDE能够在没有人工标注数据的情况下进行zero-shot检索,适用于缺乏训练数据的场景
  • 提高语义对齐:通过生成假设文档,HyDE能够更好地对齐查询和文档的语义空间,尤其在原始查询较短或措辞不准确时效果显著
  • 提升检索效果:HyDE通过生成的假设文档增强检索结果的相关性,提高检索的准确性和召回率

5)微调嵌入模型

在上下文与预训练语料库显著偏离的情况下,如医疗保健、法律实践和其他充斥着专有术语的专业领域,用领域数据集进行embedding模型微调可以减轻这种差异。

6. 重排序

重排序(Re-ranking) 技术用于对初步检索结果进行重新排序,以提高系统的准确性和生成质量。

在这里先介绍一下Cross-Encoder Model 和 Bi-Encoder Embedding Model

Bi-Encoder 将 Query 和 文档 分别编码为向量,并通过向量相似度进行匹配。常用于密集检索
Cross-Encoder 直接比较 (Query, 文档),并返回一个匹配分数。常用于重排序

【大模型知识点】检索增强生成(Retrieval Augmented Generation,RAG)简要介绍_第3张图片

重排序常用技术:

1) 基于重排序模型(Reranker)

这些模型专门用于评估文档与查询之间的相关性,一般来说直接将查询和文档拼接起来做输入,并输出一个相似度分数。这些模型通常使用交叉熵损失函数进行优化,常见的重排序模型包括BGE-Rerank和Cohere Rerank等

2)基于大语言模型(LLM)

基于大语言模型(LLM)的重排序方法利用LLM的强大语义理解能力,直接对文档和查询的相关性进行评估和排序。现有的涉及 LLM 的重排序方法大致可分为三类:

  • 对LLM进行微调,使其专门用于重排序任务。这需要准备标注好的数据集,包含查询和相关文档对,用于训练LLM
  • 通过设计合适的提示(Prompt),引导LLM对文档进行评分或排序。这种方法不需要额外的训练,而是通过构造特定的输入格式,让LLM理解任务并输出结果
  • 直接利用LLM的语义理解能力对所有候选段落进行相关性排序。具体来说,模型直接生成一个按相关性排序的文档列表,如RankLLM

参考:Advanced RAG 04:重排序(Re-ranking)技术探讨

你可能感兴趣的:(AI知识,RAG,重排序,大模型,召回,检索)