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

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

相关文章:

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

无论怎么选择RAG的切分方案&#xff0c;仍然切分不准确。 最近&#xff0c;anthropics给出了补充上下文的embedding的方案&#xff0c;RAG有了新的进展和突破。 从最基础的向量查询&#xff0c;到上下文embedding&#xff0c;再到rerank的测试准确度都有了明显的改善&#xf…...

前端学习---(2)CSS基础

CSS 用来干什么&#xff1f; CSS 是用来指定文档如何展示给用户的一门语言——如网页的样式、布局、等等。 css语法: 选择器{ 属性名: 属性值; 属性名: 属性值; } h1 {color: red;font-size: 5em; }h1: 选择器 color: 属性 冒号之前是属性&#xff0c;冒号之后是值。 font-size…...

Pandas常用计算函数

目录 排序函数 nlargest函数 nsmallest函数 sort_values函数 df.sort_values Series.sort_values 聚合函数 corr函数-相关性 min函数-最小值 max函数-最大值 mean函数-平均值 sum函数-求和 count函数-统计非空数据 std函数-标准偏差 quantile函数-分位数 排序函…...

C++ | Leetcode C++题解之第473题火柴拼正方形

题目&#xff1a; 题解&#xff1a; class Solution { public:bool makesquare(vector<int>& matchsticks) {int totalLen accumulate(matchsticks.begin(), matchsticks.end(), 0);if (totalLen % 4 ! 0) {return false;}int len totalLen / 4, n matchsticks.s…...

深度解析RLS(Recursive Least Squares)算法

目录 一、引言二、RLS算法的基本思想三、RLS算法的数学推导四、RLS算法的特点五、RLS算法的应用场景六、RLS算法的局限性七、总结 一、引言 在自适应滤波领域&#xff0c;LMS&#xff08;Least Mean Squares&#xff09;算法因其计算简单、实现方便而广受欢迎。然而&#xff0…...

Centos 7.9NFS搭建

原创作者&#xff1a;运维工程师 谢晋 Centos 7.9NFS搭建 NFS服务端安装客户机访问共享配置 NFS服务端安装 SSH连接系统登录到服务端安装nfs服务 # yum -y install nfs-utils2. 安装完成后&#xff0c;查看需要共享的目录&#xff0c;这边共享的是/home目录&#xff0c;如…...

Python库numpy之三

Python库numpy之三 # NumPy数组创建函数二维数组创建函数numpy.eye应用例子numpy.diag应用例子numpy.vander应用例子 # NumPy数组创建函数 二维数组创建函数 numpy.eye 词法&#xff1a;numpy.eye(N, MNone, k0, dtype<class ‘float’>, order‘C’, *, deviceNone, …...

postgresql 安装

一、下载 PostgreSQL: File Browser 下载地址 PostgreSQL: File Browser 上传到服务器,并解压 二、安装依赖 yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel 创建postgresql 和目录 useradd …...

基于机器学习的天气数据分析与预测系统

天气预报是日常生活中非常重要的信息来源&#xff0c;能够帮助人们合理安排日程、预防自然灾害。随着数据科学和机器学习的快速发展&#xff0c;传统的天气预报方法逐渐向基于数据驱动的机器学习方法转变。本文将探讨如何构建一个基于机器学习的天气数据分析与预测系统&#xf…...

Java项目-基于Springboot的在线外卖系统项目(源码+说明).zip

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…...

ANSYS Workbench纤维混凝土3D

在ANSYS Workbench建立三维纤维混凝土模型可采用CAD随机几何3D插件建模后导入&#xff0c;模型包含球体粗骨料、圆柱体长纤维、水泥砂浆基体等不同组分。 在CAD随机几何3D插件内设置模型参数后运行&#xff0c;即可在AutoCAD内建立三维纤维混凝土模型&#xff0c;插件支持任意…...

【Vue】Vue3.0(十)toRefs()和toRef()的区别及使用示例

上篇文章&#xff1a;Vue】Vue&#xff08;九&#xff09;OptionsAPI与CompositionAPI的区别 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年10月15日11点13分 文章目录 toRefs()和toRe…...

中科星图(GVE)——使用随机森林方法进行土地分类

目录 简介 函数 gve.Classifier.smileRandomForest(numberOfTrees,variablesPerSplit,minLeafPopulation,bagFraction,maxNodes,seed) 代码 结果 简介 使用随机森林方法进行土地分类的步骤如下&#xff1a; 数据准备&#xff1a;收集所需的土地分类数据&#xff0c;并对数…...

【蓝队技能】【C2流量分析】MSFCSSliver

蓝队技能 MSF&CS&Sliver 蓝队技能总结前言一、MSF1.1 流量分析1.2 特征提取 二、CS1.1 流量分析1.2 特征提取 二、Sliver1. 特征分析 总结 前言 不同C2工具的流量特征都有细微差别&#xff0c;学会分析方法后就可以进行分析 一、MSF 1.1 流量分析 MSF流量特征过于明显…...

不推荐使用Scilab作为MATLAB的开源替代

安装了Scilab2024.1.0&#xff0c;随便试了几分钟就发现有严重影响使用的Bug(也可能是就是这样设计的&#xff0c;有一个所谓的“暂停模式”)&#xff0c;复现步骤&#xff1a;主界面上点击“Scilab示例”按钮&#xff0c;打开“演示”窗口&#xff0c;点击左侧列表中的“多项式…...

C++智能指针及其应用

C11之后出现了 shared_ptr 和 unique_ptr&#xff0c;这两个类都是基于RAII技术进行设计的 RAII 利用对象生命周期来控制程序资源&#xff08;如内存&#xff0c;文件句柄&#xff0c;网络连接&#xff0c;互斥量等资源&#xff09;的技术&#xff0c;具体地说&#xff0c;就是…...

06 算法基础:算法的定义、表现形式(自然语言、伪代码、流程图)、五个特性(有穷性、确定性、可行性、输入、输出)、好算法的设计目标

目录 1 算法的定义 2 算法的三种表现形式 2.1 自然语言 2.2 伪代码 2.3 流程图 3 算法的五个特性 3.1 有穷性 3.2 确定性 3.3 可行性 3.4 输入 3.5 输出 4 好算法的设计目标 4.1 正确性 4.2 可读性 4.3 健壮性 4.4 通用性 4.5 高效率与低存储量 1 算法的定义 …...

【红外传感器】STM32C8T6标准库使用红外对管

好好学习&#xff0c;天天向上 前言一、了解红外二、标准库的代码1.infrared.c2.infrared.h3.main.c4 现象 总结 前言 红外线&#xff1a;频率介于微波与可见光之间的电磁波。 参考如下 【STM32】标准库与HAL库对照学习教程外设篇–红外避障传感器 光电红外传感器详解&#…...

STM32L010F4 最小系统设计

画一个 STM32L010F4 的测试板子...... by 矜辰所致前言 最近需要用到一个新的 MCU&#xff1a; STM32L010F4 &#xff0c;上次测试的 VL53L0X 需要移植到这个芯片上&#xff0c;网上一搜 STM32L010F4&#xff0c;都是介绍资料&#xff0c;没有最小系统&#xff0c;使用说明等。…...

AI 工具大赏:探索智能时代的得力助手

在当今这个科技飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术已经深入到我们生活的方方面面。从日常办公到创意设计&#xff0c;从学术研究到娱乐休闲&#xff0c;AI 工具正以其强大的功能和便捷的使用体验&#xff0c;成为人们不可或缺的得力助手。那么&…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...