type
Post
status
Published
date
Dec 13, 2025
slug
summary
tags
人工智能
category
技术分享
icon
password
#%% md

1.CharacterTextSplitter

参数情况说明:
  • chunk_size:每个切块的最大token数量,默认值为4000。
  • chunk_overlap:相邻两个切块之间的最大重叠token数量,默认值为200。
  • separator:分割使用的分隔符,默认值为"n\n"。
  • length_function:用于计算切块长度的方法。默认赋值为父类Textsplitter的len函数。
 
#%% md

举例1:体会 chunk_size 和 chunk_overlap

separator优先原则:当设置了 separator(如"。"),分割器会首先尝试在分隔符处分割,然后再考虑chunk_size。
这是为了避免在句子中间硬性切断。这种设计是为了:
  • 1.优先保持语义完整性(不切断句子)
  • 2.避免产生无意义的碎片(如半个单词/不完整句子)
  • 3.如果 chunk_size比片段小,无法拆分片段,导致overlap失效。
  • 4.chunk_overlap仅在合并后的片段之间生效(如果chunk_size足够大)。如果没有合并的片段,则overlap失效。
#%% md

2.RecursiveCharacterTextSplitter(最常用)

文档切分器中较常用的是RecursivecharacterTextSplitter(递归字符文本切分器),遇到特定字符时进行分割。
默认情况下,它尝试进行切割的字符包括["\n\n","\n"," ",""]。
具体为:根据第一个字符进行切块,但如果任何切块太大,则会继续移动到下一个字符继续切块,以此类推。
此外,还可以考虑添加,。等分割字符。
特点:
  • 保留上下文:优先在自然语言边界(如段落、句子结尾)处分割,减少信息碎片化。
  • 智能分段:通过递归尝试多种分隔符,将文本分割为大小接近chunk_size的片段。
  • 灵活适配:适用于多种文本类型(代码、Markdown、普通文本等),是LangChain中最通用的文本拆分器。
 
#%% md

TokenTextSplitter

为什么按Token分割?
语言模型对输入长度的限制是基于Token数(如GPT-4的8k/32k Token上限),直接按字符或单词分割可能导致实际Token数超限。
大语言模型(LLM)通常是以token的数量作为其计量(或收费)的依据,所以采用token分割也有助于我们在使用时更方便的控制成本。
TokenTextSplitter 使用说明:
  • 核心依据:Token数量+自然边界。(TokenTextsplitter 严格按照 token数量进行分割,但同时会优先在自然边界(如句尾)处切断,以尽量保证语义的完整性。)
  • 优点:与LLM的Token计数逻辑一致,能尽量保持语义完整
  • 缺点:对非英语或特定领域文本,Token化效果可能不佳典型场景:需要精确控制Token数输入LLM的场景
#%% md

SemanticChunker:语义分块 (langchain1.0 中用不了,代替方案semchunk)

Semanticchunking(语义分块)是LangChain中一种更高级的文本分割方法,它超越了传统的基于字符或固定大小的分块方式,而是根据文本的语义结构进行智能分块,使每个分块保持语义完整性,从而提高检索增强生成(RAG)等应用的效果。

1. Late Chunking (延迟分块) —— 2025 年最火技术

这是目前最推崇的替代方案,由 Jina AI 等公司率先普及。
需要先用一个“逻辑切割器”来定义边界,然后让 Embedding 模型去处理这些边界。
传统做法:先切块,再对每个块单独生成向量。这会导致切块时丢失整篇文章的语境(Context Loss)。
Late Chunking 做法:
  • 用 RecursiveCharacterTextSplitter 把文本物理上切开。
  • 将整篇长文档输入支持长上下文的 Embedding 模型(text-embedding-v3 或 Qwen3-Embedding,国外是JinaEmbeddings)。
  • 模型会为每个 Token 生成带有全局信息的向量。
  • 最后再进行切块。这样切出来的每一个分块向量,都**“吸收”了前后文的信息**。
优点:即便是一个很短的句子,它的向量也包含了整篇文章的背景,极大提升了检索精度。

2. Contextual Retrieval (上下文检索/分块)

由 Anthropic(Claude 厂商)在 2024 年末提出,并在 2025 年大规模流行。
原理:在分块之前,利用 LLM 为每个小分块写一段简短的“背景说明”(Contextual Header)。
示例:
  • 原始分块:“该公司的营收增长了 20%。”(单独看这个块,搜索者不知道是哪家公司,哪一年)。
  • 上下文分块:“[背景:这是关于苹果公司 2024 年第三季度财报的描述] 该公司的营收增长了 20%。”
优点:显著解决了分块后语义支离破碎的问题,检索成功率(Top-1 Recall)通常能提升 40% 以上。

3. Agentic Chunking (智能体分块)

利用 AI Agent(如 GPT-4o 或 Claude 3.5)来像人一样阅读并决定在哪里下刀。
逻辑:
Agent 扫描全文。
它判断:“这里主题变了,从‘产品功能’转到了‘售后政策’,我应该在这里切断。”
它能识别复杂的边界(如表格中间、代码块中间不准切)。
优点:这是目前最精准的切分方式,完全遵循逻辑而非字符数。
缺点:非常昂贵,通常只用于构建极高质量的旗舰级知识库。
文档嵌入模型文档拆分器
Loading...