BaseRetrievalQA Class — langchain Architecture
Architecture documentation for the BaseRetrievalQA class in base.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD cf809fc8_9926_bc74_caaa_077dffa64d09["BaseRetrievalQA"] 097a4781_5519_0b5d_6244_98c64eadc0d6["Chain"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|extends| 097a4781_5519_0b5d_6244_98c64eadc0d6 d3aa4510_51a9_c393_bb4a_23fe112c52cd["base.py"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|defined in| d3aa4510_51a9_c393_bb4a_23fe112c52cd 81aa3a90_ebd8_aebe_e52d_ee328975d0eb["input_keys()"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|method| 81aa3a90_ebd8_aebe_e52d_ee328975d0eb 69eb560e_47e0_c27a_8cbd_9fc4584a698e["output_keys()"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|method| 69eb560e_47e0_c27a_8cbd_9fc4584a698e 50c8b35b_9e7e_40df_9c63_565583eeeea2["from_llm()"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|method| 50c8b35b_9e7e_40df_9c63_565583eeeea2 11f674a2_3218_a108_749a_7c0854fc3e47["from_chain_type()"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|method| 11f674a2_3218_a108_749a_7c0854fc3e47 5fc51d77_4f49_de63_224c_445958eae5dd["_get_docs()"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|method| 5fc51d77_4f49_de63_224c_445958eae5dd 9237f79b_5d7a_0e04_1339_a4a3e7f3d2d3["_call()"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|method| 9237f79b_5d7a_0e04_1339_a4a3e7f3d2d3 9133b428_a4b6_e3a1_f216_7f445746dfeb["_aget_docs()"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|method| 9133b428_a4b6_e3a1_f216_7f445746dfeb c390159b_633a_d9fc_ae9a_ef48c89d2b25["_acall()"] cf809fc8_9926_bc74_caaa_077dffa64d09 -->|method| c390159b_633a_d9fc_ae9a_ef48c89d2b25
Relationship Graph
Source Code
libs/langchain/langchain_classic/chains/retrieval_qa/base.py lines 40–206
class BaseRetrievalQA(Chain):
"""Base class for question-answering chains."""
combine_documents_chain: BaseCombineDocumentsChain
"""Chain to use to combine the documents."""
input_key: str = "query"
output_key: str = "result"
return_source_documents: bool = False
"""Return the source documents or not."""
model_config = ConfigDict(
populate_by_name=True,
arbitrary_types_allowed=True,
extra="forbid",
)
@property
def input_keys(self) -> list[str]:
"""Input keys."""
return [self.input_key]
@property
def output_keys(self) -> list[str]:
"""Output keys."""
_output_keys = [self.output_key]
if self.return_source_documents:
_output_keys = [*_output_keys, "source_documents"]
return _output_keys
@classmethod
def from_llm(
cls,
llm: BaseLanguageModel,
prompt: PromptTemplate | None = None,
callbacks: Callbacks = None,
llm_chain_kwargs: dict | None = None,
**kwargs: Any,
) -> BaseRetrievalQA:
"""Initialize from LLM."""
_prompt = prompt or PROMPT_SELECTOR.get_prompt(llm)
llm_chain = LLMChain(
llm=llm,
prompt=_prompt,
callbacks=callbacks,
**(llm_chain_kwargs or {}),
)
document_prompt = PromptTemplate(
input_variables=["page_content"],
template="Context:\n{page_content}",
)
combine_documents_chain = StuffDocumentsChain(
llm_chain=llm_chain,
document_variable_name="context",
document_prompt=document_prompt,
callbacks=callbacks,
)
return cls(
combine_documents_chain=combine_documents_chain,
callbacks=callbacks,
**kwargs,
)
@classmethod
def from_chain_type(
cls,
llm: BaseLanguageModel,
chain_type: str = "stuff",
chain_type_kwargs: dict | None = None,
**kwargs: Any,
) -> BaseRetrievalQA:
"""Load chain from chain type."""
_chain_type_kwargs = chain_type_kwargs or {}
combine_documents_chain = load_qa_chain(
llm,
chain_type=chain_type,
**_chain_type_kwargs,
)
return cls(combine_documents_chain=combine_documents_chain, **kwargs)
@abstractmethod
Extends
Source
Frequently Asked Questions
What is the BaseRetrievalQA class?
BaseRetrievalQA is a class in the langchain codebase, defined in libs/langchain/langchain_classic/chains/retrieval_qa/base.py.
Where is BaseRetrievalQA defined?
BaseRetrievalQA is defined in libs/langchain/langchain_classic/chains/retrieval_qa/base.py at line 40.
What does BaseRetrievalQA extend?
BaseRetrievalQA extends Chain.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free