Home / Class/ RePhraseQueryRetriever Class — langchain Architecture

RePhraseQueryRetriever Class — langchain Architecture

Architecture documentation for the RePhraseQueryRetriever class in re_phraser.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  7d7b7f28_6346_74a0_c2d3_da5a2d751cf0["RePhraseQueryRetriever"]
  3a20478a_3692_141f_433b_a32429b00020["BaseRetriever"]
  7d7b7f28_6346_74a0_c2d3_da5a2d751cf0 -->|extends| 3a20478a_3692_141f_433b_a32429b00020
  a923d8cd_39ac_7bd0_adc9_2b3dfb8d42a5["re_phraser.py"]
  7d7b7f28_6346_74a0_c2d3_da5a2d751cf0 -->|defined in| a923d8cd_39ac_7bd0_adc9_2b3dfb8d42a5
  10e6c3f2_093e_ad9e_d8a5_6f45854350b2["from_llm()"]
  7d7b7f28_6346_74a0_c2d3_da5a2d751cf0 -->|method| 10e6c3f2_093e_ad9e_d8a5_6f45854350b2
  4c0a05de_d164_e0be_ed38_a06df30f4ef0["_get_relevant_documents()"]
  7d7b7f28_6346_74a0_c2d3_da5a2d751cf0 -->|method| 4c0a05de_d164_e0be_ed38_a06df30f4ef0
  b7ea6410_bf6f_0de6_d81e_6afb99ecf739["_aget_relevant_documents()"]
  7d7b7f28_6346_74a0_c2d3_da5a2d751cf0 -->|method| b7ea6410_bf6f_0de6_d81e_6afb99ecf739

Relationship Graph

Source Code

libs/langchain/langchain_classic/retrievers/re_phraser.py lines 27–92

class RePhraseQueryRetriever(BaseRetriever):
    """Given a query, use an LLM to re-phrase it.

    Then, retrieve docs for the re-phrased query.
    """

    retriever: BaseRetriever
    llm_chain: Runnable

    @classmethod
    def from_llm(
        cls,
        retriever: BaseRetriever,
        llm: BaseLLM,
        prompt: BasePromptTemplate = DEFAULT_QUERY_PROMPT,
    ) -> "RePhraseQueryRetriever":
        """Initialize from llm using default template.

        The prompt used here expects a single input: `question`

        Args:
            retriever: retriever to query documents from
            llm: llm for query generation using DEFAULT_QUERY_PROMPT
            prompt: prompt template for query generation

        Returns:
            RePhraseQueryRetriever
        """
        llm_chain = prompt | llm | StrOutputParser()
        return cls(
            retriever=retriever,
            llm_chain=llm_chain,
        )

    def _get_relevant_documents(
        self,
        query: str,
        *,
        run_manager: CallbackManagerForRetrieverRun,
    ) -> list[Document]:
        """Get relevant documents given a user question.

        Args:
            query: user question
            run_manager: callback handler to use

        Returns:
            Relevant documents for re-phrased question
        """
        re_phrased_question = self.llm_chain.invoke(
            query,
            {"callbacks": run_manager.get_child()},
        )
        logger.info("Re-phrased question: %s", re_phrased_question)
        return self.retriever.invoke(
            re_phrased_question,
            config={"callbacks": run_manager.get_child()},
        )

    async def _aget_relevant_documents(
        self,
        query: str,
        *,
        run_manager: AsyncCallbackManagerForRetrieverRun,
    ) -> list[Document]:
        raise NotImplementedError

Extends

Frequently Asked Questions

What is the RePhraseQueryRetriever class?
RePhraseQueryRetriever is a class in the langchain codebase, defined in libs/langchain/langchain_classic/retrievers/re_phraser.py.
Where is RePhraseQueryRetriever defined?
RePhraseQueryRetriever is defined in libs/langchain/langchain_classic/retrievers/re_phraser.py at line 27.
What does RePhraseQueryRetriever extend?
RePhraseQueryRetriever extends BaseRetriever.

Analyze Your Own Codebase

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

Try Supermodel Free