当前位置: 首页 > article >正文

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


http://www.kler.cn/a/354858.html

相关文章:

  • 面试题整理12----K8s中Pod创建常见错误
  • C# GDI+数码管数字控件
  • 【微信小程序】3|首页搜索框 | 我的咖啡店-综合实训
  • 如何使用MySQL WorkBench操作MySQL数据库
  • 机器学习系列(一)——K-近邻算法
  • 【Linux系列】Shell 脚本中的条件判断:`[ ]`与`[[ ]]`的比较
  • 牛企查:性价比很高的企业综合查询小程序
  • C语言:符号“->”在C语言中什么意思呢?
  • Hive中的metastore(元数据存储)
  • Java设计模式梳理:行为型模式(策略,观察者等)
  • vue3项目打包生成dist文件夹后在本地怎么查看
  • 一种3D打印跑车模型LED安全夜灯
  • React 高级阶段学习计划
  • WNMP环境本地搭建并配置公网地址远程搭建动态网站或服务器
  • npm install 失败,报错 error sha512
  • uniapp打包成安卓video标签层级问题解决
  • matlab怎样将数据按行拼接和按列拼接(水平拼接竖直拼接)
  • 太速科技-509-基于XCVU13P的4路QSFP28光纤PCIeX16收发卡
  • Redis主从复制机制详解
  • 20255 - 中医方剂学 - 考研 - 执业
  • 数据中台业务架构图
  • linux - ubuntu22.04 显卡驱动问题
  • 如何将照片从华为传输到电脑 |轻松掌握转移技巧
  • Ansible自动化运维管理工具
  • nginx解决非人类使用http打开的443,解决网安漏扫时误扫443端口带来的问题
  • C++智能指针及其应用