改善大模型 RAG 效果:结合检索和重排序模型

最近这一两周不少大厂都已经开始秋招面试了。

不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。

最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑,分享技术面试中的那些弯弯绕绕。

  • 《大模型面试宝典》(2024版) 正式发布

喜欢本文记得收藏、关注、点赞。更多实战和面试交流,文末加入我们星球


最近出现了在构建聊天机器人方面的应用浪潮,这主要得益于LlamaIndex 和 LangChain 这样的框架。许多这类应用都采用了用于检索增强生成(RAG)的标准技术栈,其中包括以下关键步骤:

  1. 向量存储库: 使用向量存储库来存储非结构化文档,即知识语料库。

  2. 检索模型: 针对查询使用检索模型,通过嵌入相似性检索语料库中的相关文档。

  3. 回答模型: 使用合成模型生成响应,结合检索和生成的优势,提高聊天机器人的效果。

RAG关键优势在于在生成响应时结合了检索和生成的优势,从而提高了聊天机器人的性能。 但此种流程也存在的不足之处,如不够精确、可能返回不相关的上下文等问题。

改进方向:重排序改进

什么是重排序?

重排序是信息检索系统中的一个重要步骤,它发挥着优化检索结果的关键作用。在初始检索阶段,系统根据某种标准(如相似度)返回一组文档。然而,由于初始排序可能并不总是能够准确反映文档与查询的真实相关性,因此需要进行重排序来提升检索结果的质量。

在这里插入图片描述

不同的重排序方法

  • 使用检索模型进行二次检索:一种常见的重排序方法是使用检索模型进行二次检索。在初始检索后,通过利用更复杂的模型,例如基于嵌入的检索模型,可以再次检索相关文档。这有助于更精确地捕捉文档与查询之间的语义关系。

  • 使用交叉模型进行打分:另一种方法是利用交叉模型进行文档打分。这种模型可以考虑文档和查询之间的交互特征,从而更细致地评估它们之间的关联度。通过结合不同特征的交互,可以得到更准确的文档排序。

  • 利用大模型进行重排序:大型语言模型(LLM)等大模型的崛起为重排序提供了新的可能性。这些模型通过对整个文档和查询进行深层次的理解,能够更全面地捕捉语义信息。

方法1:交叉模型进行重排序

与嵌入模型不同,重新排序器使用问题和文档作为输入,直接输出相似度而不是嵌入。通过将查询和段落输入到重新排序器中,你可以获得相关性分数。重新排序器是基于交叉熵损失进行优化的,因此相关性分数不受限于特定范围。

BGE Reranker

https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/reranker

import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizertokenizer = AutoTokenizer.from_pretrained('BAAI/bge-reranker-large')
model = AutoModelForSequenceClassification.from_pretrained('BAAI/bge-reranker-large')
model.eval()pairs = [['what is panda?', 'hi'], ['what is panda?', 'The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear or simply panda, is a bear species endemic to China.']]
with torch.no_grad():inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512)scores = model(**inputs, return_dict=True).logits.view(-1, ).float()print(scores)

这个重新排序器是从xlm-roberta-base初始化的,并在混合的多语言数据集上进行训练:

  • 中文:来自T2ranking、MMmarco、dulreader、Cmedqa-v2和nli-zh的788,491个文本对。

  • 英文:来自msmarco、nq、hotpotqa和NLI的933,090个文本对。

  • 其他语言:来自Mr.TyDi的97,458个文本对(包括阿拉伯语、孟加拉语、英语、芬兰语、印度尼西亚语、日语、韩语、俄语、斯瓦希里语、泰卢固语、泰语)。

CohereRerank

# pip install cohereimport cohere
api= ""
co = cohere.Client(api)query = "What is the capital of the United States?"
docs = ["Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274.","The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.","Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.","Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.","Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment."]results = co.rerank(query=query, documents=docs, top_n=3, model='rerank-english-v2.0') # Change top_n to change the number of results returned. If top_n is not passed, all results will be returned.

实验结果

从数据中清晰可见重新排序器在优化搜索结果方面的重要性。几乎所有嵌入都受益于重新排序,表现出改善的命中率和MRR。

在这里插入图片描述

  • bge-reranker-large:对于多个嵌入,该重新排序器经常提供了最高或接近最高的MRR,有时其性能与CohereRerank相媲美甚至超过。

  • CohereRerank:在所有嵌入上一致提升性能,往往提供最佳或接近最佳的结果。

方法2:大模型进行重排序

现有的涉及LLM的重排方法大致可以分为三类:用重排任务微调LLM,使用prompt让LLM进行重排,以及利用LLM做训练数据的增强。

图片

如下表所示,所有模型都重新排名相同的BM25前100个段落。使用gpt-4重新排名由gpt-3.5-turbo重新排名的前30个段落。

图片

参考文献

  • https://arxiv.org/pdf/2304.09542.pdf

  • https://arxiv.org/pdf/2308.07107v2.pdf

  • https://blog.llamaindex.ai/boosting-rag-picking-the-best-embedding-reranker-models-42d079022e83

  • https://blog.llamaindex.ai/using-llms-for-retrieval-and-reranking-23cf2d3a14b6

技术交流

在这里插入图片描述

通俗易懂讲解大模型系列

  • 重磅消息!《大模型面试宝典》(2024版) 正式发布!

  • 重磅消息!《大模型实战宝典》(2024版) 正式发布!

  • 做大模型也有1年多了,聊聊这段时间的感悟!

  • 用通俗易懂的方式讲解:大模型算法工程师最全面试题汇总

  • 用通俗易懂的方式讲解:不要再苦苦寻觅了!AI 大模型面试指南(含答案)的最全总结来了!

  • 用通俗易懂的方式讲解:我的大模型岗位面试总结:共24家,9个offer

  • 用通俗易懂的方式讲解:大模型 RAG 在 LangChain 中的应用实战

  • 用通俗易懂的方式讲解:ChatGPT 开放的多模态的DALL-E 3功能,好玩到停不下来!

  • 用通俗易懂的方式讲解:基于扩散模型(Diffusion),文生图 AnyText 的效果太棒了

  • 用通俗易懂的方式讲解:在 CPU 服务器上部署 ChatGLM3-6B 模型

  • 用通俗易懂的方式讲解:ChatGLM3-6B 部署指南

  • 用通俗易懂的方式讲解:使用 LangChain 封装自定义的 LLM,太棒了

  • 用通俗易懂的方式讲解:基于 Langchain 和 ChatChat 部署本地知识库问答系统

  • 用通俗易懂的方式讲解:Llama2 部署讲解及试用方式

  • 用通俗易懂的方式讲解:一份保姆级的 Stable Diffusion 部署教程,开启你的炼丹之路

  • 用通俗易懂的方式讲解:LlamaIndex 官方发布高清大图,纵览高级 RAG技术

  • 用通俗易懂的方式讲解:为什么大模型 Advanced RAG 方法对于AI的未来至关重要?

  • 用通俗易懂的方式讲解:基于 Langchain 框架,利用 MongoDB 矢量搜索实现大模型 RAG 高级检索方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1549981.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

苹果退出OpenAI融资谈判

🦉 AI新闻 🚀 苹果退出OpenAI融资谈判 摘要:据《华尔街日报》报道,苹果公司已决定不参与OpenAI的新一轮融资,计划筹集约65亿美元(约454.98亿元人民币)。OpenAI正进行从非营利到盈利性公司的转…

【图解秒杀系列】秒杀技术点——隔离、熔断、限流、降级

【图解秒杀系列】秒杀技术点——隔离、熔断、限流、降级 隔离熔断限流降级 隔离 隔离的思想其实就是舱壁模式,这在Docker中有所体现。在Docker中,容器与容器间互相隔离互不影响。一个容器有它独立的与外界隔离的环境与资源,包括CPU、内存等&…

AI读教链《关于美国、中国和BTC的三个超级变量​》

这篇文章探讨了美国、中国及比特币(BTC)当前经济形势中的三个超级变量,强调了对经济状况的重新审视。 美国经济与衰退:尽管有观点认为美国经济正在衰退,文章指出这取决于如何定义衰退。美股市场的市盈率处于高位&#…

实用工具推荐---- PDF 转换

直接上链接:爱PDF |面向 PDF 爱好者的在线 PDF 工具 (ilovepdf.com) 主要功能如下: 全免费!!!!

低功耗4G模组Air780E的串口通信指南

今天我们来讲解低功耗4G模组Air780E的串口通信的基本用法,合宙的小伙伴们,学起来吧! 一、硬件准备 780E开发板一套,包括天线、USB数据线。 USB转TTL工具或线(例如ch340、ft232) PC电脑,串口…

【系统方案】智慧城市大数据平台建设方案(Word)

第1章 总体说明 1.1 建设背景 1.2 建设目标 1.3 项目建设主要内容 1.4 设计原则 第2章 对项目的理解 2.1 现状分析 2.2 业务需求分析 2.3 功能需求分析 第3章 大数据平台建设方案 3.1 大数据平台总体设计 3.2 大数据平台功能设计 3.3 平台应用 第4章 政策标准保障体系 4.1 政策…

零基础学习AI大模型,手把手带你从入门到实践!看过的已经月入6w了!

引言: 在2024年这个充满挑战的就业市场环境下,许多人都在寻求掌握一门技术以增强自己的竞争力,但往往不知道该选择学习什么。今年,学习人工智能无疑是一个明智的选择。 对于外行人而言,AI可以被理解为一种模拟人类智…

【ASE】第四课_护盾效果(有碰撞效果)

今天我们一起来学习ASE插件,希望各位点个关注,一起跟随我的步伐 今天我们来学习护盾的效果。 思路: 1.添加纹理贴图和法线贴图(这里省略) 2.添加护盾边缘顶点扰动效果,也可以理解成变形效果 3.添加碰撞…

远程服务器安装anaconda并创建虚拟环境

1、承接上文新用户zrcs,在服务器的zrcs文件夹下直接下载anaconda(很慢): wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh 或者选择本地下载,清华大学开源软件镜像站:https:/…

德克威尔FS系列一体式PROFINET协议模块组态步骤

1、通讯连接图 2、硬件配置 3、安装GSD文件 4、新建工程与设备组态 1 打开TIA Portal V16,选择新建工程并组态。 2.组态设备,切换到网络视图窗口中,右侧展开硬件目录,选择PN-HH00-C1NN拖拽到网络视图中。 3.在网络视图中为远程IO模块分配控制器,鼠标单击IO模块中“未分配”…

VSCode 中配置 C/C++ 环境的步骤

VSCode 中配置 C/C 环境的步骤 1. 安装 VSCode 1、下载位置 https://code.visualstudio.com/Download2、安装 正常操作步骤,同意协议,下一步,点击完成即可 2. 安装 C/C 扩展 打开 VSCode。 点击左侧的扩展图标(或使用快捷键…

【经验技巧】如何做好S参数的仿测一致性

根据个人经验,想要做好电路板S参数的仿测一致性,如下的相关信息必须被认真对待: 1. PCB叠构(Stack up),仿真模型需要保证设计参数与板厂供应商的生产参数完全一样,这些参数包括: 叠层结构数据;介电常数;损耗因子;蚀刻因子;表面粗糙度。 2. 仿真中,需要保证信号测试…

大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

【漏洞复现】孚盟云oa AjaxSendDingdingMessage接口 存在sql注入漏洞

》》》产品描述《《《 孚盟与阿里强强联手将最受青睐的经典C系列产品打造成全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化…

AI数字人:终于知道视频号咋爆的了

点击下方👇“拂晓AI数字人”关注公众号 一起学习AI 数字人,让服务更高效! 做视频号是不是有这种感觉,辛辛苦苦剪了几个小时的视频,上去就是几百播放量,就没有流量了,很抓狂。 找别人的爆的视频&…

等保2.0标准执行之高风险判定(物理环境篇)

2019年5月13日下午,国家标准新闻发布会新闻发布厅召开,网络安全等级保护2.0系列核心标准在千呼万唤中终于正式发布,等保2.0时代又迈出坚实一步。 等级保护2.0标准发布后,对广大等级保护测评机构的工作提出了更高的要求&#xff0…

【含文档】基于Springboot+Vue的个人博客系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

基于AM6254+FPGA的车载中控板,支持PC104,QNX, VXWORKS

Specification Description 处理器 TI AM625X at up to 1.4GHz 操作系统 LINUX, VXWORKS 存储 2GB DDR4, 2 x128GB EMMC, TF卡座,128Mb QSPI 接口 •标准PC104接口 •2个USB2.0 •1路VGA显示 •2路10/100/1000 Mbps ETH •1路10/1…

喜讯!宝兰德荣获第三届“鼎新杯”数字化转型应用大赛二等奖

9月24日-25日,“2024数字化转型发展大会”在北京成功举办。来自政产学研用的专家学者、知名企业代表同台论道,共话数字化转型的新趋势。大会期间,备受瞩目的第三届“鼎新杯”数字化应用转型大赛结果正式揭晓,「宝兰德中间件统一管…

1.5 测试用例

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 测试用例介绍2 测试用例编写3 案例分析4 执行测试用例 前言 测试用例的设计和编制是软件活动中最重要的工作。本文详细讲解了测试用例的基本概念以及如何编写测试用例。 本篇文…