RAG-分块策略

分块策略在检索增强生成(RAG)方法中起着至关重要的作用,它使文档能够被划分为可管理的部分,同时保持上下文。每种方法都有其特定的优势,适用于特定的用例。将大型数据文件拆分为更易于管理的段是提高LLM应用效率的最关键步骤之一。目标是向LLM提供完成特定任务所需的确切信息,不多也不少。

什么是分块

分块涉及将文本划分为可管理的单元或“块”,以实现高效处理。这种分割对于语义搜索、信息检索和生成式 AI 应用等任务至关重要。每个块都保留上下文和语义完整性,以确保结果连贯。

分块技术及其策略

策略名称描述优点缺点实施建议

固定长度分块

将文本按预定义长度(如基于令牌或字符)分割,适合简单文档或快速处理。

简单性、统一性、效率

上下文丢失、相关性问题、潜在信息丢失

选择合适大小,考虑使用重叠窗口以保持上下文

基于句子的分块

按句子边界分割,确保每个块是完整的思想,适合短响应如客户查询。

保持上下文、易于实现、更好的可读性

块大小不一致、不适合长句、控制力弱

使用NLP库检测句子,必要时合并短句

段落分块

将文档按段落分割,每个段落通常包含完整想法或主题,适合结构化文档。

更丰富的上下文、逻辑分割

大小不一致、可能超出行牌限制

监控块大小,必要时分割大段落以保持上下文

文档分块

将整个文档视为一个块或最小分割,保持完整结构和上下文,适合法律或医学文档。

保持完整上下文、适合结构化文本、简单

可扩展性问题、效率低、缺乏细节提取

适用于不希望分割影响流程的场景

滑动窗口分块

通过滑动窗口创建重叠块,确保相邻块共享内容,适合需保持跨部分上下文的文档。

上下文连续性、提高检索效果

冗余、计算成本高

优化窗口大小和重叠,使用去重技术处理冗余

语义分块

使用嵌入或机器学习模型按语义意义分割,确保每个块主题连贯。

上下文相关性、灵活性、提高检索准确性

复杂性、处理时间长、计算成本高、阈值调整

利用预训练模型,平衡成本和粒度

递归分块

使用层次分隔符或多个分隔符逐步分割为小块,适合大型结构化文档。

层次上下文、可扩展性、意义块、细粒度控制

实现复杂、可能丢失上下文、复杂性高、计算开销大

使用文档结构标识层次,存储块位置元数据

上下文增强分块

为每个块添加周围块的摘要或元数据,保持序列间的上下文,适合长文档。

增强上下文、提高连贯性

复杂性、存储开销大

生成简洁摘要,考虑用关键术语或概念作为元数据

模式特定分块

按内容类型(如文本、表格、图像)分别处理,每个类型按其性质分块。

定制方法、提高准确性

实现复杂、集成困难

使用OCR处理图像,将表格转为结构化数据,保持索引一致

代理分块

使用AI(如大型语言模型)按内容结构和语义建议块边界,或按代理角色任务组织。

任务导向效率、聚焦相关数据、灵活性、智能分割

复杂设置、计算密集、成本高、可能过分专业化、丢失全局上下文

选择性使用,优化LLM提示,明确代理角色和任务规则

子文档分块

总结整个文档或大节并将摘要作为元数据附加到单个块,适合大型文档集。

层次检索、上下文深度

额外处理、元数据管理复杂

自动化摘要生成,高效存储摘要

混合分块

结合多种分块策略,动态适应不同查询类型或文档结构,适合多用途系统。

灵活性、优化性能

逻辑复杂、维护难度大

制定选择策略的标准,广泛测试以确保可靠性

基于令牌的分块

按预定义令牌数(如单词或子词)分割,确保块在模型令牌限制内。

优化语言模型、精确控制块大小、一致性

上下文碎片化、忽略语义结构、灵活性有限

确保块在模型令牌限制内

分块优化关键策略

  • 重叠块:包括块之间的某些重叠可以确保在段落之间不会丢失关键信息。这对于需要无缝过渡的任务尤其重要,如对话生成或摘要。
  • 动态块大小:根据模型的容量或文本的复杂性调整块大小可以提升性能。较小的块适合 BERT 等模型,而较大的块适用于需要更广泛上下文的生成任务。
  • 递归:递归或多级分块允许处理复杂的文本结构,例如将文档拆分为章节、节和段落。
  • 向量化的对齐:分块技术的选择对检索系统中的向量表示有显著影响。句子转换器和 BERT 或 GPT 等嵌入通常用于与分块粒度对齐的最佳向量化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络编程 深入解析TFTP协议:基于UDP的文件传输实战

知识点1【TFTP的概述】 学习通信的基本:通信协议(具体发送上面样的报文)、通信流程(按照什么步骤发送) 1、TFTP的概述 tftp:简单文件传输协议,**基于UDP,**不进行用户有效性验证 …

「数据可视化 D3系列」入门第十一章:力导向图深度解析与实现

D3.js 力导向图深度解析与实现 力导向图核心概念 力导向图是一种通过物理模拟来展示复杂关系网络的图表类型,特别适合表现社交网络、知识图谱、系统拓扑等关系型数据。其核心原理是通过模拟粒子间的物理作用力(电荷斥力、弹簧引力等)自动计…

音频格式转换

1. 下载ffmpeg https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-7.1.1-full_build.7z 2. 配置ffmpeg环境变量 3.安装pydub pip install pydub 4.编写转化工具代码 from pydub import AudioSegment def convertM4aToWav(m4a,wav):sound AudioSegment.from_file(m4a, f…

基于spring boot 集成 deepseek 流式输出 的vue3使用指南

本文使用deepseek API接口流式输出的文章。 环境要求 jdk17 spring boot 3.4 代码如下: package com.example.controller;import jakarta.annotation.PostConstruct; import org.springframework.ai.chat.messages.AssistantMessage; import org.springframework.ai.chat.mes…

微博辐射源和干扰机

微波辐射源和干扰机是电子战和通信领域中的两个重要概念,它们在军事、民用及科研中具有广泛应用。以下是两者的详细解析及其相互关系: ‌1. 微波辐射源‌ ‌定义‌: 微波辐射源是指能够主动发射微波(频率范围通常为 ‌300 MHz&…

2025年4月16日华为留学生笔试第三题300分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 智慧城市网络优化 问题描述 K小姐是一家智慧城市服务提供商的网络架构师。她负责规划城市边缘计算节点的布局,以提供更快速、稳定的网络服务。 城市内有 n n

多线程编程的简单案例——单例模式[多线程编程篇(3)]

目录 前言 1.wati() 和 notify() wait() 和 notify() 的产生原因 如何使用wait()和notify()? 案例一:单例模式 饿汉式写法: 懒汉式写法 对于它的优化 再次优化 结尾 前言 如何简单的去使用jconsloe 查看线程 (多线程编程篇1)_eclipse查看线程-CSDN博客 浅谈Thread类…

pytorch基本操作2

torch.clamp 主要用于对张量中的元素进行截断(clamping),将其限制在一个指定的区间范围内。 函数定义 torch.clamp(input, minNone, maxNone) → Tensor 参数说明 input 类型:Tensor 需要进行截断操作的输入张…

一次制作参考网杂志的阅读书源的实操经验总结(附书源)

文章目录 一、背景介绍二、书源文件三、详解制作书源(一)打开Web服务(二)参考网结构解释(三)阅读书源 基础(四)阅读书源 发现(五)阅读书源 详细(六…

并发设计模式实战系列(2):领导者/追随者模式

🌟 ​大家好,我是摘星!​ 🌟 今天为大家带来的是并发设计模式实战系列,第二章领导者/追随者(Leader/Followers)模式,废话不多说直接开始~ 目录 领导者/追随者(Leader/…

自求导实现线性回归与PyTorch张量详解

目录 前言一、自求导的方法实现线性回归1.1自求导的方法实现线性回归的理论讲解1.1.1 线性回归是什么?1.1.2线性回归方程是什么?1.1.3散点输入1.2参数初始化1.2.1 参数与超参数1.2.1.1 参数定义1.2.1.2 参数内容1.2.1.3 超参数定义1.2.1.4 超参数内容1.…

2025年机电一体化、机器人与人工智能国际学术会议(MRAI 2025)

重要信息 时间:2025年4月25日-27日 地点:中国济南 官网:http://www.icmrai.org 征稿主题 机电一体化机器人人工智能 传感器和执行器 3D打印技术 智能控制 运动控制 光电系统 光机电一体化 类人机器人 人机界面 先进的运动控制 集成制造系…

线性代数 | 知识点整理 Ref 3

注:本文为 “线性代数 | 知识点整理” 相关文章合辑。 因 csdn 篇幅合并超限分篇连载,本篇为 Ref 3。 略作重排,未整理去重。 图片清晰度限于引文原状。 如有内容异常,请看原文。 《线性代数》总复习要点、公式、重要结论与重点释…

CFD中的动量方程非守恒形式详解

在计算流体力学(CFD)中,动量方程可以写成守恒形式和非守恒形式,两者在数学上等价,但推导方式和应用场景不同。以下是对非守恒形式的详细解释: 1. 动量方程的守恒形式 首先回顾守恒形式的动量方程&#xff…

Leetcode 1504. 统计全 1 子矩形

1.题目基本信息 1.1.题目描述 给你一个 m x n 的二进制矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。 1.2.题目地址 https://leetcode.cn/problems/count-submatrices-with-all-ones/description/ 2.解题方法 2.1.解题思路 单调栈 时间复杂度&…

【Docker】运行错误提示 unknown shorthand flag: ‘d‘ in -d ----详细解决方法

使用docker拉取Dify的时候遇到错误 错误提示 unknown shorthand flag: d in -dUsage: docker [OPTIONS] COMMAND [ARG...]错误原因解析 出现 unknown shorthand flag: d in -d 的根本原因是 Docker 命令格式与当前版本不兼容,具体分为以下两种情况: 新…

华为OD机试真题——攀登者2(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《攀登者2…

qt硬件与软件通信中 16进制与十进制转化

1. 首先上代码, 这是在qt语言上的操作 截取 01 03 0C 00 00 00 00 00 00 00 0C 00 0C 00 0C 93 70 这串16进制数值进行处理,截取这样一段内容 00 0C 00 0C 00 0C 字节数组转字符串。从bytearray数组转换为string. QString CustomTcpSocket::recieveInfo() {QByteArr…

图形变换算法

一、学习目的 (1)掌握多面体的存储方法。 (2)掌握图形的几何变换及投影变换。 (3)掌握三维形体不同投影方法的投影图的生成原理。 (4)掌握多面体投影图绘制的编程方法。 二、学…

【JAVAFX】自定义FXML 文件存放的位置以及使用

情况 1:FXML 文件与调用类在同一个包中(推荐) 假设类 MainApp 的包是 com.example,且 FXML 文件放在 resources/com/example 下: 项目根目录 ├── src │ └── sample │ └── Main.java ├── src/s…