Chunk策略
场景核心目标常用策略RAG / AI语义完整性、检索准确率递归切分 (Recursive)语义切分 (Semantic)、重叠 (Overlap)前端打包加载速度、缓存利用率路由懒加载、Vendor 分离网络传输实时性、稳定性分块传输编码、断点续传。
·
“Chunk 策略”(Chunking Strategy)是一个在计算机科学中广泛使用的术语,根据你所处的具体技术领域(是AI/大模型、前端开发,还是网络传输),它的含义完全不同。
鉴于当前的技术热点,最常见的语境通常是 RAG(检索增强生成)和 LLM(大语言模型) 的数据处理。
以下我将重点介绍 AI/RAG 中的 Chunk 策略,并在最后简要补充其他领域的含义。
一、 RAG / LLM 中的 Chunk 策略 (核心重点)
在构建 RAG 应用时,我们不能把几百页的文档直接塞给大模型(受限于 Context Window 上下文窗口和检索精度)。我们需要将长文本切割成小的“块”(Chunks),然后进行向量化(Embedding)和存储。
开发者的设计策略通常围绕“如何切分才能最大限度保留语义完整性”展开:
1. 固定大小切分 (Fixed-size Chunking)
这是最基础、最简单粗暴的策略。
- 原理: 设定一个固定的字符数(如 500 字符)或 Token 数,切完即止。
- 关键参数:Overlapping(重叠)。 为了防止切分点正好把一句话或一个逻辑切断,开发者通常会设置 10%-20% 的重叠窗口(例如:Chunk大小 512,重叠 50)。
- 优缺点: 速度极快,但容易破坏语义连贯性。
2. 递归字符切分 (Recursive Character Chunking)
这是目前最常用的“通用”策略(如 LangChain 的默认策略)。
- 原理: 尝试按层级分隔符进行切分。
- 先尝试按段落 (
\n\n) 切。 - 如果块还太大,再按句子 (
.) 切。 - 最后才按单词或字符切。
- 先尝试按段落 (
- 优缺点: 能较好地保持段落和句子的完整性,语义保留效果优于固定大小。
3. 语义切分 (Semantic Chunking)
这是一种更高级的策略,不依赖符号,而是依赖“含义”。
- 原理:
- 先将文档按句子拆分。
- 计算相邻句子的向量相似度(Cosine Similarity)。
- 如果两句之间的相似度很高,说明它们在讲同一件事,就归为一个 Chunk。
- 一旦相似度骤降,说明话题变了,这就作为一个新的切分点。
- 优缺点: 检索精准度极高,不会把无关内容混在一起;但计算成本高,处理速度慢。
4. 结构化/特定格式切分 (Content-specific Chunking)
针对特定格式文档的策略。
- Markdown/HTML: 按照标题(Headers)层级切分,保证同一个 Section 的内容在一起。
- 代码 (Code): 按照类(Class)、函数(Function)定义来切分,防止把一个函数的一半切到另一个块里。
5. 父子索引策略 (Parent-Child / Small-to-Big Chunking)
这是一个非常聪明的检索策略设计。
- 原理:
- 切分时: 把文档切成非常小的块(Child Chunk)用来做向量索引,同时保留原本的大块(Parent Chunk)。
- 检索时: 搜索匹配的是“小块”(因为小块语义聚焦,更容易匹配)。
- 生成时: 将匹配到的小块所属的“大块”或者是“整个窗口”喂给 LLM。
- 优缺点: 既保证了检索的高命中率,又保证了 LLM 回答时有足够的上下文。
二、 其他常见领域的 Chunk 策略
为了防止误解,如果你的场景不是 AI,可能是以下情况:
1. HTTP 传输 (Chunked Transfer Encoding)
- 场景: 服务器发送动态生成的内容(如视频流、大文件下载)。
- 策略: 服务器不一次性告诉浏览器内容多长(不设 Content-Length),而是产生一部分数据就发一部分。
- 目的: 降低首字节延迟(TTFB),让用户更快看到页面或开始下载。
2. 前端开发 (Webpack/Vite Chunking)
- 场景: 现代网页应用(SPA)打包。
- 策略(Code Splitting): * Vendor Chunk: 把 React/Vue 等第三方库单独打包(因为它们变动少,利于浏览器缓存)。
- Route-based Chunk: 用户访问“首页”时,只加载首页的代码,访问“设置页”时再异步加载设置页的代码(Lazy Loading)。
- 目的: 减少首屏加载时间。
3. 大文件上传 (File Upload Chunking)
- 场景: 上传几 GB 的视频文件。
- 策略: 前端把文件切片(如每片 2MB),一片片上传。如果某一片失败了,只需要重传那一片(断点续传)。
总结与建议
| 场景 | 核心目标 | 常用策略 |
|---|---|---|
| RAG / AI | 语义完整性、检索准确率 | 递归切分 (Recursive)、语义切分 (Semantic)、重叠 (Overlap) |
| 前端打包 | 加载速度、缓存利用率 | 路由懒加载、Vendor 分离 |
| 网络传输 | 实时性、稳定性 | 分块传输编码、断点续传 |
更多推荐


所有评论(0)