Home / File/ multi_retrieval_qa.py — langchain Source File

multi_retrieval_qa.py — langchain Source File

Architecture documentation for multi_retrieval_qa.py, a python file in the langchain codebase. 13 imports, 0 dependents.

Entity Profile

Dependency Diagram

graph LR
  32bcbccc_de22_c42f_6744_c974b798be10["multi_retrieval_qa.py"]
  2bf6d401_816d_d011_3b05_a6114f55ff58["collections.abc"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> 2bf6d401_816d_d011_3b05_a6114f55ff58
  feec1ec4_6917_867b_d228_b134d0ff8099["typing"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> feec1ec4_6917_867b_d228_b134d0ff8099
  e929cf21_6ab8_6ff3_3765_0d35a099a053["langchain_core.language_models"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> e929cf21_6ab8_6ff3_3765_0d35a099a053
  435e49bf_bb2e_2016_ead7_0afb9d57ad71["langchain_core.prompts"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> 435e49bf_bb2e_2016_ead7_0afb9d57ad71
  2b1aa4a8_5352_1757_010a_46ac9ef4b0b0["langchain_core.retrievers"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> 2b1aa4a8_5352_1757_010a_46ac9ef4b0b0
  f85fae70_1011_eaec_151c_4083140ae9e5["typing_extensions"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> f85fae70_1011_eaec_151c_4083140ae9e5
  b3ba1570_8ee5_0263_3e06_a05d8e20d456["langchain_classic.chains"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> b3ba1570_8ee5_0263_3e06_a05d8e20d456
  9a0fc770_8c3f_14bc_3c7d_37852927778e["langchain_classic.chains.base"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> 9a0fc770_8c3f_14bc_3c7d_37852927778e
  f3ae3b3c_9ec6_d546_215d_dddc9cc8994f["langchain_classic.chains.conversation.prompt"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> f3ae3b3c_9ec6_d546_215d_dddc9cc8994f
  11dd537f_b5f1_19b7_2402_50855cce6a61["langchain_classic.chains.retrieval_qa.base"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> 11dd537f_b5f1_19b7_2402_50855cce6a61
  cd2f5b98_3c65_d887_f1fb_fd465cd36b29["langchain_classic.chains.router.base"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> cd2f5b98_3c65_d887_f1fb_fd465cd36b29
  5e635a96_a307_6d97_157a_ae0226293ad1["langchain_classic.chains.router.llm_router"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> 5e635a96_a307_6d97_157a_ae0226293ad1
  aa767e5f_f7f7_a1f4_b3cf_295abf5e48a4["langchain_classic.chains.router.multi_retrieval_prompt"]
  32bcbccc_de22_c42f_6744_c974b798be10 --> aa767e5f_f7f7_a1f4_b3cf_295abf5e48a4
  style 32bcbccc_de22_c42f_6744_c974b798be10 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Use a single chain to route an input to one of multiple retrieval qa chains."""

from __future__ import annotations

from collections.abc import Mapping
from typing import Any

from langchain_core.language_models import BaseLanguageModel
from langchain_core.prompts import PromptTemplate
from langchain_core.retrievers import BaseRetriever
from typing_extensions import override

from langchain_classic.chains import ConversationChain
from langchain_classic.chains.base import Chain
from langchain_classic.chains.conversation.prompt import DEFAULT_TEMPLATE
from langchain_classic.chains.retrieval_qa.base import BaseRetrievalQA, RetrievalQA
from langchain_classic.chains.router.base import MultiRouteChain
from langchain_classic.chains.router.llm_router import (
    LLMRouterChain,
    RouterOutputParser,
)
from langchain_classic.chains.router.multi_retrieval_prompt import (
    MULTI_RETRIEVAL_ROUTER_TEMPLATE,
)


class MultiRetrievalQAChain(MultiRouteChain):
    """Multi Retrieval QA Chain.

    A multi-route chain that uses an LLM router chain to choose amongst retrieval
    qa chains.
    """

    router_chain: LLMRouterChain
    """Chain for deciding a destination chain and the input to it."""
    destination_chains: Mapping[str, BaseRetrievalQA]
    """Map of name to candidate chains that inputs can be routed to."""
    default_chain: Chain
    """Default chain to use when router doesn't map input to one of the destinations."""

    @property
    @override
    def output_keys(self) -> list[str]:
        return ["result"]

    @classmethod
    def from_retrievers(
        cls,
        llm: BaseLanguageModel,
        retriever_infos: list[dict[str, Any]],
        default_retriever: BaseRetriever | None = None,
        default_prompt: PromptTemplate | None = None,
        default_chain: Chain | None = None,
        *,
        default_chain_llm: BaseLanguageModel | None = None,
        **kwargs: Any,
    ) -> MultiRetrievalQAChain:
        """Create a multi retrieval qa chain from an LLM and a default chain.

        Args:
// ... (75 more lines)

Subdomains

Dependencies

  • collections.abc
  • langchain_classic.chains
  • langchain_classic.chains.base
  • langchain_classic.chains.conversation.prompt
  • langchain_classic.chains.retrieval_qa.base
  • langchain_classic.chains.router.base
  • langchain_classic.chains.router.llm_router
  • langchain_classic.chains.router.multi_retrieval_prompt
  • langchain_core.language_models
  • langchain_core.prompts
  • langchain_core.retrievers
  • typing
  • typing_extensions

Frequently Asked Questions

What does multi_retrieval_qa.py do?
multi_retrieval_qa.py is a source file in the langchain codebase, written in python. It belongs to the AgentOrchestration domain, ClassicChains subdomain.
What does multi_retrieval_qa.py depend on?
multi_retrieval_qa.py imports 13 module(s): collections.abc, langchain_classic.chains, langchain_classic.chains.base, langchain_classic.chains.conversation.prompt, langchain_classic.chains.retrieval_qa.base, langchain_classic.chains.router.base, langchain_classic.chains.router.llm_router, langchain_classic.chains.router.multi_retrieval_prompt, and 5 more.
Where is multi_retrieval_qa.py in the architecture?
multi_retrieval_qa.py is located at libs/langchain/langchain_classic/chains/router/multi_retrieval_qa.py (domain: AgentOrchestration, subdomain: ClassicChains, directory: libs/langchain/langchain_classic/chains/router).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free