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
Source
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