再次提升RAG性能:两种高效的Rerank模型实践指南 原创

发布于 2024-7-9 07:18
浏览
0收藏

在高级RAG应用中,检索后处理环节至关重要。Rerank技术通过重新排序检索出的文档块,确保与用户问题更相关的信息排在前面,从而提高语言模型生成答案的质量。在这个环节中,可以做一些诸如相似度过滤、关键词过滤、chunk内容替换等处理。其中,Rerank(重排序)是一种常见的,也是在RAG应用优化中很常见的一种技术处理环节。

本文介绍了两种被广泛认可的Rerank模型:Cohere Rerank模型和bge-reranker-large模型,并提供了使用指南。

再次提升RAG性能:两种高效的Rerank模型实践指南 -AI.x社区

一、为什么还需要Rerank

  • RAG应用中有多种索引类型,很多索引技术并非基于语义与向量构建,其检索的结果希望借助独立的Rerank实现语义重排
  • 在一些复杂RAG范式中,很多时候会使用多路混合检索来获取更多相关知识;这些来自不同源、不同检索算法的chunks要借助Rerank做重排
  • 即使是完全基于向量构建的索引,由于不同的嵌入模型、相似算法、语言环境、领域知识特点等影响,其语义检索的相关度排序也可能发生较大的偏差;此时借助独立的Rerank模型做纠正也非常有意义

二、在线模型 - Cohere Rerank模型

Cohere Rerank是一个商业闭源的Rerank模型。它根据与指定查询问题的语义相关性对多个文本输入进行排序,专门用于帮助关键词或向量搜索返回的结果做重新排序与提升质量。

为了使用Cohere Rerank,你首先需要在官方网站(https://cohere.com/)注册后申请测试的API-key(测试使用免费):

再次提升RAG性能:两种高效的Rerank模型实践指南 -AI.x社区

Cohere Rerank的使用非常简单,通常在LangChain与LlamaIndex框架中集成使用。下面展示如何在LangChain框架中使用Cohere Rerank来优化检索结果。

再次提升RAG性能:两种高效的Rerank模型实践指南 -AI.x社区

输出结果示例

再次提升RAG性能:两种高效的Rerank模型实践指南 -AI.x社区

在调用Cohere Rerank之后,内容的相关性和其对应的查询更加匹配,排序也更加合理。这种更加合理的排名一方面有利于LLM生成更准确的回复;另一方面也可以帮助降低top_K数量,以节约上下文空间。

三、本地模型 - bge-reranker-large模型

bge-reranker-large是国内智源开源的一个被广泛使用的Rerank模型,在众多的模型测试中有着非常优秀的成绩。

下面展示如何在LangChain框架中使用bge-reranker-large来优化检索结果。

再次提升RAG性能:两种高效的Rerank模型实践指南 -AI.x社区

输出结果示例

再次提升RAG性能:两种高效的Rerank模型实践指南 -AI.x社区


注:示例仅供参考,具体运行可能需要调整


了解更多:​https://github.com/FlagOpen/FlagEmbedding/blob/master/README_zh.md​

总结:

Rerank虽然在RAG流程中看似不那么显眼,但其实现简单、资源要求低,且不依赖于特定的嵌入模型,能够显著提升最终生成的质量。无论是选择在线的Cohere Rerank模型,还是本地部署的bge-reranker-large模型,都能为您的RAG应用带来性能上的提升。


本文转载自公众号顶层架构领域

原文链接:​​https://mp.weixin.qq.com/s/y_iqvDdGNqQLZVo61hF1rQ​


©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2024-7-9 11:18:02修改
收藏
回复
举报
回复
相关推荐