RAG 系统中常用的文本分块策略

66 阅读5分钟

本文系统介绍 RAG 系统中常用的文本分块策略,助你高效构建知识库检索体系。

背景

随着企业知识库中文档数量与类型的不断增多,如何高效地对这些文档进行分块处理,成为 RAG(Retrieval-Augmented Generation)系统中的一个关键问题。不同类型的文档结构差异大,分块维度多样,缺乏统一的标准流程。

目的

本文旨在系统介绍 RAG 中常用的几种分块方式,帮助读者理解不同策略的适用场景,并简化分块的实际操作步骤。


目录


RAG 系统概述

RAG 系统简介

RAG(Retrieval-Augmented Generation)是一种结合检索与生成的混合模型,通过从外部知识库中检索相关信息,辅助大语言模型生成更准确、更具上下文的回答。

RAG 工作流程

  1. 用户输入查询
  2. 检索模块从知识库中查找相关文档片段
  3. 将检索结果与查询一起输入生成模型
  4. 生成模型输出最终回答

分块核心挑战

分块定义与重要性

分块(Chunking)是指将长文本切分为若干较短片段的过程。合理的分块能提升检索效率与生成质量,是 RAG 系统的基石。

分块大小与上下文

分块过大可能导致噪声增多,过小则可能丢失关键上下文。需根据任务需求平衡块大小与信息完整性。


分块策略

固定大小分块

通过设置固定的 token 数量进行分块,可设置重叠 token 以保持上下文连贯。

示例:

原文:Artificial intelligence is transforming technology and shaping the future.
参数:chunk_size = 6, chunk_overlap = 2

块1:Artificial intelligence is transforming technology and
块2:technology and shaping the future.

基于内容的分块

根据标点、换行等自然断句符进行分块,更符合语言结构。

示例:

原文:RAG非常有用。它提升了答案的准确性。开发者都喜欢它。  
分割策略:"\n\n", "\n", ". ", "? ", "! ", " ", ""

块1:RAG非常有用。  
块2:它提升了答案的准确性。  
块3:开发者都喜欢它。

文档结构分块

根据文档的章节、标题、列表等结构进行分块,适用于结构化文档。

  • 技术文档/Markdown分块
    • 按标题分块(##)是绝佳选择。
  • 对话/脚本分块
    • 按说话人切换分块。
  • 长篇文章/论文分块
    • 语义段落分块
  • 代码分块
    • 按函数、类等逻辑单元分块。

语义分块

将语义相近的句子或段落合并为一个块,通常借助嵌入模型或聚类算法实现。

示例:

原文:  
OpenAI发布了新的GPT-4o模型。它在多模态任务上表现卓越。  
苹果公司即将召开全球开发者大会。预计将发布iOS 18和AI功能。

分析:前两句关于"GPT模型",后两句关于"苹果发布会"。

块1:OpenAI发布了新的GPT-4o模型。它在多模态任务上表现卓越。  
块2:苹果公司即将召开全球开发者大会。预计将发布iOS 18和AI功能。

LLM分块

利用大语言模型理解文本内容,按需生成结构化分块结果。

示例:

原文:凉拌黄瓜:黄瓜用刀拍散,切块。加入蒜末、醋、生抽和香油,拌匀即可。  
提示词:请将以下菜谱文本按每道菜拆分成独立的块,并以JSON格式输出。每个JSON对象包含"菜名"和"做法"两个字段。

结果:  
[{  
"菜名": "凉拌黄瓜",  
"做法": "黄瓜用刀拍散,切块。加入蒜末、醋、生抽和香油,拌匀即可。"  
}]

多向量匹配

将同一文本生成多种向量表示(如摘要向量、问题向量、原文向量),以支持不同检索需求。

示例:

原文:光合作用是植物利用光能,将二氧化碳和水转化为有机物(如葡萄糖)并释放氧气的过程。这一过程主要发生在叶绿体中。

摘要向量:"解释了光合作用的基本定义和发生地点。"  
问题向量:"什么是光合作用?"、"光合作用在哪里发生?"、"植物如何进行光合作用?"  
原始文本向量:光合作用是植物利用光能,将二氧化碳和水转化为有机物(如葡萄糖)并释放氧气的过程。这一过程主要发生在叶绿体中。

分块策略决策流程

选择分块策略时应考虑:

  • 文档类型(结构化/非结构化)
  • 检索目标(事实查询/语义理解)
  • 模型限制(上下文长度)
  • 计算资源

最佳实践与工具

分块最佳实践

  1. 结合多种分块策略
  2. 动态调整块大小与重叠度
  3. 评估分块效果与检索性能
  4. 根据反馈迭代优化

分块工具推荐

  • LangChain:提供多种文本分割器
  • Haystack:支持自定义分块管道
  • LlamaIndex:专为RAG设计的分块与检索工具

总结与展望

分块策略总结

  • 固定分块:简单高效,适用于通用场景
  • 内容分块:保留语言结构,适合自然语言文本
  • 语义分块:上下文连贯,检索精度高
  • LLM分块:灵活智能,适用于复杂结构化需求

未来发展趋势

  • 自适应分块:根据查询动态调整块大小与边界
  • 多模态分块:支持图像、表格等多类型数据
  • 端到端优化:将分块与检索、生成联合训练