跳到主要内容

重排序模型

先用向量检索召回一批候选 Chunk,再把这些候选文档交给 Rerank重排序模型,让模型根据“用户问题和候选文本的真实语义相关性”重新打分排序,最后只保留最相关的文档根据top_n

RAG 里的 重排序模型,通常叫 Reranker / Re-rank Model

  • 由于初始检索找到的内容,不一定排序准确,因此通过重排序模型来提高准确性
  • 重排序模型它会重新看“问题 + 每个 chunk检查”,判断哪个 chunk 更能回答这个问题
  • 通过重排序模型对候选的文档chunk进行重排打分,将匹配更高的chunk,排到前面
    • 重排序保留chunk的数量,配置top_n
  • Reranker只能对“已经召回的结果 (候选文档)”重新排序
    • 这里的候选文档:包含检索的结果、关键词检索的结果进行排序
    • 如果是混合检索,那么会将向量检索和关键词检索通过RRF算法合并为候选文档,然后利用Rerank重排序将候选文档进行打分

为什么使用重排序​

  • 语义理解偏差
  • 向量相似度不靠谱

作用​

  • RAG 在检索阶段时负责“多查找一些可能相关的资料
  • 重排序模型负责“从这些资料里重新判断谁最相似的资料,并把最有用的排到前面”

重排序问题​

  • 使用重排序模型,会比较慢,但是判断会更细,提高准确性
  • 重排序和向量检索会配合使用
    • 重排序模型不能直接面对整个知识库
    • 通过向量检索来匹配筛选chunk
    • 重排序是对已经筛选过的chunk 进行精确排序,对候选文档的chunk进行打分排序

场景​

不建议的场景:

  • 当知识库数据量小的时候,可以不需要重排序
  • 当问题比较简单时,不需要重排序,不需要复杂判断
  • 对查询速度要求高的场景,也不建议使用重排序,会增加耗时
  • 需要对成本控制时,也不建议使用重排序,使用重排序模型会增加成本

建议的场景

  • 企业知识库数据量大,会出现噪音(无关内容)比较多,容易出现幻觉
  • 文档很多内容比较相似,需要更准确的排序查询
  • 问题比较细,比如问到某一条数据、某一条配置
  • 当经常匹配不到答案的时候,可以考虑重排序

总结​

  • 向量检索负责从海量知识库里“找一批候选的相关资料”,通过top_k来配置检索文档的结果数量,重排序模型负责对候选内容“精细排序打分”,把最可能回答问题的 chunk 放到前面,从而提升最终 prompt 质量和模型回答准确率
  • 可以配置Rerank重排序保留chunk的数量,通过top_n