Spaces:
Running
Running
from langchain_community.vectorstores import FAISS | |
from langchain_community.embeddings.fastembed import FastEmbedEmbeddings | |
embeddings = FastEmbedEmbeddings() | |
def retriever(docs, k=5, search_type='mmr', lambda_mult=None): | |
""" | |
Creates a document retriever using FAISS (Facebook AI Similarity Search). | |
Parameters: | |
----------- | |
docs : List[Document] | |
A list of documents to be indexed for similarity search. | |
k : int, optional, default=5 | |
The number of top-k results to return for a query. | |
search_type : str, optional, default='mmr' | |
The type of search to perform. Options include 'mmr' and 'similarity'. | |
lambda_mult : float, optional, default=None | |
Lambda multiplier for Maximal Marginal Relevance (MMR) search. | |
Returns: | |
-------- | |
retriever : Retriever | |
A retriever object for querying relevant documents. | |
""" | |
# Create FAISS index from documents | |
vector_store = FAISS.from_documents(docs, embedding=embeddings) | |
# Prepare search kwargs with optional lambda_mult | |
search_kwargs = {'k': k} | |
if lambda_mult is not None: | |
search_kwargs['lambda_mult'] = lambda_mult | |
# Return the retriever | |
return vector_store.as_retriever(search_type=search_type, search_kwargs=search_kwargs) | |