Python-LangChain框架中,有哪些常用的文本分割方法?

摘要:文档中的文字加载后,就要向量化存在向量数据库里,提供给后面的业务逻辑使用,但是在这之前还需要对文本进行分割,分割后的结果在进行向量化,今天主要讲一讲langchain常用的几种文本分割。 LangChain 文本分割:从基础到进阶的实战指南
文档中的文字加载后,就要向量化存在向量数据库里,提供给后面的业务逻辑使用,但是在这之前还需要对文本进行分割,分割后的结果在进行向量化,今天主要讲一讲langchain常用的几种文本分割。 LangChain 文本分割:从基础到进阶的实战指南 在基于大模型构建知识库、RAG 等应用时,文本分割是核心前置步骤 —— 不合理的分割会导致语义断裂、模型理解偏差,而精准的分割能大幅提升检索和回答质量。本文结合实战场景,拆解 LangChain 中 几 种常用的文本分割方法,从原理到应用场景逐一讲透,帮你快速掌握适配不同场景的分割策略。 一、文本分割的核心逻辑与关键参数 无论哪种分割方法,核心都是通过参数控制文本块的大小和关联性,先理清这几个核心参数,后续方法理解会事半功倍: chunk_size:单个文本块的最大长度(字符 / Token 数),核心作用是适配大模型上下文窗口,避免单块内容过长; chunk_overlap:相邻文本块的重叠长度,通常设为 chunk_size 的 10%-20%,目的是保证语义连续,避免分割后上下文断裂; separators:分割符列表(优先级从高到低),决定文本 “从哪里拆”,支持普通字符(如。、\n)或正则表达式; length_function:长度计算方式,默认按字符数(len),也可自定义为按 Token 数计算,适配不同模型需求。 二、5 种常用分割方法:场景化选型指南 1. 纯句子分割(适配中文语义) 这是最贴合中文表达习惯的分割方式,以中文句子结束符(。!?)为核心分割依据,优先保证每个文本块是完整的句子或句子组。 核心特点:按语义单位拆分,避免切断完整句子,适合新闻、文章、对话等以句子为核心语义单元的文本; 参数技巧:中文场景下 chunk_overlap 可设为 5-10 个字符,既保证关联又不冗余;is_separator_regex 设为 False,避免正则解析干扰普通分隔符匹配。 2. 按段落分割(适配结构化文本) 以空行、换行符(\n)为分割依据,优先保留完整段落语义,适合有明确段落划分的文本(如文档、论文、排版规整的文案)。 核心特点:保留段落完整性,分割粒度比句子大,适合对上下文完整性要求高的场景; 参数技巧:chunk_overlap 建议设为 20% 左右,因为段落间语义关联度通常更高,需更多重叠保证衔接。 3. 递归字符分割(推荐:通用最优解) 这是 LangChain 官方推荐的通用方法,本质是 “多优先级分层分割”—— 先按段落(\n)拆,拆不开再按句子(。!?)拆,还拆不开再按字符拆。 核心特点:兼顾 “语义完整” 和 “长度限制”,适配 90% 以上的通用场景,尤其是无固定格式的长文本; 分割优先级:段落符 → 句子符 → 普通字符,最大程度保留语义完整性的同时满足长度要求。 4. 按 Token 分割(精准适配大模型) 直接按 Token 数分割(而非字符数),是适配大模型的精准方案 —— 因为大模型的上下文窗口是按 Token 计算的,字符数无法精准对应模型处理能力。 核心特点:精准匹配模型 Token 限制,避免因字符 / Token 换算偏差导致的超限问题; 实用技巧:中文场景下可通过 “字符数 ×1.5” 近似估算 Token 数,正式使用时需指定编码(如 cl100k_base)保证精准度。 5. 固定字符长度分割(兜底方案) 无特定分割符,强制按固定字符数拆分,是所有分割方式的 “兜底选项”。 核心特点:简单粗暴,完全不考虑语义,仅保证文本块长度符合要求; 适用场景:无固定格式的杂乱文本(如日志、无标点的纯数据文本),或需要严格控制文本块长度的场景。 三、实战选型建议 中文通用场景(文章、文档、知识库):优先选递归字符分割,兼顾语义和长度; 追求精准语义(问答、摘要):选纯句子分割,保证每个块是完整语义单元; 结构化文本(论文、排版文案):选按段落分割,保留段落级上下文; 大模型落地(RAG、对话):选按 Token 分割,精准适配模型上下文窗口; 无格式杂乱文本:选固定字符长度分割,保证长度合规即可。 四、避坑指南 分割符优先级:列表中越靠前的分割符优先级越高,需按 “大粒度→小粒度” 排序(如先段落再句子); is_separator_regex 参数:中文普通分隔符(。!?)建议设为 False,避免正则转义导致匹配失败; 重叠长度控制:chunk_overlap 不宜超过 chunk_size 的 20%,否则会导致文本块冗余,增加处理成本。
阅读全文