乐于分享
好东西不私藏

RAG技术深度解析(二):文档分块与向量化技术详解

RAG技术深度解析(二):文档分块与向量化技术详解

在上一篇文章中,我们了解了RAG的基本概念和系统架构。本篇将深入离线阶段的两大核心技术——文档分块向量化,它们决定了RAG系统检索质量的上限。

一、文档分块(Chunking):构建可检索的知识单元

在第一篇中我们提到,RAG的离线阶段需要将原始文档转换为可检索的向量表示。而这一切的起点,就是文档分块

为什么分块很重要?

想象你要在一本500页的技术手册中查找某个知识点。如果把整本书当作一个整体来检索,不仅效率低下,检索结果也不够精准。但如果切分得太细——比如每个字一个片段——又会丢失上下文信息。

文档分块的核心目标:生成既能独立表达语义、又适配向量化处理的知识单元,为后续精准检索奠定基础。

分块质量直接决定了检索效果。一个好的分块需要满足四个核心要求:

  • 语义完整性– 每个块能独立表达完整概念

  • 长度适配– 适配Embedding模型的输入限制(通常200-1000 tokens)

  • 上下文连贯– 保持文本的逻辑关联性

  • 检索友好– 优化向量检索的准确性

五大分块策略详解

我们以一段示例文本来说明不同策略的效果:

原始文档 “机器学习是人工智能的分支。深度学习是机器学习的子集。神经网络是深度学习的基础。”

策略一:固定长度分割(Fixed-Size Chunking)

原理:

按固定字符数或token数机械切分,不考虑文本内容。这是最简单直接的分块方式——设定一个数字,到了就切。

注意看:“机器学习”这个完整的词被硬生生拆到了两个块中——块1以”机器”结尾,块2以”学习”开头。这就是固定长度分割最大的问题:它完全不理解文本内容,到了字数就切。

一句话总结 速度最快、精度最低,适合快速验证原型,不推荐生产环境直接使用。

策略二:语义边界分割(Sentence/Paragraph Splitting)

原理:按自然语言边界切分——识别句号、问号、换行等标记,在这些位置分割,确保每个块都是一个完整的语义单元。

和固定长度分割对比,差异一目了然:每个块都是一句完整的话,没有任何词汇被截断

一句话总结 最常用的基础策略,简单有效,适合绝大多数结构清晰的文档。

策略三:递归层次分割(Recursive Character Splitting)

原理:按层次递归处理——先尝试按段落分割,如果块还是太大,再按换行分,还太大就按句子分……逐层细化,直到满足块大小要求。这是LangChain 默认推荐的策略。

递归的核心思想是尽量保持更大粒度的语义单元。只有当上层分割结果太大时,才会降级到更细的粒度。

一句话总结 最均衡的策略,不知道选什么就选它。

策略四:结构感知分割(Structure-Aware Splitting)

原理:

识别文档的层级结构(标题、正文、表格、代码块),按结构类型分别处理。它不是在”切文本”,而是在”解析文档结构”。

结果:标题+内容形成完整章节块,表格作为独立块保持结构完整,不会出现表格被从中间截断的情况

一句话总结 结构化文档的最佳选择,效果精准,但需要文档本身格式规范。

策略五:LLM智能分割(Semantic Chunking with LLM)

原理:利用大语言模型或 Embedding 模型理解文本内容,智能识别语义边界。它不依赖任何规则或标记,而是让 AI真正”读懂”文本,在主题转换的位置自动切分。

两种主要实现方式:

Embedding 相似度方法:计算相邻句子的语义向量相似度,当相似度骤降时说明话题发生了转换,在该位置切分

LLM 提示词方法:直接让大模型阅读文本并标注最佳分割点

一句话总结 分块质量天花板,但成本也是天花板。适合小规模、高价值的精准场景。

分块策略对比总结

策略
语义完整性
实现难度
计算成本
推荐场景
固定长度
⭐⭐☆☆☆
⭐☆☆☆☆
快速原型、结构化文档
语义边界
⭐⭐⭐⭐☆
⭐⭐☆☆☆
段落清晰的文本
递归层次
⭐⭐⭐⭐☆
⭐⭐⭐☆☆
混合格式、长文档
结构感知
⭐⭐⭐⭐☆
⭐⭐⭐☆☆
技术文档、HTML/Markdown
LLM智能
⭐⭐⭐⭐⭐
⭐⭐⭐⭐☆
复杂文档、高精度需求

重叠策略(Overlap)的作用

仅仅把文档切分成块还不够。当我们在两个块的边界处切割时,边界附近的上下文信息就丢失了。

重叠的好处:

  • 保留了块边界处的上下文信息
  • 确保跨块的关键信息不会丢失
  • 提升检索时对边界内容的召回率

重叠长度建议:通常为块长度的10%-20%。过多的重叠会增加冗余和存储成本,过少则达不到效果。

不同文档类型的最佳实践

💡 实战建议 先用递归层次分割作为基线,再根据文档特点调整。没有万能策略,A/B测试是验证效果的最佳方式。

二、Embedding向量化:语义的数学映射

完成文档分块后,下一步就是将文本块转换为计算机能”理解”的数学表示——这就是Embedding向量化

什么是Embedding?

Embedding是将文本转换为数学向量的技术。计算机原本只能处理数字,通过Embedding,我们把每个词、每句话都变成了一串数字(通常是768维或1536维的向量),计算机就能比较哪些文本意思相近、哪些不相关。

简单比喻:文字的”身份证号码”

就像每个人都有身份证号码一样,Embedding给每个词汇都分配了一个”数字身份证”。但这个身份证很特别:

意思相近的词,身份证号码也相近— 例如:”猫”和”小猫”的向量很相似

意思不同的词,身份证号码差得很远— 例如:”猫”和”房子”的向量差别很大

有关系的词,身份证之间有规律— 例如:”国王-男人+女人≈女王”

Embedding的工作原理

核心原理:物以类聚,人以群分。

如果两个词经常在相似的上下文中出现,那它们的意思很可能相近。AI模型通过分析千万篇文章,发现了词汇出现的模式,然后给每个词分配一个合适的向量,让意思相近的词在”数字空间”里也靠得更近。

直观理解:词汇的向量表示

为什么RAG用Embedding?

传统的关键词搜索只能做字面匹配。比如你搜”怎么提高代码性能”,系统只找包含”提高””代码””性能”这些词的文档,而”代码优化技巧””程序加速方法”这些语义相同但用词不同的内容就被遗漏了。

Embedding语义搜索则不同:它理解”提高代码性能”和”程序优化”表达的是同一个意思,即使用词完全不同,也能找到相关内容。

Embedding在RAG中的四大价值:

理解同义词– “天气不错”和”天空晴朗”意思相同,向量也相近

支持数学运算– 可以计算相似度、做聚类,实现精确的语义比较

检索速度快– 向量计算比文本匹配快很多,秒级搜索百万文档

跨语言理解– “Hello”和”你好”,不同语言,相同含义

主流Embedding模型全景对比

多模态Embedding模型

Embedding模型选型指南

面对这么多模型,如何选择?按以下决策树思考:

向量化最佳实践

实践一:如何评估Embedding质量

选好了模型,怎么验证效果?三步评估法:

语义相似度测试– 准备一批已知语义关系的文本对,计算余弦相似度,验证”相似的分数高、不相似的分数低”

检索准确率评估– 用真实查询测试,检查Top-5召回结果中有多少是相关的

可视化分析– 用t-SNE/UMAP降维,观察向量空间中的聚类分布是否合理

实践二:领域微调技巧

通用Embedding模型在垂直领域(如医疗、法律、金融)效果可能不够理想。此时可以考虑微调。

何时需要微调?

  • 领域术语频繁出现,通用模型理解不准确
  • 检索准确率低于80%
  • 存在大量行业特有的同义词和缩写

微调方法(对比学习):

准备领域数据:正样本对(语义相似的文本对)+ 负样本对(不相似的文本对)

在通用模型基础上继续训练

优化目标:让正样本对的向量更近,负样本对更远

通常几千到几万条训练数据即可获得明显提升

实践三:常见陷阱与注意事项

陷阱1:查询和文档使用不同的Embedding模型

这是最常见的错误。查询和文档必须使用同一个Embedding模型编码,否则它们不在同一个语义空间中,检索结果毫无意义。

陷阱2:向量维度选择不当

维度越高不一定越好。3072维的模型在小数据集上可能过拟合,而768维在大多数场景下已经够用。选择支持维度截断(如Matryoshka)的模型可以灵活调整。

陷阱3:忽略归一化处理

部分Embedding模型的输出向量未归一化。在使用余弦相似度时,需要先对向量做L2归一化,否则会影响检索精度。

陷阱4:批量处理的内存溢出

对大量文本做Embedding时,一次性加载太多数据会导致OOM(内存溢出)。建议分批处理(batch_size=32-128),尤其在GPU资源有限的情况下。

解决方案清单:

  • 统一使用同一个Embedding模型
  • 根据数据规模选择合适的维度
  • 检查模型文档确认是否需要归一化
  • 使用批量处理 + 流式写入策略
  • 定期评估Embedding质量,及时发现退化

三、分块与向量化的协同优化

分块和向量化不是独立的两个步骤,它们需要协同配合。

关键原则

1. 块大小与Embedding模型匹配

每个Embedding模型都有最大输入长度限制。如果块太长超过限制,会被截断导致信息丢失:

Embedding模型
最大输入长度
建议块大小
BGE-large-zh
512 tokens
300-450 tokens
OpenAI text-embedding-3
8191 tokens
500-1000 tokens
Gemini Embedding
2048 tokens
500-800 tokens
Qwen3 Embedding
8192 tokens
500-1000 tokens

2. 短块与长块的取舍

短块(200-400 tokens):语义聚焦,检索精准度高,但可能丢失上下文

长块(600-1000 tokens):上下文丰富,但语义可能不够聚焦,检索噪声大

推荐:从500 tokens开始,根据评估结果调整

3. 元数据增强

在向量化时,可以将元数据(文档标题、章节名、来源等)附加到文本块中,帮助Embedding模型更好地理解上下文:

原始块: "工作满1年:5天年假"增强后: "[员工手册-第五章-年假政策] 工作满1年:5天年假"

这样即使块内容很短,Embedding也能理解这段文本的上下文。

总结与下期预告

通过本文,我们深入了解了RAG系统离线阶段的两大核心技术。

文档分块的关键要点:

选择合适的分块策略– 根据文档类型选择,递归层次分割是优秀的默认选择

善用重叠机制– 10%-20%的重叠比例保留边界上下文

块大小适配模型– 确保不超过Embedding模型的输入限制

向量化的关键要点:

模型选型要匹配场景– 中文选BGE,多语言选Gemini/Qwen3

查询与文档必须同模型– 最基本也最重要的原则

关注质量评估与微调– 通用模型不够时,少量数据微调即可显著提升

系列文章预告

► 第三篇:向量数据库与索引优化

  • HNSW、IVF、PQ等索引算法深度解析
  • Milvus、Pinecone、Qdrant等数据库选型指南
  • 从500ms优化到50ms的性能调优实战

► 第四篇:召回与重排技术进阶

  • 多路召回策略设计(向量+全文+图谱)
  • Cross-Encoder重排模型原理与应用
  • 混合检索的融合策略详解

► 第五篇:技术对比、应用场景与最佳实践

  • RAG vs Fine-tuning vs Prompt Engineering
  • 六大典型应用场景深度分析
  • 生产级RAG系统的完整最佳实践

分块决定检索的粒度,向量化决定检索的精度。两者协同,才能构建高质量的RAG知识库。

关于本系列: 《RAG技术深度解析》系列致力于系统性、实战性地讲解RAG技术。无论你是AI从业者、技术管理者,还是对AI技术感兴趣的开发者,都能从中获益。

如果这篇文章对你有帮助,欢迎点赞、在看和转发,也欢迎在评论区分享你的实践经验和遇到的问题。我们下期见!

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » RAG技术深度解析(二):文档分块与向量化技术详解

评论 抢沙发

7 + 8 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮