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

  1. Create a retriever object

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.

  1. Construct a LangchainKnowledge object using this retriever object
from trpc_agent_sdk.server.knowledge.langchain_knowledge import LangchainKnowledge

rag = LangchainKnowledge(
    ...,
    retriever=retriever,
    ...,
)

Note: If a vectorstore is already in use, the retriever is not required. If both vectorstore and retriever are used simultaneously, the retriever will re-rank the results from the vectorstore before outputting the retrieval results. In this case, the retriever object must have a from_documents interface (used to create a retrieval set from vectorstore results).

Reference

BM25Retriever

Installation

pip install --upgrade --quiet rank_bm25

Usage

  1. Create a BM25Retriever object
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"),
#     ]
# )
  1. Construct a LangchainKnowledge object using this retriever object
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.