Rerank其实一个是对初步检索返回的候选文档列表再次进行排序的过程。
如果把RAG的检索过程类比成公司的招聘过程,则有如下对应关系:
1.初步检索(Retrieval)
这一步就类似于HR筛选简历,找工作的人往往很多,HR每天都可能收到上万份甚至几万份简历。
假设有1万份简历,1个HR每天工作8小时,那么1小时之内就得看完1250份,平均到1分钟以内就得看完20多份,这几乎是不可能的。
所以,不可能每份简历HR都会细看。
那她会怎么看呢,主要就是看关键词,比如Java、 大模型等等,看到简历上有这些匹配的关键词字眼 ,就筛选出来。
这样做就会导致看似简历已经匹配上关键词了,但是候选人的能力可能还不太符合要求,只能选出前100个看似还行的候选人。
我们把这个场景对应到RAG的检索过程里面就是,向量检索,它虽然算得快,但是对语义的理解还差点意思。
2.重排序(Rerank)
这个过程就类似于企业招聘过程的业务面试,也就是主管把这100人的简历打印出来仔细阅读,如果觉得候选人的过往经历和工作经验很符合要求,就会约下一步的一对一业务面试。
这个过程花费的时间比较长,消耗的精力也更多,但是筛选出来的候选人也更符合要求。
这也就是RAG检索过程的Rerank,可以精准地判断初步检索返回的文档是不是真正能够回答用户的问题,最后再喂给大模型去生成一个答案。