RAG那些事儿

RAG一般流程

  • 将用于检索的知识库(文档)拆为小(几百个token)的文本块Chunk
  • 对文本块进行 TF-IDF 编码,建立索引
  • 语义嵌入Embedding,存储到向量数据库
  • 使用 BM25 检索最相似的文本块
  • 使用文本嵌入检索语义相似的文本块
  • 合并、去重、排序两种方式检索得到的文本块
  • 将 top-K 个文本块放进提示词中辅助 LLM 生成回答
RAG一般流程

优化技巧

多路召回

  • 稀疏召回
  • 语义召回
  • 字面召回:使用BM25做精确检索
    BM25(Best Matching 25)被广泛应用于搜索引擎领域。BM25 基于 TF-IDF(Term Frequency-Inverse Document Frequency)的思想,但对其进行了改进以考虑文档的长度等因素。
  • 上下文召回:用提示词指导模型提供简洁的、特定于文本块的上下文,使用整体文档的上下文来解释该文本块。
    性能提升:
    上下文嵌入将前20个块的检索失败率降低了35%(从5.7%降至3.7%)。
    结合上下文嵌入和上下文BM25将前20个块的检索失败率降低了49%(从5.7%降至2.9%)。


    上下文召回检索失败率提升

重排序

重排是一种常用的过滤技术,以确保只有最相关的文本块被传递给模型。

  • 执行初始检索以获取最有可能相关的chunks(例如top150);
  • 将top-N chunks与用户的查询一起传递给重排模型;
  • 使用重排模型,根据每个片段与提示的相关性和重要性为其打分,然后选择top-K chunks(例如top20);
  • 将top-K chunks作为上下文传递给模型以生成最终结果。


    重排序优化
加上重排序的检索失败率提升

边界问题优化

  • 无效问题准入判断
  • 随时间变化的问题,添加规则和提示工程技术

幻觉产生的原因

  • 数据不一致
    • 知识库消除虚假数据源,减少数据偏差
    • 集成知识图谱,图谱的三元组召回
  • 问题超出认知范围

评价指标

  • 检索环节
    • MRR平均倒排率
    • top k的命中率
  • 生成环节
    • 文本相似度Rough-L
    • 关键词重合度
    • 多样性

参考文档

RAG结合上下文提升召回成功率|Claude

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容