RAG优化:python从零实现长上下文压缩技术
在RAG中检索文档时,我们经常会得到包含相关和不相关信息的文本块,本文通过上下文压缩,利用选择性压缩算法,将过滤和压缩检索到的文本块,只保留最相关的部分,减少噪音并提高响应质量,成功地将RAG系统的效率提升到了一个新的水平。无论是选择性压缩、摘要压缩还是提取压缩,每种方法都在不同程度上减少了上下文长度,同时保持了关键信息的完整性。希望本文为你提供一些灵感,让你在自己的项目中也能实现类似的优化!
记住:压缩不是目的,而是手段。我们的目标是让AI更智能,而不是更简单!
注意:
- 1 大家可以提前https://studio.nebius.com/注册一个api,然后获取一个api key,免费1刀,
其他平台薅羊毛也可以,很多可以免费薅羊毛!下文的结果是基于"BAAI/bge-en-icl"
- 2 请提前下载数据
- 3 提前准备好你的环境
- 4 本地嵌入模型搭建 基于本地的模型进行语义嵌入,可以利用FlagEmbedding,可以好好学习下,量大的话api的嵌入还是比较贵的哦!
文章目录
- 背景知识-为什么需要上下文压缩
-
- 1. **突破上下文窗口限制**
- 2. **降低噪声干扰**
- 3. **提升计算效率**
-
- 4. **缓解幻觉风险**
- 5. **适配下游任务需求**
- 6. **实现动态上下文聚焦**
- 总结:压缩优化的核心价值
- 附:压缩技术对比
- 从零开始实现上下文压缩
-
- 环境搭建
- 从PDF文件中提取文本
- 对提取的文本进行分块
- 设置OpenAI API客户端
- 构建一个简单的向量存储
- 嵌入生成
- 构建我们的文档处理管道
- 实现上下文压缩
- 实现批量压缩
- 响应生成函数
- 完整的RAG管道与上下文压缩
- 比较带压缩和不带压缩的RAG
- 评估我们的方法
- 运行我们的完整系统(自定义查询)
- 可视化压缩结果
- 更多的长上下文压缩技术方案
-
- 一、**基于模型架构改进的压缩**
- 二、**基于 KV 缓存优化的压缩**
- 三、**上下文内容压缩**
- 四、**混合与训练驱动的压缩**
-
- 五、**RAG 场景