跳到主要内容

拆分文本

Split Text 组件会根据分块大小、分隔符等参数把数据拆分成多个 chunk。 它常用于把文本切块后再进行向量化,并写入向量数据库。 相关示例可参阅在流程中使用 Embedding Model以及创建向量 RAG 聊天机器人

An embedding generation flow that uses a Split Text component to chunk data.

该组件可以接收 MessageDataDataFrame,并输出 ChunksDataFrame。 其中:

  • Chunks 会返回一个 Data 列表,每个元素对应一个文本块。
  • DataFrame 会把这些 chunk 组织成结构化的 DataFrame,并附带 textmetadata 等列。

Split Text 参数

Split Text 的核心参数决定文本如何被切块,主要包括 chunk_sizechunk_overlapseparator

如果你想测试切块效果,可以先给 Text InputRead File 组件输入一些示例数据,然后在 Split Text 组件上点击 Run component,再点击 Inspect output,查看生成的 chunk 列表及其元数据。 其中 text 列就是根据当前配置生成的实际文本块。 如果切块效果不符合预期,请调整参数,重新运行后再次检查输出。

有些参数在可视化编辑器中默认处于隐藏状态。 你可以通过组件标题栏菜单中的 控件 来修改全部参数。

NameDisplay NameInfo
data_inputsInput输入参数。要拆分的数据,必须为 MessageDataDataFrame 格式。
chunk_overlapChunk Overlap输入参数。相邻 chunk 之间要保留的重叠字符数,用于维持上下文连续性。当遇到分隔符时,重叠会以分隔点为边界应用,使后一个 chunk 包含前一个 chunk 最后的 n 个字符。默认:200
chunk_sizeChunk Size输入参数。每个 chunk 的目标长度。数据会先按分隔符拆开,再把小于 chunk_size 的部分合并到该上限以内。但如果初始按分隔符拆分后就已经产生了大于 chunk_size 的块,这些块不会再次被细分,也不会与其他小块合并,而是直接按原样输出。默认:1000。有关重要注意事项,请参阅因 chunk size 导致的分词错误
separatorSeparator输入参数。定义拆分字符的字符串,例如 \n 表示按换行拆分、\n\n 表示按段落拆分、}, 表示按 JSON 对象结束位置拆分。你既可以直接填写分隔符字符串,也可以从其他组件以 Message 形式传入。
text_keyText Key输入参数。指定从输入数据中提取文本并进行拆分时使用的文本列键名。默认:text
keep_separatorKeep Separator输入参数。控制输出 chunk 中如何处理分隔符。False 表示移除分隔符;True 表示保留分隔符但不指定位置;Start 表示把分隔符放在 chunk 开头;End 表示把分隔符放在 chunk 结尾。默认:False

因 chunk size 导致的分词错误

当你把 Split Text 与 embedding 模型一起使用时(尤其是 NVIDIA 模型,例如 nvidia/nv-embed-v1),即使模型标称支持更大的 token 上限,你也可能仍然需要把 chunk size 调小到 500 或更低。

Split Text 并不总是严格保证输出 chunk 一定不超过你设置的 chunk_size,因此实际生成的某些 chunk 可能仍然超限。 如果你遇到分词错误,请尝试通过以下方式调整策略:

  • 缩小 chunk size
  • 调整 overlap 长度
  • 使用更常见、切分更稳定的分隔符

调整后,建议重新运行流程并检查组件输出,确认切块结果已经符合你的模型要求。

其他文本拆分器

另请参阅 LangChain 文本拆分组件