Rechunk Documents
RechunkDocuments 是可选的图谱输入增强 step。
它按 document/source 聚合 chunks,将文本重新拼接后再切分,输出新的 ParsedChunk:
merged_chunk_keys
-> group by document/source
-> concatenate text
-> split again
-> rechunked_chunk_keys
它对应 HetaDB 的 rechunk_by_source 思路:merge 后的 chunk 不直接进入图谱抽取,而是先按原始文档重新组织边界,让后续实体和关系抽取获得更稳定的上下文。
Contract
RechunkDocuments 使用一个 recipe component:
默认读取:
默认输出:
如果不启用 MergeChunks,也可以显式让它读取原始 chunks:
Configuration
RechunkDocumentsConfig(
rechunked_chunks_prefix="rechunked_chunks",
chunk_size=1024,
overlap=50,
encoding_name="cl100k_base",
chunk_keys_artifact="merged_chunk_keys",
)
| 参数 | 说明 |
|---|---|
rechunked_chunks_prefix |
rechunked chunk JSON 写入 ObjectStore 的 prefix。 |
chunk_size |
重新切分的目标 token 数。 |
overlap |
相邻 chunk 的 token overlap。 |
encoding_name |
tokenizer 名称。 |
chunk_keys_artifact |
输入 chunk key artifact 名称。 |
Requirements
默认 requirements:
StepRequirements(
components=frozenset({
store_ref("objects"),
}),
artifacts=frozenset({
"merged_chunk_keys",
}),
)
Capabilities
RechunkDocuments 提供:
它不直接解锁 query mode。它的主要作用是为后续 PersistChunks、ExtractEntities 和 ExtractRelations 提供更适合图谱抽取的文本边界。
Output
rechunk 后仍然输出 ParsedChunk:
ParsedChunk(
chunk_id="chunk_...",
document_id="doc_...",
text="重新切分后的文本",
parent_chunk_ids=("chunk_a", "chunk_b"),
...
)
parent_chunk_ids 记录当前 rechunked chunk 覆盖到的原始 chunk ids。下游图谱、证据查询和 citation 可以通过它回溯来源。
Usage
图谱抽取可以选择读取: