首页/AI/RAG 与向量库速查/LlamaIndex 节点切分器

LlamaIndex 节点切分器

LlamaIndex 用 NodeParser 体系做切分:SentenceSplitter 维护句子边界并支持 token 计数,节点可直接携带来源、标题等元数据进入索引。

RAG 与向量库速查AI更新于 2026-10-13

LlamaIndex 的切分器

LlamaIndex 用 NodeParser 体系做切分:SentenceSplitter 在保持句子边界的前提下按 token 计数控制块大小,切出的节点可以直接携带来源、标题等元数据进入索引。除它之外还有 SemanticSplitterNodeParser(按句间语义差异找断点,需要 embedding 模型)与 HierarchicalNodeParser(生成多级节点,配合自动合并检索使用)。

基本信息

核心类SentenceSplitter,用 chunk_size 与 chunk_overlap 控制块大小
计量单位按 token 计数,需要与所用模型的 tokenizer 对应
家族成员语义切分器、层级切分器、句子窗口切分器
元数据节点默认继承文档元数据,也可在切分时补充字段

典型使用场景

  • 通用文档入库:结构规整的手册与技术文档,用句子切分器最稳
  • 主题切换明显:长报告按语义断点切分,避免一个块跨两个主题
  • 需要上下文合并:用层级切分器生成多级节点,命中小块后自动带回父块
  • 长文问答:句子窗口切分器把检索单位缩小到句子
  • 切分实验:同一语料对比多种切分器,用评测指标选方案

SentenceSplitter 用法

SentenceSplitter 用法
from llama_index.core.node_parser import SentenceSplitter

# chunk_size 以 token 计,overlap 取块大小的十分之一左右起步
splitter = SentenceSplitter(chunk_size=512, chunk_overlap=50)
nodes = splitter.get_nodes_from_documents(documents, show_progress=True)
print(len(nodes), nodes[0].text[:80])       # 检查块数与首块内容
# 若节点缺少来源信息,检查文档元数据是否被正确继承

切分器对照

切分器切分依据适用情况
SentenceSplitter句子边界加 token 上限通用首选,结果稳定可控
SemanticSplitterNodeParser相邻句的向量差异主题切换明显的长文档
HierarchicalNodeParser多级块大小需要自动把上下文合并回来的检索
SentenceWindowNodeParser单句为单元、窗口作上下文长手册与条款类问答
NodeParser 家族还有 SemanticSplitterNodeParser 与 HierarchicalNodeParser 等;语义类切分同样要调用 embedding 模型,带来额外的时间与费用。
切分参数属于效果变量:块大小与重叠率调整后要重跑评测集,用召回指标判断改动方向,而不是凭块长感觉。
切分器与解析器要配套:先把 Markdown 或 PDF 解析成带结构的文档对象,再交给 NodeParser,跳过解析直接按纯文本切分会让标题与正文脱节。

易错点

  • chunk_size 的计量单位随参数(token 或字符)变化,要看清配置项
  • 节点没有继承文档来源元数据时,引用展示会缺信息
  • 语义切分未评估额外开销,嵌入调用让入库时间成倍增加
  • 重叠率设得过大,同一内容在多个块中重复,挤占上下文预算

数据来源与参考

  • LlamaIndex 官方文档(Node Parser 模块)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌