create_retrieval_chain() — langchain Function Reference
Architecture documentation for the create_retrieval_chain() function in retrieval.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD f4c87bdc_ef55_4e94_60c4_b5ba7464abce["create_retrieval_chain()"] a9b15678_260f_ff5a_60e8_7e75bfd1bbc7["retrieval.py"] f4c87bdc_ef55_4e94_60c4_b5ba7464abce -->|defined in| a9b15678_260f_ff5a_60e8_7e75bfd1bbc7 style f4c87bdc_ef55_4e94_60c4_b5ba7464abce fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain/langchain_classic/chains/retrieval.py lines 12–68
def create_retrieval_chain(
retriever: BaseRetriever | Runnable[dict, RetrieverOutput],
combine_docs_chain: Runnable[dict[str, Any], str],
) -> Runnable:
"""Create retrieval chain that retrieves documents and then passes them on.
Args:
retriever: Retriever-like object that returns list of documents. Should
either be a subclass of BaseRetriever or a Runnable that returns
a list of documents. If a subclass of BaseRetriever, then it
is expected that an `input` key be passed in - this is what
is will be used to pass into the retriever. If this is NOT a
subclass of BaseRetriever, then all the inputs will be passed
into this runnable, meaning that runnable should take a dictionary
as input.
combine_docs_chain: Runnable that takes inputs and produces a string output.
The inputs to this will be any original inputs to this chain, a new
context key with the retrieved documents, and chat_history (if not present
in the inputs) with a value of `[]` (to easily enable conversational
retrieval.
Returns:
An LCEL Runnable. The Runnable return is a dictionary containing at the very
least a `context` and `answer` key.
Example:
```python
# pip install -U langchain langchain-openai
from langchain_openai import ChatOpenAI
from langchain_classic.chains.combine_documents import (
create_stuff_documents_chain,
)
from langchain_classic.chains import create_retrieval_chain
from langchain_classic import hub
retrieval_qa_chat_prompt = hub.pull("langchain-ai/retrieval-qa-chat")
model = ChatOpenAI()
retriever = ...
combine_docs_chain = create_stuff_documents_chain(
model, retrieval_qa_chat_prompt
)
retrieval_chain = create_retrieval_chain(retriever, combine_docs_chain)
retrieval_chain.invoke({"input": "..."})
```
"""
if not isinstance(retriever, BaseRetriever):
retrieval_docs: Runnable[dict, RetrieverOutput] = retriever
else:
retrieval_docs = (lambda x: x["input"]) | retriever
return (
RunnablePassthrough.assign(
context=retrieval_docs.with_config(run_name="retrieve_documents"),
).assign(answer=combine_docs_chain)
).with_config(run_name="retrieval_chain")
Domain
Subdomains
Source
Frequently Asked Questions
What does create_retrieval_chain() do?
create_retrieval_chain() is a function in the langchain codebase, defined in libs/langchain/langchain_classic/chains/retrieval.py.
Where is create_retrieval_chain() defined?
create_retrieval_chain() is defined in libs/langchain/langchain_classic/chains/retrieval.py at line 12.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free