RAG 的是与非、Rewrite 和 Rerank

有时候,我觉得人类还真是种擅长画地为牢的动物,因为突然发现,当人们以文化/理念的名义形成团体/圈子的时候,其结局都不可避免地走向了筛选和区分的道路。或许,大家都不约而同地笃信,在成年人的世界里,那条不成文的社交潜规则——“只筛选不教育,只选择不改变”。与千百年前百家争鸣不同,团体/圈子间并不热衷于交流,倒像是一种标签化的分类方式,甚至是一种非黑即白的二元分类方式。比如,通常人们认为男性不能讨论女性主义,可我经常在女性主义视角下看到对男性的讨论。女性朋友们一致认为,女性种种不幸完全是由男性以及男性背后的父权造成的。于是,在小红书上打着不被定义的标签的女性们,自顾自地定义着别人。亦或者,在这个内卷的世界里,人们被互相定义、被资本定义、被用户画像定义、被美颜相机定义……这种种的定义,最终会成为我们所有人的宿命。鲁迅先生说,中国人的性情是喜欢调和折中的,对此我表示怀疑。因为,以如今的现状而言,中国人或许更喜欢玉石俱焚。在我看来,标签是定义、是附和、是选择,无论我们是否知晓,那条路是否能代表未来。

是非善恶

最近,Meta 发布了 Llama3,一时风光无二。微软不甘示弱,紧随其后发布了 Phi-3。曾经,我认为在小红书上检索信息比百度更高效,可当我批评完百度的竞价排名后,我发现小红书上的广告问题更严重,特别是 AI 的加入让这一问题愈发严重。回到 AI 话题,最近人们对于大模型的态度大致可以总结为:对 Llama3 和 Phi-3 寄予厚望,认为它们接近 GPT-4 的水平,而对 OpenAI 以及 GPT-5 的前景则持续看衰。我不太关心这些预期,我在意的是新模型发布以后,各路牛鬼蛇神都可以活跃起来。小红书上有一篇帖子提到,Llama3 的发布使得本地化 RAG 更有意义,并分享了一个使用 LlamaIndex 实现 RAG 的案例,随后是小红书上经典的套路:私信、拉群、发链接。我对帖子中的观点保留态度,因为 Llama3 作为大型模型,主要解决的是推理问题;而 RAG 是检索 + 生成的方案,其核心在于提高检索的召回率,即:问题与文本块之间的相关性。显然,无论 Llama3 是否发布,RAG 都能正常落地。大型模型的推理能力,影响的是最终的生成结果,而非检索的召回率。

在这里插入图片描述

故事的结局是我遭到了反驳,对方质疑我对 RAG 的理解,并建议我阅读她主页的某个帖子,据说是 RAG 论文作者在斯坦福的讲课内容。我原本是打算去学习的,可戏剧性的是,我被对方拉黑了。我还能再说什么呢?当然选择原谅对方。为了证明我对 RAG 的理解没有偏差,我决定分享我最近对于 Rewrite 和 Rerank 的体悟。我想明确指出的是,无需使用 Llama3,只要提升检索部分的召回率,RAG 方案完全可以实施。实际上,我们甚至都不需要 GPT-4 级别的模型,选择一个合适的小模型足矣。我意识到,我最大的错误在于,试图在一个以信息差为生意的人面前打破信息壁垒,帮助他人摆脱知识的诅咒。正如我之前所述,某些团体或圈子的目的并非促进信息流通和交流,而是为了向特定的人群提供通行证,以便在来来往往的人群中筛选和区分同类。或许,你会认为你已经筛选出你想要的人,但从更广阔的视角来看,这不过是另一种傲慢与偏见。当然,你们权利忽视这些问题,就像我不在乎周围环境如何一样。作为一个崇尚科学的人,我只关心真理,除非你的真理更为真实。

实现 Rewrite

在 RAG 的语境中,Rewrite 是重写或者改写的意思。此时,诸位或许会困惑,为什么需要对用户输入的问题进行二次加工呢?在程序员群体中,有一本非常经典的书 ——《提问的智慧》,其核心观点是:在技术的世界里,当你提出一个问题时,最终能否得到有用的答案,往往取决于你提问和追问的方式。以此作为类比,众所周知,人类的输入通常随性而模糊,特别是在使用自然语言作为交互媒介的时候。在这种情况下,大语言模型难以准确理解人类的真实意图。因此,就需要对用户的原始查询进行改写,通过生成多个语义相似但是表述不同的问题,来提高或增强检索的多样性和覆盖面。由于重写后的查询会变得更为具体,故而,Rewrite 在缩小检索范围、提高检索相关性方面有一定的优势。例如,下面的提示词实现了对用户输入的改写:

在这里插入图片描述

实际效果如何呢?我们可以分别在 Kimi 和 ChatGPT 中进行测试。如下图所示,左边为 Kimi,右边为 ChatGPT:

在这里插入图片描述

可以发现,Kimi 在改写的过程中,补充了更多的上下文,比如 “金庸”、“射雕英雄传”,而 ChatGPT 给出的答案则相对保守,甚至出现了 “奥义” 这种动漫作品中的元素。我承认,模型的推理能力是会影响到答案的生成,可这一切与 RAG 中的 Retrieval 无关,因为在那篇帖子里,对方分享的是最简单的 RAG 范式,自然就不包含 Rewrite 与 Rerank。所以,即便 Llama3 的推理能力得到了大幅度提升,它并不会对 RAG 有任何实质性的影响。不知这位女性朋友在评论区大杀四方的时候,是否想明白了这个道理?

# 对问题进行重写的提示词
rewrite_prompt_template = '''你是一个帮助用户完成信息检索的智能助理,你的职责是将用户输入的问题,转化为若干个相似的问题,从而帮助用户检索到更多有用的信息。此外,你还需要遵守下列约定:1、生成的问题必须与原问题存在一定的相关性,至少 >= 50%2、生成的问题必须与原问题相似或相近,不得改变用户原有的意图3、生成的问题以 JSON 格式返回,示例如下:```{{"input": "《越女剑》这部小说主要讲了什么样的一个故事","output": ["《越女剑》这部小说主要情节是什么","《越女剑》这部小说的故事梗概是什么"]}}```4、每次最多产生 5 个相似的问题现在,我的问题是:{question}'''

好了,下面我们结合 LangChain 来做具体的工程实践。继续沿用上面的提示词模板,唯一需要注意的是,这里的 JSON 示例需要转义,因为它与变量 question 前后的花括号存在冲突,解决方案是使用两对花括号。方便起见,这里使用 LLMChain 来调用

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

踏上R语言之旅:解锁数据世界的神秘密码(三)

多元相关与回归分析及R使用 文章目录 多元相关与回归分析及R使用一.变量间的关系分析1.两变量线性相关系数的计算2.相关系数的假设检验 二.一元线性回归分析的R计算三、回归系数的假设检验总结 一.变量间的关系分析 变量间的关系及分析方法如下: 1.两变量线性相关…

【跟马少平老师学AI】-【神经网络是怎么实现的】(五)梯度消失问题

一句话归纳: 1)用sigmoid激活函数时,BP算法更新公式为: 用sigmoid函数,O取值为0~1,O(1-O)最大值为0.25,若神经网络层数多,则会造成更新项趋近于0,称为梯度消失。 2&#…

《ElementPlus 与 ElementUI 差异集合》el-dialog 显示属性有差异

ElementPlus 用属性 v-model ElementUI 用属性 visible 其实也是 Vue2/Vue3 的差异:v-model 指令在组件上的使用已经被重新设计,替换掉了 v-bind.sync

基于Springboot+Vue的Java项目-入校申报审批系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

Python面试十问

一、深浅拷贝的区别? 浅拷⻉: 拷⻉的是对象的引⽤,如果原对象改变,相应的拷⻉对象也会发⽣改变。 深拷⻉: 拷⻉对象中的每个元素,拷⻉对象和原有对象不在有关系,两个是独⽴的对象。 浅拷⻉(c…

【Java从入门到精通】Java 正则表达式

目录 正则表达式实例 🍉java.util.regex 包 🍉实例 🍉捕获组 🍉实例 🍉RegexMatches.java 文件代码: 🍉正则表达式语法 🍉Matcher 类的方法 🍉索引方法 &#…

K8S哲学 - 资源调度 DaemonSet

应用场景 日志收集 引出: 正常情况下,每个服务都会进行 各自的日志收集、但是因为他们不在 同一台 Node 上,导致一旦查日志就需要 调动各个 机器进行切换,不方便也不高效 低级做法: 在每个需要收集日志的机器上部…

SpringCloud系列(16)--将服务提供者Provider注册进Zookeeper

前言:在上一章节中我们说明了一些关于Eureka自我保护模式,而且自上一章节起关于Eureka的知识已经讲的差不多了,不过因为Eureka已经停更了,为了安全考虑,我们要用还在更新维护的注册中心来取代Eureka,而本章…

2024-05-02 商业分析-杭州小万科技-商业模式分析

摘要: 对杭州小万科技的商业模式进行分析,以对其做出客观的评估。 杭州小万科技的资料: 杭州小万科技有限公司 - 企知道 (qizhidao.com) 杭州小万科技有限公司网站备案查询 - 天眼查 (tianyancha.com) 杭州小万科技有限公司 - 爱企查 (baidu.com) ​ 2023年年报:

【Jenkins】持续集成与交付 (三):有关报错解决(Jenkins (2.387.3) or higher required)

🟣【Jenkins】持续集成与交付 (三):有关报错解决Jenkins (2.387.3) or higher required 一、Jenkins主页报错二、安装Jenkins插件报错三、解决过程(解压替换jenkins.war)四、重新访问登录💖The Begin💖点点关注,收藏不迷路💖 一、Jenkins主页报错 New version …

【51单片机LCD1602显示矩阵键盘原始键值】2023-6-1

缘由https://ask.csdn.net/questions/7955623 #include "reg52.h" sbit LCD1602_RS P3^5;//RS端数据命令选择(H/L) sbit LCD1602_RW P3^6;//RW端读写选择(H/L) sbit LCD1602_EN P3^7;//EN端使能信号上升沿25ns void PanDuan1602(/*LCD1602忙判断*/) { LCD1602…

一周零碎时间练习微服务(nacos,rq,springcloud,es等)内容

目录 1 总览1.1 技术架构1.2 其他1.2.1 数据库1.2.2 后端部分1.2.2.1 复习feign1.2.2.2 复习下网关网关的核心功能特性:网关路由的流程断言工厂过滤器工厂全局过滤器 过滤器执行顺序解决跨域问题 1.2.2.3 es部分复习 1.2.3 前端部分 2 day1 配置网关2.1 任务2.2 网关…

常用SQL命令

应用经常需要处理用户的数据,并将用户的数据保存到指定位置,数据库是常用的数据存储工具,数据库是结构化信息或数据的有序集合,几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据,进行数据访问控制&…

CSS优惠券、卡券样式绘制

实现左右凹陷中间有虚线效果 效果图 实现思路 从效果图可以看到这个优惠券是左右两边凹陷,中间还有一条虚线,为了封装后插槽使用方便,把优惠券以虚线为准分了两部分。这样布局的好处是上部分内容和下部分都可以自定义,不受内容限…

面试:Mybatis(MyBatis执行流程、延迟加载、MyBatis的缓存)

目录 一、MyBatis执行流程 二、MyBatis是否支持延迟加载? 1、什么是延迟加载? 2、延迟加载的原理 三、MyBatis的缓存 1、一级缓存 2、二级缓存 3、注意事项 一、MyBatis执行流程 读取MyBatis配置文件: mybatis-config.xml加载运行环境和映射文件构…

Adobe推出AI视频超分辨率工具VideoGigaGAN

🦉 AI新闻 🚀 Adobe推出AI视频超分辨率工具VideoGigaGAN 摘要:Adobe公司最新推出的AI工具VideoGigaGAN,利用上采样技术将视频分辨率从128128提升至10241024。这一工具基于GigaGAN模型开发,专注于生成视频超分辨率&am…

Vitis HLS 学习笔记--MAXI手动控制突发传输

目录 1. 简介 2. MAXI 突发传输详解 2.1 突发传输的前置条件 2.2 hls::burst_maxi 详解 2.2.1 基本知识 2.2.2 hls::burst_maxi 构造函数 2.2.3 hls::burst_maxi 读取方法 2.2.4 hls::burst_maxi 写入方法 2.3 示例一 2.4 示例二 3. 总结 1. 简介 这篇文章探讨了在…

提示词工程入门-使用文心一言4.0-通义千问-GPT4-Claude3通用提示技巧测试

提示词工程基础🚀 在了解完了大语模型的基本知识,例如API的使用多轮对话,流式输出,微调,知识向量库等知识之后,接下来需要进一步补足的一个大块就是提示词工程,学习和了解提示词工程除了基本的提…

分享自己一篇在亚马逊云科技AWS官网发的Blog技术文章

小李哥在亚马逊AWS官网,作为第一作者发了自己的第一篇AWS Blog文章,也是自己今年在AWS官网的第11篇文章。文章主要内容是描述为出海的金融企业,搭建满足PCI-DSS合规、FIPS 140-2 Level 3安全标准的传输中数据加密云端方案,主要用于…

34.Docker基本操作

镜像相关的命令 镜像名称分为两部分组成:[repository]:[tag],tag就是镜像的版本。如果tag没有指定默认就是latest,表示最新版本的镜像。 查看docker命令的帮助信息 docker --help 具体某条命令的帮助信息 docker images --help 案例一:从DockerHub中…