Récupération par document parent et fenêtre de phrases
Dissociez les segments recherchés des segments renvoyés afin que le LLM obtienne des correspondances précises avec un contexte riche.
Récupération par document parent et fenêtre de phrases est une leçon LangChain / RAG / Vector DBs gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage LangChain / RAG / Vector DBs, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours LangChain / RAG / Vector DBs comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The Chunk-Size Dilemma
Small chunks search precisely but lack context; large chunks give context but dilute relevance. Parent document retrieval resolves this tension by searching small and returning large.
Two Chunk Sizes
Index small child chunks for accurate similarity matching, but keep a link to the larger parent chunk that surrounds each one.
- Search on child embeddings
- Return parent text to the LLM
ParentDocumentRetriever
LangChain provides a ready-made retriever. You give it a child splitter, an optional parent splitter, a vector store, and a doc store for the parents.
from langchain.retrievers import ParentDocumentRetriever
retriever = ParentDocumentRetriever(
vectorstore=vectorstore,
docstore=store,
child_splitter=child_splitter,
parent_splitter=parent_splitter,
)Adding Documents
The retriever splits each document into parents and children, embeds the children, and stores parents keyed by id so they can be fetched on a hit.
retriever.add_documents(docs)
results = retriever.invoke("What is the refund window?")
print(len(results[0].page_content)) # large parent textSentence-Window Retrieval
A variant indexes single sentences but, on retrieval, expands each hit to include the surrounding sentences. The model sees the exact match plus neighbors.
Storing the Window
During indexing you save the neighboring text in metadata so it can be stitched back at query time.
doc.metadata["window"] = " ".join(
sentences[max(0, i-2): i+3]
)
doc.page_content = sentences[i]Swapping Content After Search
After similarity search returns the matched sentence, replace its content with the stored window before passing it to the LLM.
for r in results:
r.page_content = r.metadata["window"]When to Use Each
Parent document suits structured docs with natural sections. Sentence-window suits dense prose where precise sentences matter most.
Avoiding Duplicate Parents
Multiple child hits can map to the same parent. Deduplicate by parent id so the LLM is not handed the same passage twice.
seen = set()
unique = []
for d in results:
pid = d.metadata["parent_id"]
if pid not in seen:
seen.add(pid)
unique.append(d)Cost and Context Limits
Returning larger parents consumes more of the LLM context window. Balance the parent size against your token budget and the number of results k.
Putting It Together
Index fine-grained children, retrieve precisely, then expand to parents or windows. Your generation step receives focused yet contextual passages.
docs = retriever.invoke("cancellation terms")
context = "\n\n".join(d.page_content for d in docs)
answer = llm.invoke(f"Context:\n{context}\n\nQuestion: ...")Quick Check
Test your understanding of decoupled retrieval.
Recap
You learned to decouple search and return units:
- Parent document: search children, return parents
- Sentence-window: match sentences, expand to neighbors
- Deduplicate parents and watch context limits
Questions Fréquemment Posées
La leçon « Récupération par document parent et fenêtre de phrases » est-elle gratuite ?
Oui — le texte complet de « Récupération par document parent et fenêtre de phrases » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours LangChain / RAG / Vector DBs, passe à CoddyKit PRO. Le cours LangChain / RAG / Vector DBs comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Récupération par document parent et fenêtre de phrases » ?
Dissociez les segments recherchés des segments renvoyés afin que le LLM obtienne des correspondances précises avec un contexte riche. Tu pratiques LangChain / RAG / Vector DBs avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer LangChain / RAG / Vector DBs ?
Aucune expérience préalable n'est requise. LangChain / RAG / Vector DBs sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Récupération par document parent et fenêtre de phrases » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon LangChain / RAG / Vector DBs ?
Oui. Chaque leçon LangChain / RAG / Vector DBs inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Stratégies de récupération multi-requêtes
- Compression contextuelle avec les LLM
- Recherche hybride et reclassement
- Récupération par document parent et fenêtre de phrases