03-RAG的核心 -结果召回和重排序

1 完整RAG应用的检索流程

2 Query预处理

2.1 意图识别

判断query问的是什么类型的问题,从而决定是否走RAG链路。

示例1:

  • 深圳有什么好玩的 闲聊问题
  • VDB支持哪些检索算法 产品常见问题

示例2:

  • 为什么某个MongoDB实例内存占用过高 检查类问题
  • 云Redis如何扩容 产品常见问题
流程图

2.2 生成同义query

针对query生成同义句,不同问法提高召回,检索结果做合并。

示例1:VDB支持哪些检索算法

  • 列举一下VDB所支持的检索算法
  • VDB有哪些可用的检索算法

示例2: 腾讯云向量数据库的优势是什么

  • 腾讯云向量数据库有哪些主要优点
  • 腾讯云向量数据库的核心竞争力是什么
流程图

2.3 query标准化

针对query中的专有名词、简写、英文做标准化处理。

示例1:VDB支持哪些检索算法

腾讯云向量数据库支持哪些检索算法

示例2:COS如何上传对象

腾讯云对象存储如何上传对象

流程图

3 检索召回

每次召回时,如何提升结果的排序效果,使与Query更相关的结果更靠前?

  1. 使用更有效的索引技术:使用更高级的索引技术如倒排索引、压缩倒排索引等可以加速检索过程并提高结果的相关性。这些技术可以使得相似的文档在索引中更靠近,从而使得相关的结果更容易被召回。
  2. 优化检索模型:使用适合任务的检索模型如BM25、BERT等,这些模型可以更好地捕捉文档之间的语义和相关性,从而提升召回结果的质量。
  3. 利用用户反馈:收集用户的点击、浏览、收藏等行为反馈信息,通过机器学习算法不断优化排序模型,使得更符合用户兴趣的结果更容易被召回并排在前面。
  4. 引入上下文信息:考虑查询的上下文信息,比如用户的地理位置、设备信息、搜索历史等,可以更好地理解用户意图,提升召回结果的相关性。
  5. 使用深度学习技术:利用深度学习技术如卷积神经网络、循环神经网络等,可以更好地学习文档之间的语义关系,从而提高结果的排序效果。
  6. 结合多种特征:结合文本特征、结构特征、用户特征等多种特征进行综合排序,可以更全面地考虑到文档与查询之间的相关性。

综合运用以上方法,可以在召回阶段有效提升结果排序效果,使得与Query更相关的结果更靠前。

Query预处理中,做了生成同义Query,最终应该如何合并检索结果?

  1. 加权融合:给每个查询生成的同义Query分配一个权重,并根据权重对检索结果进行加权融合。权重可以根据同义Query的相似性、生成方法的可靠性等因素来确定。
  2. 组合排序:将原始查询和同义查询的检索结果分别进行排序,然后将两个排序结果进行组合排序。可以根据不同的排序方法(如TF-IDF、BM25等)来进行组合排序,也可以采用机器学习模型进行组合排序。
  3. 基于规则的合并:制定一些规则来合并检索结果,例如保留两个查询中都包含的结果、去除重复的结果等。这种方法比较简单直接,但需要根据具体场景制定合适的规则。
  4. 交叉验证:将生成的同义Query和原始Query分别用于检索,并根据评估指标(如准确率、召回率等)来选择最优的检索结果。可以通过交叉验证或者在线评估来验证合并结果的效果。
  5. 利用用户反馈:收集用户对不同查询结果的反馈信息,根据反馈信息调整查询结果的排序和合并策略,使得更符合用户需求的结果更容易被展示在前面。

无论采用哪种方法,都需要结合具体的业务需求和数据特点来选择合适的合并检索结果的策略,以确保最终展示给用户的结果具有更高的相关性和质量。

如何在召回阶段,将召回的结果效果做得更优质,减少干扰信息对LLM的影响?

  1. 使用更精准的召回模型:使用更高效和精准的召回模型,如基于BERT、RoBERTa等预训练语言模型的语义匹配模型,能够更好地捕捉文本之间的语义关系,减少不相关文档的召回。
  2. 利用领域知识和规则过滤:结合领域知识和规则,对召回结果进行过滤和筛选,去除明显不相关或低质量的文档。例如,可以使用领域词典、实体识别等技术进行过滤。
  3. 考虑上下文信息:在召回阶段考虑用户的上下文信息,如搜索历史、用户兴趣等,通过个性化的方式调整召回结果,提高相关性。
  4. 引入负采样:在训练召回模型时引入负采样技术,增加负样本的多样性和难度,使得模型更好地区分干扰信息和相关信息。
  5. 加入用户反馈机制:收集用户对召回结果的反馈信息,如点击、滑动、停留时间等,根据反馈信息调整召回模型和排序策略,提高用户满意度和相关性。
  6. 优化评估指标:在评估召回结果时,不仅要关注传统的准确率、召回率等指标,还要考虑到与LLM输入的匹配度、语义相似度等指标,以更全面地评估召回结果的质量。

通过综合利用以上方法,在召回阶段可以更有效地优化召回结果,减少干扰信息对LLM的影响,提高模型的性能和效果。

4 排序

4.1 为啥要排序(Rerank)

Rerank:RAG中百尺竿头更进一步

Embedding模型存在一定的局限性:实际召回结果中,embedding没办法完全反应出语义的相似性,至少这K个文件的排名并不是我们认为的从高分到低分排序的。

排序模型的目的在于对召回内容有一个更合理的排序结果,减少提供给模型的上下文长度,长度越长,对模型来说压力越大。

基于Learning2Rank的思路提升文本语义排序效果:

Listwise的优化

指示函数做近似:

最终loss function:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

博科SAN交换机初始化和Zone创建

1 初始化 博科的SAN交换机默认配置: 地址:10.77.77.77 账户:admin 密码:password 设备硬件查看 ***-SAN-1:admin> chassisshowFAN Unit: 1 Fan Direction: Reverse (Non-portside Intake) Time Awake: 0 daysP…

NOSQL -- ES

第三个我们比较常用的NOSQL类型的数据库 --- ES 介绍: ES的全称(Elasticsearch) ES是一个分布式全文搜索的引擎 也就是我们平常在购物, 搜索东西的时候常用的, 就是一个ES的类型, 分布式全文搜索引擎 查询原理: 1>分词: 在查询之前, 其会将一些数据拆分开, 按照词进行拆分…

计算机木马

病毒具有传播特性、恶意性 木马没有巨大的恶意,主要是帮黑客做些事情,没害你,没有那么广大的传播性

springboot宠物医院信息管理系统-计算机毕业设计源码04164

摘 要 现如今在中国,随着人民生活质量的逐渐提高,以及人民群众消费能力的日渐增长,各种各样的家养小动物,已经逐渐成为人类越来越亲密的生活伴侣。并且,现如今社会竞争及其激烈,人们的生活节奏越发急促、紧…

如何在 Windows 10/11 上编辑 PDF [4 种简单方法]

PDF 在大多数设备上都易于查看,但由于其设计用于查看,因此编辑起来可能比较棘手。编辑 PDF 可能比编辑 Microsoft Office 文档更具挑战性。 不用担心,我们已经为你做好了准备。无论你是想添加、删除还是插入文本或图片,你都可以使…

干部管理软件有哪些

随着信息技术的飞速发展,干部管理软件在各级党政机关、国企事业单位中扮演着越来越重要的角色。这些软件通过整合干部管理的各项业务流程,实现了干部信息的系统化、规范化和高效化管理。以下是几款主流的干部管理软件及其特点: 一、干部信息…

linux下C语言如何操作文件(一)

本篇我们简单介绍一下在linux中如何使用C语言操作文件,首先我们在项目中创建file_util.c源文件和file_util.h头文件如图: 我们先编辑file_util.h文件,定义好常用的函数,源代码如下: #ifndef FILE_UTIL_INCLUDED #define FILE_UTIL_INCLUDED#include <stdbool.h> #i…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 启动多任务排序(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 启动多任务排序(200分) 🌍 评测功能需要订阅专栏后私信联系…

AIGC绘画设计—揭秘Midjourney关键词魔法:让你的AI绘画瞬间起飞

在这个数字化飞速发展的时代&#xff0c;AI技术正以前所未有的速度改变着我们的生活和创作方式。在艺术创作领域&#xff0c;Midjourney作为一款强大的AI绘画工具&#xff0c;正逐渐受到越来越多创作者和爱好者的青睐。今天&#xff0c;我就来为大家揭秘Midjourney背后的关键词…

ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O

一套11.2.0.4的rac库巡检&#xff0c;发现asm实例日志有如下报错 2.5.2 locate alert_${hst}.log tail -n 200 /oracle/app/grid/diag/asm/asm/ASM1/trace/alert_ASM1.log Errors in file /oracle/app/grid/diag/asm/asm/ASM1/trace/ASM1_ora_96212.trc: ORA-27090: Unable to…

工控机与普通电脑的区别对于工业自动化应用至关重要

商用计算机和工业计算机之间的相似之处可能多于差异之处。工业电脑利用了消费技术领域的许多进步&#xff0c;但增加了工业应用所必需的软件、编程、确定性和连接性。 专业人士表示&#xff1a;“从增加内存到摩尔定律所描述的处理能力的指数级增长&#xff0c;工业控制必将受…

吴恩达深度学习笔记:机器学习(ML)策略(1)(ML strategy(1))1.9-1.10

这里写自定义目录标题 第三门课 结构化机器学习项目&#xff08;Structuring Machine Learning Projects&#xff09;第一周 机器学习&#xff08;ML&#xff09;策略&#xff08;1&#xff09;&#xff08;ML strategy&#xff08;1&#xff09;&#xff09;1.9 可避免偏差&am…

新火种AI|苹果终于迈进了AI时代,是创新还是救赎?

作者&#xff1a;一号 编辑&#xff1a;美美 苹果的AI战略&#xff0c;能够成为它的救命稻草吗&#xff1f; 苹果&#xff0c;始终以其独特的创新能力引领着行业的发展方向。在刚结束不久的2024年的全球开发者大会&#xff08;WWDC&#xff09;上&#xff0c;苹果再次证明了…

重生奇迹mu魔剑士简介

出生地&#xff1a;勇者大陆 性 别&#xff1a;男 擅 长&#xff1a;近距离作战、武器特技&攻击魔法使用 转 职&#xff1a;剑圣&#xff08;3转&#xff09; 介 绍&#xff1a;当玩家账号中有一个220级以上的角色时&#xff0c;便可以创建职业为魔剑士的新角色&#x…

远程桌面端口,怎么修改远程桌面端口

修改注册表 打开注册表编辑器&#xff1a; 按下 Windows键R 或者从开始菜单选择“运行”&#xff0c;打开运行窗口。 输入 regedit 命令&#xff0c;然后点击“确定”打开注册表编辑器。 定位到远程桌面服务的端口设置&#xff1a; 在注册表编辑器中&#xff0c;按照以下路径找…

SOFTS: 时间序列预测的最新模型以及Python使用示例

近年来&#xff0c;深度学习一直在时间序列预测中追赶着提升树模型&#xff0c;其中新的架构已经逐渐为最先进的性能设定了新的标准。 这一切都始于2020年的N-BEATS&#xff0c;然后是2022年的NHITS。2023年&#xff0c;PatchTST和TSMixer被提出&#xff0c;最近的iTransforme…

【第8章】Vue之第一个案例程序(前后端交互)

文章目录 前言一、前端1. 安装axios2. 使用axios3. axios.vue4. request.js5. axios.js 二、后端1.controller2.entity三、结果1. 列表查询2. 条件查询 总结 前言 接下来我们通过简单的前后端交互来完成界面数据的加载。 一、前端 1. 安装axios npm install axios2. 使用axi…

springboot3 基础特性(1)

文章目录 一、SpringApplication三种方式1.1 基础方式1.2.自定义 SpringApplication1.3、FluentBuilder API 二、自定义Banner三、Profiles3.1 什么是 Profiles &#xff1f;3.2 声明Profiles3.3 激活配置文件3.3.1 分组3.3.2 环境包含3.3.3 激活方式3.3.4 配置优先级 一、Spri…

逻辑这回事(五)---- 资源优化

基础篇 Memory 避免细碎的RAM。将大的RAM拆分成多个小RAM&#xff0c;并根据地址关断可以优化功耗&#xff0c;但把多个小RAM合成大RAM可以优化面积。Block RAM和分布式RAM合理选择。根据存储容量&#xff0c;对Block RAM和分布式RAM的实现面积和功耗进行评估&#xff0c;选择…

Opus从入门到精通(五)OggOpus封装器全解析

Opus从入门到精通(五)OggOpus封装器全解析 为什么要封装 前面Opus从入门到精通(四)Opus解码程序实现提到如果不封装会有两个问题: 无法从文件本身获取音频的元数据(采样率,声道数,码率等)缺少帧分隔标识,无法从连续的文件流中分隔帧(尤其是vbr情况) 针对上面的问题我们可以…