首页/AI/RAG 与向量库速查/父子切片(小块检索、大块生成)

父子切片(小块检索、大块生成)

父子块策略把文档切成大小两级:小块用于向量检索(精度高),命中后返回其所属大块给模型(语境全);是缓解“切片太小丢语境”的常见做法。

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

LangChain ParentDocumentRetriever

LangChain ParentDocumentRetriever
from langchain.retrievers import ParentDocumentRetriever
from langchain.storage import InMemoryStore
from langchain_text_splitters import RecursiveCharacterTextSplitter

parent_splitter = RecursiveCharacterTextSplitter(chunk_size=2000)
child_splitter = RecursiveCharacterTextSplitter(chunk_size=400)
store = InMemoryStore()

retriever = ParentDocumentRetriever(
    vectorstore=vectorstore, docstore=store,
    child_splitter=child_splitter, parent_splitter=parent_splitter,
)
retriever.add_documents(documents)
生产环境把 docstore 换成持久化 KV 存储(如 Redis、Postgres),避免重启后父块丢失。

易错点

  • 父子关系配置反了(父块小于子块)会同时损失检索精度与生成语境
  • 子块命中后返回的父块可能很长,超出上下文预算时要再截断

数据来源与参考

  • LangChain 官方文档(ParentDocumentRetriever)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌