RetrievalQA Class — langchain Architecture
Architecture documentation for the RetrievalQA class in base.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 067cfac1_b090_9798_c632_0f6eaea72669["RetrievalQA"] 1cb458d9_f8c6_d78d_c1e3_79a8b3106c08["BaseRetrievalQA"] 067cfac1_b090_9798_c632_0f6eaea72669 -->|extends| 1cb458d9_f8c6_d78d_c1e3_79a8b3106c08 170d423a_b63e_7ad3_41eb_c8cff467739d["base.py"] 067cfac1_b090_9798_c632_0f6eaea72669 -->|defined in| 170d423a_b63e_7ad3_41eb_c8cff467739d 76742b46_481d_4a3f_d102_75a96ccd6564["_get_docs()"] 067cfac1_b090_9798_c632_0f6eaea72669 -->|method| 76742b46_481d_4a3f_d102_75a96ccd6564 8912697d_f7bb_3415_ef27_42f5e5025460["_aget_docs()"] 067cfac1_b090_9798_c632_0f6eaea72669 -->|method| 8912697d_f7bb_3415_ef27_42f5e5025460 efc233a8_0b59_d23e_984d_c39af0daac23["_chain_type()"] 067cfac1_b090_9798_c632_0f6eaea72669 -->|method| efc233a8_0b59_d23e_984d_c39af0daac23
Relationship Graph
Source Code
libs/langchain/langchain_classic/chains/retrieval_qa/base.py lines 218–295
class RetrievalQA(BaseRetrievalQA):
"""Chain for question-answering against an index.
This class is deprecated. See below for an example implementation using
`create_retrieval_chain`:
```python
from langchain_classic.chains import create_retrieval_chain
from langchain_classic.chains.combine_documents import (
create_stuff_documents_chain,
)
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
retriever = ... # Your retriever
model = ChatOpenAI()
system_prompt = (
"Use the given context to answer the question. "
"If you don't know the answer, say you don't know. "
"Use three sentence maximum and keep the answer concise. "
"Context: {context}"
)
prompt = ChatPromptTemplate.from_messages(
[
("system", system_prompt),
("human", "{input}"),
]
)
question_answer_chain = create_stuff_documents_chain(model, prompt)
chain = create_retrieval_chain(retriever, question_answer_chain)
chain.invoke({"input": query})
```
Example:
```python
from langchain_openai import OpenAI
from langchain_classic.chains import RetrievalQA
from langchain_community.vectorstores import FAISS
from langchain_core.vectorstores import VectorStoreRetriever
retriever = VectorStoreRetriever(vectorstore=FAISS(...))
retrievalQA = RetrievalQA.from_llm(llm=OpenAI(), retriever=retriever)
```
"""
retriever: BaseRetriever = Field(exclude=True)
def _get_docs(
self,
question: str,
*,
run_manager: CallbackManagerForChainRun,
) -> list[Document]:
"""Get docs."""
return self.retriever.invoke(
question,
config={"callbacks": run_manager.get_child()},
)
async def _aget_docs(
self,
question: str,
*,
run_manager: AsyncCallbackManagerForChainRun,
) -> list[Document]:
"""Get docs."""
return await self.retriever.ainvoke(
question,
config={"callbacks": run_manager.get_child()},
)
@property
def _chain_type(self) -> str:
"""Return the chain type."""
return "retrieval_qa"
Extends
Source
Frequently Asked Questions
What is the RetrievalQA class?
RetrievalQA is a class in the langchain codebase, defined in libs/langchain/langchain_classic/chains/retrieval_qa/base.py.
Where is RetrievalQA defined?
RetrievalQA is defined in libs/langchain/langchain_classic/chains/retrieval_qa/base.py at line 218.
What does RetrievalQA extend?
RetrievalQA extends BaseRetrievalQA.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free