RAG拉满-上下文embedding与大模型cache

无论怎么选择RAG的切分方案,仍然切分不准确

最近,anthropics给出了补充上下文的embedding的方案,RAG有了新的进展和突破。

从最基础的向量查询,到上下文embedding,再到rerank的测试准确度都有了明显的改善,测试结果数据如下[2]:

测试方案Pass@5Pass@10Pass@20
基础RAG80.92%87.15%90.06%
加了上下文的embedding86.37%92.81%93.78%
BM25测试和上下文embedding86.43%93.21%94.99%
双路召回的基础上,增加了rerank91.24%94.79%96.30%

( 备注:Pass@k 检查每个查询检索到的前 k 个文档中是否存在“最佳文档”)

在这里插入图片描述

(智谱清言[7]绘制的图)

一、RAG存在的问题

比如有西游记这本书中(第一回 惊天地美猴王出世),一个文档的chunk拆分如下:

“师兄们见了,鼓着掌称赞他。”

很难知道更多关于这个chunk的基本信息,它的上下文不够清晰,那很难让LLM总结得到更准确的总结和回答。

二、上下文embedding

假设根据所属的文档,补充完善这个chunk的上下文信息,就变成这样的chunk:

”孙悟空在菩提祖师门下学成七十二般变化和筋斗云后,展示给师兄们看,变出一棵大树,师兄们对此表示赞赏。“

这样,一个chunk的上下文信息就变得更加完整了。

使用这样的chunk信息,可以让LLM得到更准确的回答。

提示语:

<document>
	{原始文档}
</document>
	  
你的任务是改写一下这个chunk:提供一个简短的上下文补充完整chunk在整个文档中的含义,以便改进chunk的搜索检索。 只回答简洁的上下文,不要回答其他内容。
 以下是文档中我们想要的部分chunk。
<chunk>
	{当前chunk}
</chunk>

使用deepseek的测试结果如下[3][4]:

在这里插入图片描述

三、大模型Cache

通过字数统计来看,如果每一个chunk都需要传入整个文档,则费用是巨大的。
整个文档(西游记 第一回)的字数统计如下:
在这里插入图片描述

那为什么要使用DeepSeek?
从能力的各个方面看,deepseek表现的都很好[6]。
除此之外有一个更大的优点–价格便宜。

在这里插入图片描述

除了普通的输入输出价格之外,deepseek提出了一个缓存价格的概念:
如果你传入给模型的前缀内容是相同的,则会命中缓存。命中缓存的费用降低了10倍。
在这里插入图片描述

只要前缀相同,就会命中缓存[8](以下是官方文档中的事例代码):
在这里插入图片描述

上图中我划线的部分都是缓存命中的。

再回到我们补充chunk上下文的案例,提示语如下:

<document>
	{原始文档}
</document>
	  
你的任务是改写一下这个chunk:提供一个简短的上下文补充完整chunk在整个文档中的含义,以便改进chunk的搜索检索。 只回答简洁的上下文,不要回答其他内容。
 以下是文档中我们想要的部分chunk。
<chunk>
	{当前chunk}
</chunk>

原始文档部分以及提示语部分都是一致的,只有如下片段是缓存不命中的:

	{当前chunk}
</chunk>

这样,我们的费用就大大降低了,通过大模型补充chunk的上下文就成为了可能。

感谢deepseek的创新和实现[9],让模型的使用变得便宜,让我们可以从更多的场景去探索和尝试。

四、写在最后

补充完善chunk上下文这个方案在之前来做是不可能的,因为一个文档要重复让模型进行读取,这个费用太高了。

从豆包的首次降价,到百度的免费模型,到智谱的免费模型,再到各种本地构建的ollama免费模型

随着模型的普及,价格变的便宜,大胆的尝试它与场景的结合就成为了可能。

所以,未来的模型使用,要 更多的考虑场景,而不是价格

参考文献:

[1] The best RAG’s technique yet? Anthropic’s Contextual Retrieval and Hybrid Search:https://levelup.gitconnected.com/the-best-rag-technique-yet-anthropics-contextual-retrieval-and-hybrid-search-62320d99004e

[2] anthropic-cookbook例子: https://github.com/anthropics/anthropic-cookbook/blob/main/skills/contextual-embeddings/guide.ipynb

[3] deepseek访问页面: https://chat.deepseek.com/

[4]西游记白话文: https://github.com/gugug/pyltp-books/blob/master/mybooks/Book/%E8%A5%BF%E6%B8%B8%E8%AE%B0%E7%99%BD%E8%AF%9D%E6%96%87/1.txt

[5]在线字数统计: https://www.eteste.com/

[6]中文模型测评排行榜:https://github.com/jeinlee1991/chinese-llm-benchmark?tab=readme-ov-file#3%E4%BF%A1%E6%81%AF%E6%8A%BD%E5%8F%96%E8%83%BD%E5%8A%9B%E6%8E%92%E8%A1%8C%E6%A6%9C

[7]智谱清言: https://chatglm.cn/main/alltoolsdetail?lang=zh

[8]deepseek文档-缓存策略: https://api-docs.deepseek.com/zh-cn/guides/kv_cache

[9]deepseek的MLA缓存实现:https://blog.csdn.net/yutianzuijin/article/details/142372022

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

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

相关文章

Excel:vba实现合并工作簿中的表

A、B、C这三个工作簿的数据都在sheet1&#xff0c;表头一样 Sub MergeWorkbooks()Dim FolderPath As StringDim FileName As StringDim wb As WorkbookDim ws As WorksheetDim mainWb As WorkbookDim mainWs As WorksheetDim lastRow As LongDim lastcol As LongDim pasteRang…

双足机器人远程操作与动态运动同步研究

在当前的机器人技术中&#xff0c;双足机器人因其能够在复杂环境中灵活行动而备受关注。随着技术的进步&#xff0c;研究者们致力于开发能够与人类操作员实现高效同步的双足机器人&#xff0c;特别是在应对自然灾害或人为危险等紧急情况下的应用。 项目背景 尽管人工智能领域取…

Missing classes detected while running R8报错解决方案

Android 打包release版本时报错如下&#xff1a; > Task :printlib:minifyReleaseWithR8 FAILED AGPBI: {"kind":"error","text":"Missing classes detected while running R8. Please add the missing classes or apply additional ke…

在限制条件下求1+2+3+...+n

一&#xff1a;题目 二&#xff1a;代码 前提&#xff1a; A&#xff1a;静态成员和静态函数的性质 1.静态成员为所有类对象所共享&#xff0c;不属于某个具体的对象&#xff0c;存放在静态区 2. 静态成员变量必须在类外定义&#xff0c;定义时不添加static关键字&#xff0…

大模型生图安全疫苗注入赛题解析(DataWhale组队学习)

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月实践赛的大模型生图安全疫苗注入赛道&#xff1b;本文主要整理本次赛事的基本流程和优化方法。&#x1f495;&#x1f495;&#x1f60a; 一…

使用node.js控制CMD命令——修改本机IP地址

设置每次打开cmd命令行窗口都是以管理员身份运行&#xff1a; 1. 按下Ctrl Shift Esc键组合&#xff0c;打开任务管理器。 2. 在任务管理器中&#xff0c;点击“文件”菜单&#xff0c;选择“运行新任务”。 3. 在“创建新任务”对话框中&#xff0c;输入cmd&#xff0c;勾…

1.2024.10.17

2024.10.17 总体规划 总体规划 写这个合集的原因 记录自己入行之前成长过程。本人菜鸟一枚&#xff0c;大佬不喜勿喷。 目前的规划 更新频率 尽量一天一更&#xff0c;会更新之前发布的笔记&#xff0c;争取笔记更加完善。 学习方法 目标 通过面试&#xff0c;成功入行嵌…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(1)

移情别恋c ദ്ദി˶&#xff70;̀֊&#xff70;́ ) ——14.哈希(1) unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到 l o g 2 N log_2 N log2​N&#xff0c;即最差情况下需要比较红黑树的高度次…

新兴的安全职业挑战

我们经常与安全专业人士交谈&#xff0c;他们希望在努力提升职业发展的同时提高自己的价值并克服组织内部的挑战。在这些谈话中&#xff0c;花费大量时间讨论公司未来将面临的安全问题并不罕见。 安全领导者希望为问题制定计划并获得领导层对其计划的支持。这通常意味着实施修…

【RoadRunner】自动驾驶模拟3D场景构建 | 软件简介与视角控制

&#x1f4af; 欢迎光临清流君的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落 &#x1f4af; &#x1f525; 个人主页:【清流君】&#x1f525; &#x1f4da; 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 &#x1f4da; &#x1f31f;始终保持好奇心&…

IDEA下载安装

文章目录 1、下载安装包2、安装IDEA3、全局配置4、安装插件5、关闭合并菜单栏 1、下载安装包 IDEA官网下载最新IDEA。 上面的ULtimate是旗舰版&#xff0c;试用30天&#xff0c;之后是需要收费的&#xff0c;下面黑色区域的Community是社区版&#xff0c;功能不如旗舰版丰富&a…

nuScenes数据集使用的相机的外参和内参

因为需要用不同数据集测试对比效果&#xff0c;而一般的模型代码里实现的检测结果可视化都是使用open3d的Visualizer在点云上画的3d框&#xff0c;展示出来的可视化效果很差&#xff0c;可能是偷懒&#xff0c;没有实现将检测结果投影到各相机的图像上&#xff0c;所以检测效果…

删除链表的倒数第 N 个结点 | LeetCode-19 | 双指针 | 递归 | 栈 | 四种方法

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 这道题还可以用递归法&#xff0c;你想到了吗&#xff1f;毛毛张介绍四种方法 LeetCode链接&#xff1a;19. 删除链表的倒数第 N 个结点 1.题目描述 给你一个链表&a…

【机器学习(十三)】机器学习回归案例之股票价格预测分析—Sentosa_DSML社区版

文章目录 一、背景描述二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入(二) 特征工程(三) 样本分区(四) 模型训练和评估(五) 模型可视化 三、总结 一、背景描述 股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因…

C++11新特性(4)

目录 1.包装器 2.线程库 2.1thread类的简单介绍 2.2线程函数参数 2.3原子性操作库(atomic) 2.4lock_guard与unique_lock 2.5mutex的种类 1. std::mutex 2. std::recursive_mutex 3. std::timed_mutex 4. std::recursive_timed_mutex 2.6lock_guard 2.7unique_lock 3.支持两个线…

鼠标市场洞察:数据分析揭示消费趋势!

鼠标整体数据分析 一. 概述 本报告基于从淘宝商品搜索接口和淘宝精确月销量接口中提取的数据&#xff0c;分析了前百个品牌在销售额上的占比情况。分析涵盖了销售额和占比的数据&#xff0c;为决策提供了依据。(以上两个接口有需求的可以找我要链接&#xff09;&#xff08;数…

概率 随机变量以及分布

一、基础定义及分类 1、随机变量 随机变量是一个从样本空间&#xff08;所有可能结果的集合&#xff09;到实数集的函数。&#xff08;随机变量的值可以是离散的&#xff0c;也可以是连续的。 &#xff09; 事件可以定义为随机变量取特定值的集合。 2、离散型随机变量 随机变…

Unity开发Hololens项目

Unity打包Hololens设备 目录Visual Studio2019 / Visual Studio2022 远端部署设置Visual Studio2019 / Visual Studio2022 USB部署设置Hololens设备如何查找自身IPHololens设备门户Unity工程内的打包设置 目录 记录下自己做MR相关&#xff1a;Unity和HoloLens设备的历程。 Vi…

软件企业选择第三方软件检测机构有哪些好处?

在软件开发的当今时代&#xff0c;确保软件的质量和性能是每个企业面临的挑战&#xff0c;因此软件检测公正必不可少。随着市场的需求&#xff0c;越来越多企业会选择将该项工作交由第三方软件检测机构进行。第三方软件检测机构指独立于软件开发方和需求方的第三方机构&#xf…

5、JavaScript(二)

17.对象 1、对象&#xff1a;⽤来存储多个数据的 是由多个键值对/key value对组成的 ⽤来描述⼀个事物的 相当于多个变量的集合 2、格式 &#xff1a;{key:value,key:value} 键/值对 属性名&#xff1a;属性值 3、对象的属性值是不限制数据类型的&#xff0c;甚至还可以是对…