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 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 retrievalYou 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).
pip install --upgrade --quiet rank_bm25- 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,
...,
)Please refer to examples/knowledge_with_rag_agent/README.md.
For more Retriever component usage details, refer to: LangChain Retrievers.