How does Parent-Document Retrieval link fine-grained vector chunks back to full parent context?
Intermediate · 2 min read · RAG & Vector Databases
Open in study mode to save this question and track progressShort answer: Parent-Document Retrieval splits documents into small child chunks (e.g. 100 tokens) for precise vector similarity search, while mapping retrieved child chunks back to larger parent documents (e.g. 1000 tokens) stored in a key-value store to provide complete context to the LLM during generation.
Detail
Standard RAG faces a dilemma: small vector chunks excel at retrieval precision but lack context, while large vector chunks preserve context but dilute vector embedding precision.
[Large Parent Document (1000 Tokens)] (Stored in KV Store)
│
┌─────────────────────────┼─────────────────────────┐
▼ ▼ ▼
[Child Chunk 1 (100t)] [Child Chunk 2 (100t)] [Child Chunk 3 (100t)] (Stored in Vector DB)
│
▼ (Query Matches Child Chunk 2 Vector)
[Retrieve Full Parent Document (1000 Tokens)] ──► Send to LLM Generation Context
Key Workflow Advantages
- Optimal Vector Density: Vector similarity searches 100-token chunks, maximizing semantic matching accuracy.
- Zero Context Loss: The generation prompt receives full 1000-token sections, preventing fragmented sentence completion errors.
Example
Python Parent-Document Store implementation:
python
class ParentDocumentRetriever:
def __init__(self):
self.doc_store = {} # parent_id -> full parent text
self.child_index = [] # tuples of (child_vector, parent_id)
def add_document(self, parent_id: str, parent_text: str, child_chunks: list[tuple[list[float], str]]):
self.doc_store[parent_id] = parent_text
for child_vector, _ in child_chunks:
self.child_index.append((child_vector, parent_id))
def retrieve(self, query_vector: list[float]) -> str:
# Search child index -> get top parent_id
top_parent_id = self.child_index[0][1] # Simulated top match
return self.doc_store[top_parent_id]Interview tips
- Contrast Parent-Document Retrieval with Auto-Merging Retrievers (hierarchical tree chunking).
- Highlight how Parent-Document Retrieval mitigates the "Lost in the Middle" phenomenon by serving structured, cohesive document sections.
Related Concepts
- [[What is single-representation vs multi-representation document retrieval?]] (
#124): What is single-representation vs multi-representation document retrieval? - [[What is prefix caching (prompt caching) and how does it eliminate redundant KV computation?]] (
#152): What is prefix caching (prompt caching) and how does it eliminate redundant KV computation? - [[How to build an automated RAG evaluation harness measuring Context Precision and Recall?]] (
#178): How to build an automated RAG evaluation harness measuring Context Precision and Recall?