You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合tiktoken使用Langchain的MarkdownTextSplitter控制Token分块大小?

你的方法完全可行

你通过自定义lengthFunction让MarkdownTextSplitter按tiktoken的Token计数规则控制分块大小,这个思路完全正确。MarkdownTextSplitter的lengthFunction参数就是用来替换默认字符数统计逻辑的,把它换成tiktoken的编码长度计算后,chunkSize就会按照Token数量限制分块,完美解决了默认按字符数统计和LLM Token限制不匹配的问题。

另外还有几种可选方案,你可以根据需求选择:

  • 用TokenTextSplitter直接按Token分割:如果不需要保留Markdown的结构完整性,直接用LangChain的TokenTextSplitter更直接,它默认按Token计数,但缺点是可能会拆碎Markdown的标题、列表等结构,破坏格式。
  • 结合递归分割与Token计数:RecursiveCharacterTextSplitter也支持自定义lengthFunction,同样可以替换成tiktoken的编码逻辑,但和TokenTextSplitter一样,不会特意照顾Markdown的结构边界。
  • 调整重叠区的Token数:记得把chunkOverlap也配合Token逻辑设置,比如chunkSize=1500时,chunkOverlap=150,这样既能保证分块间的上下文连贯性,也能让重叠部分的Token数处于可控范围。

最后要注意,不同LLM对应不同的tiktoken编码,比如GPT-3.5/4用cl100k_base,GPT-2用r50k_base,要选对和你使用的模型匹配的编码,避免Token计数出现偏差。

内容的提问来源于stack exchange,提问作者michielve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 18:04:51