Created
Jul 28, 2024 03:47 AM
Favorite
Favorite
Priority
备注
推荐
🌟🌟🌟🌟
类型
模型应用
昨天的文章中我们提到,可以使用Rerank对RAG系统进行优化。揭开RAG重排序(Rerankers)和两阶段检索(Two-Stage Retrieval)的神秘面纱
今天,我们动手在项目中实现Rerank。
Rerank的目的是通过重新排序检索结果,提升文档与查询的相关性。其优势在于能够进一步提高检索准确性,确保最相关的文档排在前列,从而显著提升系统的整体性能和用户体验,如下图所示。
notion image
因为在搜索的时候存在随机性,就是我们在RAG中第一次召回的结果往往不太满意的原因。但是这也没办法,如果你的索引有数百万甚至千万的级别,那你只能牺牲一些精确度,换回时间。
这时候我们可以做的就是增加top_k的大小,比如从原来的10个,增加到100个。
然后再使用更精确的算法来做rerank,使用一一计算打分的方式,做好排序。比如100次的遍历相似度计算的时间,我们还是可以接受的。
有朋友问我,Rerank如何集成到项目中呢?
答案就是:Rerank模型的方式集成到项目中。
在HuggingFace上面搜索,发现有很多Rerank模型,如下图。
notion image
新的reranker模型:发布跨编码器模型 BAAI/bge-reranker-base 和 BAAI/bge-reranker-large ,它们比嵌入模型更强大。
我们建议使用/微调它们来重新排名嵌入模型返回的前 k 个文档。
如何使用bge-reranker-large 模型呢?https://huggingface.co/BAAI/bge-reranker-large和bge-reranker-base下载模型。
下面,我们以 BAAI/bge-reranker-large 这个模型为例进行说明,我个人推荐的、最简单的方案是使用 FlagEmbedding 这个库:
第一种方式:FlagEmbedding 库
获取获取相关性分数(分数越高表明相关性越高):
第二种方式:HuggingFace库
所以,当在RAG 项目中,使用Embedding 求出topN的时候,N可以大一点儿,然后重新组织问题和检索出来的答案。
比如,question是问题,top_n_answers是Embedding返回的结果,得到Rerank的新数据结构。
目前rerank模型里面,最好的应该是cohere,不过它是收费的。
开源的是智源发布的bge-reranker-base和bge-reranker-large。bge-reranker-large的能力基本上接近cohere,而且在一些方面还更好。
几乎所有的Embeddings都在重排之后显示出更高的命中率和MRR,所以rerank的效果是非常显著的。
embedding模型和rerank模型的组合也会有影响,可能需要开发者在实际过程中去调测最佳组合。
下面是一个使用Huggingface和Faiss进行Rerank的Python代码示例。这个示例将展示如何从一个初始的文档集合中检索文档并通过Rerank优化排序,以提升检索结果的相关性。
在没有使用Rerank之前,只通过Embedding,检索Top3。
得到的结果是:
加入Rerank 之后,Top改成Top10。
notion image
最后讲一下Rerank的微调。
准备数据:
运行微调脚本:
参数:
per_device_train_batch_size:训练中的批量大小。
train_group_size:训练中查询的正数和负数。总有一个正数,所以这个参数将控制负数的数量 (#negatives=train_group_size-1)。注意到否定的数量不应大于数据 "neg":List[str] 中的否定数量。除了此组中的底片外,批次内的底片也将用于微调。
讲完了Rerank,再来看看大模型最新消息:
Llama 3.1 405B 已正式开源!
Llama 3.1 405B 在性能上可与 GPT-4 等闭源模型相媲美,在通用知识、可控性、数学、工具使用和多语言翻译上表现出色。
支持 128K 上下文长度, 405B、8B 、70B 三个型号。
同时还发布了 Llama Guard 3 和 Prompt Guard 等安全工具,及 Llama Stack API,以促进第三方项目更容易地使用 Llama 模型。
Llama 3 将会集成图像、视频和语音的功能,能够识别图像和视频并支持通过语音进行交互,此功能目前正在开发中。
Meta 使用了超过 16,000 个 H100 GPU 来训练 Llama 3.1 405B,为了支持大规模生产推理,Meta 对模型进行了量化,使其能够在单个服务器节点上运行。
参考资料:1. https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments
notion image
Loading...