LlamaIndex 的 SentenceSplitter 句子分割器中文配置

from llama_index.core.node_parser import SentenceSplitter

# 中文专属最优配置
node_parser = SentenceSplitter(
    # 中文字符长度,适配常规embedding上下文
    chunk_size=512,
    # 重叠量,避免语义截断丢失信息
    chunk_overlap=100,
    # 基础单词分隔符(通常用不到,但保留默认以防万一)
    separator=" ",
    # 优先按段落切分,保留大块语义
    paragraph_separator="\n\n",
    # 将中文标点加入备用切分正则,精准断句
    secondary_chunking_regex=r'[^,.;;。?!……,]+[,.;;。?!……,]?|[,.;;。?!……,]'
    )

参数解释

  • chunk_size:中文建议 400-500,兼顾语义完整与向量精度

  • chunk_overlap:60-80 区间最佳,跨块关联内容不割裂

  • secondary_chunking_regex:正则表达式

    • [^,.;;。?!……,]+:匹配一连串不是这些中英文标点的字符(也就是句子的正文内容)。
    • [,.;;。?!……,]?:如果正文后面紧跟着一个这些标点,就把它也带上(零次或一次)。
    • |:表示“或者”。
    • [,.;;。?!……,]:兜底规则:单独匹配任意一个标点符号(防止连续标点被漏掉)。

微调适配场景

  • 公文 / 论文:chunk_size=500,overlap=80
  • 小说 / 口语文本:chunk_size=400,overlap=60
  • 短句问答类文档:chunk_size=300,overlap=50

原文出处:/show_1GW3LzEEHD6T.html