Home / Class/ RetrievalQA Class — langchain Architecture

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

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