RAG 文档切片策略:固定长度 vs 递归 vs 语义切分 引言拿到纯文本后你不能直接把一整篇文档丢给 AI——10 万字的技术文档光 Token 就超了而且检索时相关性评分根本没法用。所以 RAG 第二步是切片Chunking把长文本切成合适大小的段落每段独立做 Embedding 和存储。text.slice(0, 1000)不就行了——不行。切得太粗暴一句话被拦腰截断AI 只看到半句话回答质量直接崩。切片质量有多重要假设知识库里有一段年假制度年假需提前 3 个工作日提交申请经直属上级审批后生效。未使用的年假不可跨年累积但可在当年 12 月折算为加班工资。用户问年假可以跨年吗切得好检索到包含不可跨年累积这句话的片段 → AI 准确回答。切得差恰好在不可跨年中间截断 → AI 回答出错或说信息不足。三个核心参数chunk_size切片大小每段最大字符数。通用场景建议从800 字符开始。chunk_overlap重叠区域相邻切片之间重叠的字符数避免关键信息被切断。一般设 chunk_size 的 10%-20%。separators分隔符按优先级使用\n\n\n。. 空格 逐字符策略一固定长度切片最简单——每 N 个字符切一刀。def split_by_fixed_length(text: str, chunk_size: int 800, chunk_overlap: int 100) - list[str]: chunks [] start 0 while start len(text): end start chunk_size chunks.append(text[start:end].strip()) start end - chunk_overlap return [c for c in chunks if c]优点实现极其简单速度最快。缺点完全无视语义边界经常在句子中间截断。适用场景快速原型、对切片质量要求不高的场景。策略二递归切片推荐默认方案LangChain 的默认实现也是目前最主流的方案。核心原理按分隔符优先级层层递归——先用\n\n分太长再用\n再太长用句号最后才逐字符。from langchain_text_splitters import RecursiveCharacterTextSplittersplitter RecursiveCharacterTextSplitter( chunk_size800, chunk_overlap100, separators[\n\n, \n, 。, ., , , , ],)chunks splitter.split_text(long_text)中文场景建议加上中文标点。, , , 效果远好于默认的英文分隔符。优点尽可能保留完整段落/句子成熟稳定。缺点仍然基于字符规则不理解语义。适用场景大多数通用文档推荐作为默认方案。策略三语义切片最智能的方案——不按字符数切而是按语义相似度切。原理先把文本按句子分割对每个句子生成 Embedding 向量计算相邻句子的相似度在相似度突然下降的地方语义断裂点切分def split_by_semantic(text: str, threshold: float 0.5) - list[str]: sentences split_into_sentences(text) embeddings get_embeddings(sentences) similarities [cosine_similarity(embeddings[i], embeddings[i1]) for i in range(len(embeddings) - 1)] chunks [] current [sentences[0]] for i, sim in enumerate(similarities): if sim threshold and len(.join(current)) 100: chunks.append(.join(current)) current [sentences[i 1]] else: current.append(sentences[i 1]) if current: chunks.append(.join(current)) return chunks优点切片边界最自然语义完整性最好。缺点需要调用 Embedding API有成本速度最慢。适用场景高质量要求的知识库法律、医疗、金融。三种策略对比对比项固定长度递归切片语义切片实现复杂度★★★★★★★切片质量★★★★★★★★★★★速度★★★★★★★★★★★成本零零需要 Embedding API推荐场景快速原型通用默认高精度场景实际结论90% 的场景用递归切片就够了。只有对准确率有极致要求的垂直领域才上语义切片。不同内容类型的切片参数场景chunk_sizechunk_overlap通用文档800100FAQ 知识库300-50050法律合同500-700150代码文件1500200代码文件要用代码专用分隔符\nclass ,\ndef LangChain 也提供了语言专用切片器RecursiveCharacterTextSplitter.from_language(Language.PYTHON, ...)。切片要带元数据dataclassclass Chunk: content: str metadata: dict # source、chunk_index、total_chunks、file_type...这些元数据在检索后回传给 LLM 时非常有用来源: 技术方案.pdf | 第 3/15 段量化评估切片质量用脚本量化不要凭感觉指标说明平均长度太短信息量不足太长检索精度差长度方差方差太大说明切片不均匀边界完整性以完整句子结尾的切片占比递归切片的边界完整性0.857远高于固定长度0.316。总结切片质量直接决定 RAG 效果——garbage chunk in, garbage answer out。递归切片是 90% 场景的最佳选择用RecursiveCharacterTextSplitter加上中文标点。不同内容类型需要不同参数代码大 chunkFAQ 小 chunk合同大 overlap。切片要带元数据来源、序号、总数方便检索溯源。用量化指标评估平均长度、边界完整性不要凭感觉。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】