上下文检索(Contextual Retrieval):一个显著提升RAG检索准确率的创新方法

上下文检索(Contextual Retrieval):一个显著提升RAG检索准确率的创新方法

在构建基于大语言模型的AI应用时,如何让模型准确获取所需的背景知识是一个关键挑战。传统的检索增强生成(RAG)方法在编码信息时往往会丢失上下文,导致检索失败。今天要介绍的上下文检索(Contextual Retrieval)技术创新性地解决了这个问题,能将检索失败率降低高达67%。

一、什么是上下文检索?

其最大特点是:在chunk编码前预先添加解释性的上下文信息,大幅提升检索准确率。

上下文检索是一种改进RAG系统检索步骤的新方法,它包含两个核心技术:

1. 上下文嵌入(Contextual Embeddings)

上下文嵌入通过在文本块编码前添加解释性上下文,来提升语义检索的准确性:

# 传统方式
chunk = "收入增长率为3%"
embedding = encode(chunk)

# 上下文嵌入
context = "这是ACME公司2023年Q2财报中关于季度收入的描述"
contextual_chunk = context + chunk
enhanced_embedding = encode(contextual_chunk)

主要优势:

  • 保留了文档的语境信息
  • 提升了语义理解的准确度
  • 减少歧义和误检索

2. 上下文BM25(Contextual BM25)

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

# 传统BM25
score = bm25(query="ACME Q2收入", text="收入增长率为3%")

# 上下文BM25
context = "ACME公司2023年Q2财报 | 季度收入部分"
contextual_text = context + ": 收入增长率为3%"
enhanced_score = bm25(query="ACME Q2收入", text=contextual_text)

核心特点:

  • 结合精确词匹配和上下文信息
  • 提高关键词检索准确率
  • 特别适合处理专业术语和数字信息

这两种技术的结合使用创造了显著的协同效应:

  • 上下文嵌入提供深层语义理解
  • 上下文BM25确保关键信息精确匹配
  • 双管齐下大幅提升检索质量

二、为什么需要上下文检索?

1. 传统RAG的局限性

传统RAG系统在将文档分块时会丢失重要上下文。例如对于这样一个问题: “ACME公司2023年Q2的收入增长是多少?”

相关的文本块可能只包含:“公司收入比上季度增长了3%。”

  • 没有指明是哪家公司
  • 没有说明具体时间
  • 难以判断是否为正确信息

2. 显著的性能提升

上下文检索带来的改进:

  • 单独使用上下文嵌入:检索失败率降低35%
  • 结合上下文BM25:检索失败率降低49%
  • 配合重排序技术:检索失败率降低67%

三、如何实现上下文检索?

1. 基本流程

  1. 1. 文档预处理:
original_chunk = "公司收入比上季度增长了3%。"

contextualized_chunk = """
这段内容来自ACME公司2023年Q2的SEC文件,
上季度收入为3.14亿美元。
公司收入比上季度增长了3%。
"""
  1. 1. 使用Claude生成上下文:
prompt = """
<document>
{完整文档}
</document>

这是我们要处理的文本块:
<chunk>
{文本块内容}
</chunk>

请简要说明这个文本块在整个文档中的上下文,以提升检索效果。
只需给出简洁的上下文描述,无需其他内容。
"""

2. 实现考虑因素

标准检索增强生成 (RAG) 系统,使用嵌入和最佳匹配 25 (BM25) 来检索信息。TF-IDF(术语频率-逆文档频率)衡量单词重要性并构成 BM25 的基础

上下文检索是一种提高检索准确性的预处理技术

  1. 文本分块策略
  • 合理的块大小
  • 适当的重叠度
  • 边界划分方式
  1. 嵌入模型选择
  • Gemini和Voyage效果最佳
  • 不同模型受益程度不同
  1. 提示词优化
  • 可针对具体领域定制
  • 考虑添加关键术语解释
  1. 检索数量权衡
  • 实验表明检索20个块效果最好
  • 需要平衡信息量和模型负担

四、进一步优化:重排序

结合上下文检索和重新排名以最大限度地提高检索准确性

1. 重排序流程

1. 初始检索150个候选块
2. 重排序模型评分
3. 选取最相关的20个
4. 传入LLM生成答案

2. 性能与成本平衡

  • 重排序会增加一定延迟
  • 需要在性能和成本间取舍
  • 建议针对具体场景测试调优

五、最佳实践总结

  1. 技术组合建议:
  • 使用Voyage或Gemini的嵌入
  • 开启上下文嵌入和BM25
  • 添加重排序步骤
  • 检索前20个相关块

2. 性能提升效果:

  • 各项技术优化叠加
  • 检索失败率最高降低67%
  • 显著提升下游任务表现

上下文检索技术为RAG系统带来了革命性的提升,是构建高性能AI应用的重要工具。希望本文能帮助开发者更好地理解和应用这一技术创新!


六、最后分享

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

### LangChain-Chatchat 参数优化方法及最佳实践 为了有效优化 LangChain-Chatchat 的参数并提升其性能,可以采取一系列策略和技术手段。以下是具体的优化措施: #### 1. 利用内置评估和优化工具 LangChain 提供了丰富的评估指标和优化工具来帮助开发者深入了解模型的表现,并据此调整参数设置。通过这些工具可以获得关于模型准确性和效率的关键洞察[^3]。 ```python from langchain import evaluate, optimize # 假设已经定义好了训练数据集 train_data 和验证数据集 val_data evaluator = evaluate.Evaluator() metrics = evaluator.evaluate_model(model=model, dataset=val_data) optimizer = optimize.Optimizer(metrics=metrics) optimized_params = optimizer.optimize_parameters() ``` #### 2. 调整超参数配置 对于基于大语言模型的应用程序来说,合理的超参数选择至关重要。这包括但不限于学习率、批次大小以及迭代次数等。可以通过网格搜索或随机搜索的方法找到最适合当前任务的最佳组合。 ```python import numpy as np from sklearn.model_selection import GridSearchCV param_grid = { 'learning_rate': [0.001, 0.01], 'batch_size': [8, 16, 32], } grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5) best_params = grid_search.best_params_ ``` #### 3. 应用检索增强生成 (RAG) 技术 采用 RAG 方法可以在一定程度上改善对话系统的响应质量。具体而言,在生成回复之前先从外部资源中检索相关信息作为上下文输入给模型,从而使得最终输出更加贴合实际需求[^4]。 ```python from llama_index import LlamaIndex from qwen import QwenModel rag_system = LlamaIndex().build_retrieval_augmented_generation(QwenModel()) contextual_response = rag_system.generate(context="...", query="...") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值