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

Contextual Retrieval:让 RAG 更懂上下文

Contextual Retrieval:让 RAG 更懂上下文

原文:Introducing Contextual Retrieval | Anthropic | 2024.9.19

导语

RAG(检索增强生成)已经是 LLM 应用的标配。但传统的 RAG 有一个根本性缺陷:在切分文本块时会丢失上下文

一个文本块说"该公司收入较上一季度增长了 3%"——但它没说是哪家公司、哪个季度。这导致检索系统在面对精确查询时经常"找不到"相关信息。

Anthropic 提出了 Contextual Retrieval,通过在每个文本块前面添加上下文解释,将检索失败率降低了 49%,结合重排序甚至可降低 67%。


一、传统 RAG 的问题

传统 RAG 的预处理流程:

  1. 将文档分解为小块(通常几百个 token)
  2. 用嵌入模型将块转换为向量
  3. 存储到向量数据库中

问题所在: 切分后,单个块缺乏足够的上下文。

比如财务报告中的一段话:

原始块:"该公司收入较上一季度增长了 3%。"

这个块本身不说明是哪家公司或时间段,导致无法精确检索。


二、Contextual Retrieval 的解决方案

在嵌入之前,在每个块前面添加块特定的解释性上下文

上下文化的块:"此块来自 ACME Corp 2023 年第二季度业绩的 SEC 文件;
上一季度的收入为 3.14 亿美元。该公司收入较上一季度增长了 3%。"

具体做法

使用 Claude 为每个块自动生成上下文:

<document>
{{WHOLE_DOCUMENT}}
</document>
这是我们希望置于整个文档上下文中的块
<chunk>
{{CHUNK_CONTENT}}
</chunk>
请提供一个简短的上下文,以便将该块置于整个文档中,
以便改进块的搜索检索。仅回答简短的上下文,不要回答其他任何内容。

生成的上下文通常为 50-100 个 token。

成本控制

使用 Anthropic 的提示缓存功能,文档只需加载到缓存中一次。生成上下文块的一次性成本约为每百万文档 token 1.02 美元


三、两个子技术

上下文嵌入(Contextual Embeddings)

在嵌入之前添加上下文,让向量更准确地表示块的语义。

上下文 BM25(Contextual BM25)

BM25 是基于词法匹配的排名函数,特别擅长精确匹配(如"错误代码 TS-999")。添加上下文后,BM25 的匹配能力大幅提升。


四、性能提升

方法 检索失败率降低
上下文嵌入 35%
上下文嵌入 + 上下文 BM25 49%
上下文嵌入 + 上下文 BM25 + 重排序 67%

五、重排序进一步提升

在检索后添加重排序步骤:

  1. 初始检索获取前 150 个候选块
  2. 使用重排序模型(如 Cohere Reranker)评估每个块的相关性
  3. 选择前 20 个最相关的块

六、关键发现总结

  1. 嵌入 + BM25 优于单独使用嵌入
  2. Voyage 和 Gemini 嵌入模型表现最好
  3. 传递前 20 个块比前 10 或前 5 个更有效
  4. 向块添加上下文大幅提高检索准确性
  5. 重排序比不重排序更好
  6. 所有好处都是叠加的

七、小提示:何时不需要 RAG

如果你的知识库少于 200,000 个 token(约 500 页),可以直接将整个知识库放入提示中。配合提示缓存,延迟降低 2 倍,成本降低 90%。


读后感

Contextual Retrieval 的思路非常优雅:不是改模型,不是改算法,而是改数据。通过在预处理阶段投入小成本为每个块添加上下文,获得了巨大的检索质量提升。

这再次印证了一个 AI 工程的基本原则:数据质量 > 算法复杂度


本文是 Anthropic AI Agent 系列 第 8 篇,共 15 篇。下一篇:长时间运行的 Agent:如何设计可靠的执行框架

关注公众号 coft 获取系列更新。

http://www.jsqmd.com/news/395956/

相关文章:

  • 【实时无功-有功控制器的动态性能】【带有电流控制的两级电压源变流器(VSC)】采用αβ阿尔法-贝塔转换进行电流反馈的实时无功功率控制器
  • 不用写代码也能编程:Qwen2.5-Coder-1.5B体验报告
  • 实测:去AIGC和率零哪个更适合你?选择指南
  • 大润发购物卡回收,闲置卡巧变现 - 京顺回收
  • 长时间运行的 Agent:如何设计可靠的执行框架
  • 综述不会写?千笔·专业学术智能体,继续教育写作标杆
  • 英文论文也能降AI率?海外留学生AIGC检测应对方案
  • AI开发-python-milvus向量数据库(2-8 -milvus-数据插入collection)
  • 盒马鲜生礼品卡可以回收吗?详细流程与重要注意事项 - 团团收购物卡回收
  • 2026年比较好的隔音泡棉/导电泡棉生产商推荐怎么选(可靠) - 品牌宣传支持者
  • 多 Agent 协作系统:Anthropic 的实战经验
  • SenseVoice Small部署教程:NVIDIA Container Toolkit集成配置指南
  • 2026年知名的职业生涯规划评估系统/职业生涯规划设备热门推荐 - 品牌宣传支持者
  • MCP 代码执行:构建更高效的 Agent
  • OFA图像语义蕴含模型部署教程:GPU利用率监控与batch size调优指南
  • ERNIE-4.5-0.3B-PT部署避坑:解决‘model not found’、‘out of memory’高频问题
  • 如何设计一个支持地理空间查询(Geo-spatial Query)的数据库索引?
  • 小白必看:Pi0机器人控制中心快速部署指南
  • 阿里开源图片旋转判断:快速解决图片角度问题
  • 2026年知名的柜内香氛五金/家用香氛五金工厂采购指南如何选(实用) - 品牌宣传支持者
  • Python 配置管理的哲学、范式与现代实践:超越 config.ini
  • 深度学习项目训练环境:一键安装与模型训练指南
  • MySQL性能优化:慢查询分析与SQL调优实战
  • 阿里小云KWS模型的多唤醒词识别技术实践
  • 文墨共鸣惊艳效果:朱砂印从‘云泥之别’到‘异曲同工’的渐变视觉动效
  • HY-Motion 1.0动作数据增强算法解析
  • JVM内存模型:深入理解堆内存与元空间
  • 分布式系统CAP理论与BASE理论详解
  • 2026年口碑好的高速贴标机/在线打印贴标机供应商采购指南选哪家 - 品牌宣传支持者
  • 夜红外图像无人机检测数据集VOC+YOLO格式1963张1类别