Retrievers¶
Retrievers are a generic LangChain interface for returning relevant documents for a query. Unlike vector stores, retrievers do not need document storage capabilities; they only retrieve and return documents. Retrievers can be built on top of vector stores and can also use other backends, such as Wikipedia search and Amazon Kendra.
Depending on the type of retriever used, there are several ways to create a retriever:
For more component usage details, see LangChain Retrievers.
Create Retriever from Vector Store¶
Usage¶
- Create a
retrieverobject
You can directly instantiate a retriever from a vectorstore instance:
retriever = vectorstore.as_retriever() # Use the vectorstore's as_retriever method
docs = retriever.invoke("your-question?") # Perform retrieval
You can also specify the search type and additional search parameters. For details, refer to How to use a vectorstore as a retriever.
- Construct a
LangchainKnowledgeobject using thisretrieverobject
from trpc_agent_sdk.server.knowledge.langchain_knowledge import LangchainKnowledge
rag = LangchainKnowledge(
...,
retriever=retriever,
...,
)
Note: If a
vectorstoreis already in use, theretrieveris not required. If bothvectorstoreandretrieverare used simultaneously, theretrieverwill re-rank the results from thevectorstorebefore outputting the retrieval results. In this case, theretrieverobject must have afrom_documentsinterface (used to create a retrieval set from vectorstore results).
Reference¶
BM25Retriever¶
Installation¶
pip install --upgrade --quiet rank_bm25
Usage¶
- Create a
BM25Retrieverobject
from langchain_community.retrievers import BM25Retriever
from langchain_core.documents import Document
# Create a retriever using BM25Retriever's from_texts method
# Given some example document contents ["foo", "bar"]
retriever = BM25Retriever.from_texts(["foo", "bar"])
# Or create using from_documents
# retriever = BM25Retriever.from_documents(
# [
# Document(page_content="foo"),
# Document(page_content="bar"),
# ]
# )
- Construct a
LangchainKnowledgeobject using thisretrieverobject
rag = LangchainKnowledge(
...,
retriever=retriever,
...,
)
Reference¶
Complete Example¶
Please refer to examples/knowledge_with_rag_agent/README.md.
More¶
For more Retriever component usage details, refer to: LangChain Retrievers.