首页/AI/AI 应用速查/固定长度切分(字符/Token 窗口)

固定长度切分(字符/Token 窗口)

最直接的切分法:按固定字符数或 token 数滑窗切开。实现简单稳定,对格式规整的文本够用;起点建议 512-1024 token、10-20% 重叠。

AI 应用速查AI更新于 2026-10-13

固定长度切分是什么

固定长度切分是最直接的方案:按固定的字符数或 token 数滑窗切开,可设少量重叠避免答案被切断。它实现简单、长度可控、结果可复现,对格式规整的文本够用。缺点是它不看语义:一句话或一个表格可能被拦腰截断,切出来的片段读起来缺头少尾。适合日志、CSV 记录这类本身就按行组织的文本。

基本信息

原理按固定长度滑窗切开文本,可设重叠
长度口径字符数或 token 数,取决于实现
重叠相邻片段共享的尾部与头部内容
优点实现简单、结果稳定、长度完全可控
缺点不考虑语义边界,句子与表格可能被切断
适用文本日志、CSV、格式规整且按行组织的文本

参数怎么设

参数作用取值思路
窗口长度单个片段的最大长度按嵌入模型输入上限与检索粒度取几百到上千字符
重叠长度相邻片段共享的内容量取窗口长度的百分之十到二十
长度口径按字符还是按 token 计算按模型计量口径更准,成本也更好估算
对齐方式是否在空白或换行处尽量对齐简单对齐能减少把词切两半
批量处理大文件的切分与入库方式流式处理,避免整文件读入内存

典型使用场景

  • 日志分析:按行或固定窗口切分后做检索与统计
  • 数据导入:把规整的分隔符文本切成记录片段
  • 快速验证:先用最简单的切分方式跑通整条链路
  • 对照基线:作为评估语义切分方案收益的对照组
  • 超长单句文本:本身没有换行,只能按长度切

滑窗切分示例

滑窗切分示例
def fixed_split(text, size=800, overlap=120):
    step = size - overlap                 # 步长小于窗口才能产生重叠
    for i in range(0, len(text), step):
        piece = text[i:i + size]
        if piece.strip():
            yield piece
        if i + size >= len(text):
            break
# 输出片段数约为 文本长度 / 步长,重叠越大片段越多
# 中文与英文混排时字符数口径会低估 token 数,长期方案应改按 token 切

与语义切分的对比

维度固定长度语义切分
实现复杂度低中等,需要分隔符层级或结构信息
结果可复现完全可复现取决于实现与文档结构
片段可读性可能缺头少尾通常读得通
检索效果一般通常更好,尤其长文档
适用文本规整的按行文本结构清晰的文档与手册
把固定长度切分当作基线:先跑通链路与评测流程,再换成语义切分对比效果,改动前后有数据可比。
重叠设得过大时片段数量成倍增长:入库与检索成本同步上升,而召回未必改善,需要用评测确认收益。

易错点

  • 重叠为零:答案恰好落在切口上时两个片段都检索不到完整信息
  • 按字符数切分却按 token 计费:长度估算与成本预算双双失真
  • 对结构清晰的文档用固定切分:标题与正文被切开,片段读不通
  • 整文件读入内存再切:大文件场景容易内存溢出

数据来源与参考

  • LangChain Text Splitters 文档;RAG 工程通行实践

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌