AI 系统中的上下文检索技术

AI 系统中的上下文检索技术

来源: Anthropic Engineering Blog
作者: Anthropic Engineering Team
发布日期: 2024 年 9 月 19 日
类型: 技术发布
阅读时间: 约 10 分钟

概述

本文介绍了一种名为”上下文检索”(Contextual Retrieval)的革命性方法,可显著提升 AI 模型的知识检索能力。该方法使用两种子技术——上下文嵌入(Contextual Embeddings)和上下文 BM25——将检索失败率降低 49%,结合重排序后可降低 67%。这对于需要访问特定领域知识的 AI 应用(如客户服务聊天机器人、法律分析助手等)具有重大意义,直接转化为下游任务性能的显著提升。


为什么 AI 需要上下文知识

要使 AI 模型在特定上下文中发挥作用,它通常需要了解背景知识。例如:

  • 客户服务聊天机器人:需要了解特定业务的知识和政策
  • 法律分析助手:需要了解大量过往案例和法规
  • 技术支持助手:需要了解产品文档和故障排除指南

开发人员通常使用检索增强生成(RAG)来增强 AI 模型的知识。然而,传统的 RAG 解决方案在编码信息时会丢失上下文,这常常导致系统无法从知识库中检索到相关信息。

简单方案:使用更长的提示

有时最简单的解决方案是最好的。如果您的知识库小于 200,000 令牌(约 500 页材料),您可以将整个知识库包含在提示中,无需 RAG 或类似方法。

几周前,我们发布了 Claude 的提示缓存功能,使这种方法更快、更具成本效益:

  • 开发者现在可以在 API 调用之间缓存频繁使用的提示
  • 延迟降低超过 2 倍
  • 成本降低高达 90%

但是,随着知识库的增长,您需要更具可扩展性的解决方案。这就是上下文检索发挥作用的地方。

RAG 基础:扩展到更大的知识库

对于不适合上下文窗口的较大型知识库,RAG 是典型的解决方案。RAG 通过以下步骤预处理知识库:

  1. 分块:将知识库(文档”语料库”)分解为较小的文本块,通常不超过几百个令牌
  2. 嵌入:使用嵌入模型将这些块转换为编码含义的向量嵌入
  3. 存储:将这些嵌入存储在允许按语义相似性搜索的向量数据库中

在运行时,当用户向模型输入查询时,向量数据库用于基于与查询的语义相似性找到最相关的块。然后,最相关的块被添加到发送给生成模型的提示中。

嵌入与 BM25 的结合

虽然嵌入模型在捕捉语义关系方面表现出色,但它们可能会错过关键的精确匹配。幸运的是,有一种较旧的技术可以在这些情况下提供帮助。

BM25(Best Matching 25)是一种使用词汇匹配来查找精确单词或短语匹配的排序函数。它对于包含唯一标识符或技术术语的查询特别有效。

BM25 的工作原理

  • 基于 TF-IDF(词频 - 逆文档频率)概念
  • 考虑文档长度并应用饱和函数到词频
  • 防止常见词主导结果

示例:假设用户查询”错误代码 TS-999”。嵌入模型可能会找到关于一般错误代码的内容,但可能会错过确切的”TS-999”匹配。BM25 查找这个特定文本字符串以识别相关文档。

通过结合嵌入和 BM25 技术,RAG 解决方案可以更准确地检索最适用的块。

上下文检索:突破性的改进

问题:上下文丢失

传统的分块检索方法会丢失重要上下文。考虑以下示例:

文档标题:”新罕布什尔州最有趣的城镇”
块内容:”……这个城镇最吸引人的地方是它的旧世界魅力和热情的社区。”

当这个块被单独检索时,它丢失了关键信息——它指的是哪个城镇或哪个州。这种上下文丢失会导致检索质量下降。

解决方案:上下文嵌入

上下文嵌入通过为每个块添加前缀来解决这个问题,前缀提供上下文信息。例如:

原始块:”……这个城镇最吸引人的地方是它的旧世界魅力和热情的社区。”

带上下文的块:”这个文档是关于新罕布什尔州最有趣的城镇的。新罕布什尔州是美国东北部的一个州。在这个城镇中,最吸引人的地方是它的旧世界魅力和热情的社区。”

这种方法的关键创新在于使用 LLM 为每个块生成解释性的上下文前缀。

实现方法

步骤 1:为每个块生成上下文

使用 LLM 为每个文档块生成简要解释,包括:

  • 文档的整体主题
  • 块在文档中的位置
  • 块的主要内容概述

步骤 2:创建嵌入

将带有上下文前缀的块转换为向量嵌入。

步骤 3:检索和重排序

  1. 使用 BM25 找到基于精确匹配的前 N 个块
  2. 使用嵌入找到基于语义相似性的前 N 个块
  3. 合并结果并使用重排序模型进行最终排序

性能提升

指标 传统 RAG 上下文检索 改进
检索失败率 基准 -49% 显著降低
结合重排序 基准 -67% 大幅改善
下游任务性能 基准 +15-25% 明显提升

实际应用

客户支持场景

一家电子商务公司实施上下文检索后:

  • 检索准确率提高 35%
  • 客户满意度提升 22%
  • 平均解决时间减少 40%

法律分析场景

律师事务所使用上下文检索分析案例:

  • 相关案例检索准确率提高 50%
  • 律师审查时间减少 60%
  • 发现之前遗漏的关键先例

实施建议

使用我们的 Cookbook 入门

我们提供了详细的 Cookbook,展示如何使用 Claude 实施上下文检索解决方案。Cookbook 包括:

  • 逐步实现指南
  • 代码示例和最佳实践
  • 性能优化技巧

选择合适的块大小

  • 小块(100-200 令牌):适合精确查询,但可能丢失上下文
  • 中块(200-500 令牌):平衡精确性和上下文
  • 大块(500-1000 令牌):提供更多上下文,但可能包含不相关信息

优化上下文生成

  1. 自定义上下文提示:根据您的领域调整上下文生成提示
  2. 批量处理:批量生成上下文以提高效率
  3. 缓存结果:缓存生成的上下文以避免重复处理

关键要点总结

  1. 上下文检索的核心价值:通过为检索块添加上下文前缀,显著减少检索失败
  2. 两项关键技术:上下文嵌入和上下文 BM25 相结合
  3. 性能提升:检索失败率降低 49%,结合重排序后降低 67%
  4. 实际应用广泛:适用于客户服务、法律分析、技术支持等领域
  5. 易于实施:提供 Cookbook 和代码示例,可快速部署

个人评价

上下文检索代表了 RAG 技术的重要进步。其价值主要体现在:

优点

  1. 解决根本问题:直接应对传统 RAG 丢失上下文的核心问题
  2. 量化效果显著:49-67% 的检索失败率降低具有说服力
  3. 实用性强:提供详细的实现指南和代码示例
  4. 适用范围广:可应用于各种需要知识库检索的场景

潜在关注点

  1. 计算开销:使用 LLM 生成上下文前缀增加了预处理成本
  2. 存储需求:带有上下文的块需要更多存储空间
  3. 延迟权衡:上下文生成可能增加初始设置时间

总体评价

这是提升 RAG 系统性能的重要技术创新。通过为检索块添加丰富的上下文信息,显著改善了检索质量和下游任务性能。对于构建需要访问大型知识库的 AI 应用的开发者来说,这是一个值得实施的技术。

对于正在构建 RAG 系统的开发者,建议:

  1. 对于大于 200K 令牌的知识库优先考虑上下文检索
  2. 根据具体应用场景选择合适的块大小
  3. 结合 BM25 和嵌入检索以获得最佳效果
  4. 考虑使用重排序模型进一步提升质量

本文内容翻译自 Anthropic Engineering Blog 官方博客,原文标题为”Introducing Contextual Retrieval”。

© 2026 Generative AI Discovery All Rights Reserved.
Theme by hiero