在现代人工智能系统架构中,当大型语言模型(LLMs)和向量数据库吸引着大部分目光时,一个更为基础的处理过程正在幕后默默工作——它最终决定了系统输出的质量、可靠性和相关性。这个过程就是分块(Chunking):在信息到达模型之前对其进行策略性分割的关键步骤。作为RAG(检索增强生成)系统的"隐藏架构",分块技术的优劣直接影响着LLM的理解、推理和回答能力,堪称AI应用的"智能基石"。
分块的核心价值与三元挑战
分块的本质是将大型文档分解为更小、更易管理的"块",再将其嵌入向量数据库。这就像给模型提供易于消化的故事片段,而非一次性灌输完整手稿。这些块经过嵌入、存储后,可基于语义相关性进行检索。优质的分块能让AI响应更精准,而拙劣的分块则会导致幻觉、片面回答或无关结果。
分块过程面临着三个相互竞争的核心目标,构成了独特的"三元挑战":
- 块大小
:较大的块提供更丰富的上下文,但难以精确检索;较小的块更适合查询,但可能缺乏完整性
- 上下文丰富度
:每个块需要包含足够的周边信息,使LLM能够清晰推理
- 检索精度
:块必须在语义上紧凑,以确保向量搜索时的正确匹配
这种"精度-丰富度-大小"的三角平衡,使分块既是科学也是艺术。从自然语言处理的发展历程看,分块技术已从 rigid 的固定长度分割,发展到递归分块器,再到如今模仿人类认知策略的语义和智能体感知方法。
基础分块策略:从简单到智能的演进
固定大小分块:入门级解决方案
固定大小分块如同工具箱中的锤子,不考虑文本内容或结构,仅基于字符或token计数定期分割文档。例如将文档按每500个token或1000个字符进行等长划分,具有一致性、可预测性和高速处理的优点。
但其简单性也是最大缺点:由于不关注句子或段落边界,常导致思想被截断、语法破碎和尴尬的块过渡,增加检索器和LLM的处理难度。关键参数包括:
chunk_size
:每个块的最大字符或token数,用于平衡上下文与精度
chunk_overlap
:设置块之间的重叠部分(通常为块大小的10-2