传统固定切块(Fixed-Size Chunking)的两难困境
在构建知识库切块时,工程师常常面临不可调和的矛盾:
- 切块过小(如 128 Token):语义高度聚焦,向量余弦相似度能够极其精准地命中用户问题;但在送入大模型生成时,由于丢失了上下文段落的背景与转折,模型容易出现断章取义;
- 切块过大(如 1024 Token):虽然段落完整,但嵌入向量被过多的不同主题平均化,导致检索召回率急剧下滑。
Small-to-Big 父子分块设计哲学
Parent-Child(Small-to-Big)检索范式完美化解了这一矛盾:
- 父文档切分 (Parent Chunk):按照文章的自然结构(如 H2/H3 章节或 800~1500 字)切分出具备独立完整逻辑的父块;
- 子文档重叠切割 (Child Chunk):在每个父块内部,进一步细切出多个 100~200 字的小子块,并为小子块建立稠密向量索引;
- 检索与替换还原 (Index on Child, Prompt on Parent):向量检索时仅匹配子块以保证超高检索灵敏度;一旦命中某个子块,系统自动追溯到其所属的父块,并将完整的父块注入大模型的 Prompt 上下文中!
父子文档映射引擎实现
import assert from "node:assert/strict";
function resolveParent(childToParent, hitChild) {
return childToParent[hitChild] || null;
}
assert.equal(resolveParent({ "c1": "p1" }, "c1"), "p1");原始资料与溯源链接
- LangChain Parent Document Retriever Guide:父子文档检索器标准设计模式。
感谢阅读本文
如果你觉得内容有帮助,欢迎点赞支持或分享给同行开发者。
0 次阅读0 人赞过