Descriere & Utilizare
Într-un flux RAG, șablonul ChatPromptTemplate are nevoie de două variabile simultan: {context} (fragmentele găsite de retriever) și {intrebare} (întrebarea exactă pe care a pus-o utilizatorul).
Când scrii un dicționar literal într-un lanț LCEL, LangChain îl convertește automat într-un RunnableParallel care execută toate cheile în același timp.
Clasa RunnablePassthrough() acționează ca un fir direct de cupru: preia intrarea utilizatorului și o pasează neschimbată în cheia 'intrebare', în timp ce cheia 'context' trimite aceeași intrare către retriever pentru a extrage documentele.
Cum să o reții ușor
💡 Ca un distribuitor hidraulic în formă de Y: apa care intră pe conductă se bifurcă simultan în două direcții – o ramură trece prin filtrul de cafea (Retriever), iar cealaltă merge direct în ceașcă (Passthrough), întâlnindu-se la final.
Opțiuni și parametri tehnici
- Dicționarul din stânga operatorului
|este împachetat automat înRunnableParallel. - Ambele ramuri sunt executate concurent în thread-uri sau task-uri asincrone.
- Dicționarul rezultat
{'context': [...], 'intrebare': '...'}alimentează directChatPromptTemplate.
Exemple practice și cazuri de utilizare
- Formatare curată a documentelor în RAG:
{'context': retriever | (lambda docs: '\n\n'.join(d.page_content for d in docs)), 'intrebare': RunnablePassthrough()} - Adăugare cheie suplimentară fără a pierde intrarea:
RunnablePassthrough.assign(lungime=lambda x: len(x['text']))
Sfaturi de configurare & capcane
Combină retriever cu o funcție scurtă de formatare (retriever | format_docs) pentru a trimite în prompt doar textul concatenat al documentelor, nu reprezentarea tehnică a obiectelor Python Document(...).
Comenzi și ghiduri înrudite
lcel-pipe-runnable: Resursă asociată din acest modul.vectorstores-retriever: Resursă asociată din acest modul.chat-prompt-template: Resursă asociată din acest modul.