LLM的出现引发了热潮,但是不可忽视的是LLM的“幻觉”问题,而RAG(检索增强生成,Retrieval Augmented Generation)刚好提供了应对之法:通过检索外部数据并将其整合到生成过程中,从而增强了模型回复的准确性和相关性。

1 初级RAG

1.1 RAG工作流

  • 1 索引构建:语料库被划分为离散的块,然后使用编码器模型构建向量索引
  • 2 查询:RAG根据查询与索引块(Indexed Chunk)的向量相似度识别并对块进行检索。
  • 3 生成:模型根据检索块(Retrieved Chunk)中获取的上下文信息生成回复。

1.2 RAG(检索,增强,生成)的三大困境

  • 1 检索:精确率低和召回率低的问题。
    • 精确率低:检索得到的索引块和上下文不相关;
    • 召回率低:检索的索引块不全,向量库中还有大量索引块未被检索得到;
  • 2 增强:检索得到的多个索引块之间如何进行合并重复内容,将上下文和当前用户询问进行整合。
  • 3 生成:如何保证生成内容的质量。

2 高级RAG

高级RAG在检索,增强,生成三个方面都针对做了改进。

2.1 检索改进

2.1.1 增强语义表示
  • 块优化;
  • 微调嵌入模型;
2.1.2 对齐查询和文档的语义空间
  • 查询和prompt重写;
2.1.3 微调检索器
  • 微调检索器使其输出与LLM偏好对齐;

2.2 增强改进

  • 1 增强阶段
  • 2 增强源
  • 3 增强过程

2.3 生成改进

  • 1 信息压缩
  • 2 rerank
  • 3 微调LLM

3 参考文献