再次提升RAG性能:两种高效的Rerank模型实践指南 原创
在高级RAG应用中,检索后处理环节至关重要。Rerank技术通过重新排序检索出的文档块,确保与用户问题更相关的信息排在前面,从而提高语言模型生成答案的质量。在这个环节中,可以做一些诸如相似度过滤、关键词过滤、chunk内容替换等处理。其中,Rerank(重排序)是一种常见的,也是在RAG应用优化中很常见的一种技术处理环节。
本文介绍了两种被广泛认可的Rerank模型:Cohere Rerank模型和bge-reranker-large模型,并提供了使用指南。
一、为什么还需要Rerank
- RAG应用中有多种索引类型,很多索引技术并非基于语义与向量构建,其检索的结果希望借助独立的Rerank实现语义重排
- 在一些复杂RAG范式中,很多时候会使用多路混合检索来获取更多相关知识;这些来自不同源、不同检索算法的chunks要借助Rerank做重排
- 即使是完全基于向量构建的索引,由于不同的嵌入模型、相似算法、语言环境、领域知识特点等影响,其语义检索的相关度排序也可能发生较大的偏差;此时借助独立的Rerank模型做纠正也非常有意义
二、在线模型 - Cohere Rerank模型
Cohere Rerank是一个商业闭源的Rerank模型。它根据与指定查询问题的语义相关性对多个文本输入进行排序,专门用于帮助关键词或向量搜索返回的结果做重新排序与提升质量。
为了使用Cohere Rerank,你首先需要在官方网站(https://cohere.com/)注册后申请测试的API-key(测试使用免费):
Cohere Rerank的使用非常简单,通常在LangChain与LlamaIndex框架中集成使用。下面展示如何在LangChain框架中使用Cohere Rerank来优化检索结果。
输出结果示例
在调用Cohere Rerank之后,内容的相关性和其对应的查询更加匹配,排序也更加合理。这种更加合理的排名一方面有利于LLM生成更准确的回复;另一方面也可以帮助降低top_K数量,以节约上下文空间。
三、本地模型 - bge-reranker-large模型
bge-reranker-large是国内智源开源的一个被广泛使用的Rerank模型,在众多的模型测试中有着非常优秀的成绩。
下面展示如何在LangChain框架中使用bge-reranker-large来优化检索结果。
输出结果示例
注:示例仅供参考,具体运行可能需要调整
了解更多: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