Retrievers are available from Vector DB, default one is Cosine similarity and it represented as search_type="similarity"
This is the Basic retriever and there are few others like "MMR"
Is this same as cosine similarity
In most common configurations, yes, it is the same as or highly related to cosine similarity, but the exact mathematical metric depends on your Vector Database settings.
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
from langchain_core.documents import Document
# Create sample vectorstore
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
docs = [
Document(page_content="LangChain is a framework for LLM applications", metadata={"topic": "langchain"}),
Document(page_content="RAG combines retrieval with generation", metadata={"topic": "rag"}),
Document(page_content="Vector databases store embeddings", metadata={"topic": "vectors"}),
Document(page_content="Transformers use attention mechanisms", metadata={"topic": "transformers"}),
Document(page_content="FAISS is a similarity search library", metadata={"topic": "vectors"}),
]
vectorstore = FAISS.from_documents(docs, embeddings)
print("✅ Vector store created")
# Create retriever
retriever = vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": 3} # Return top 3 results
)
# Use retriever
query = "How does RAG work?"
results = retriever.invoke(query)
print(f"Query: {query}\n")
print("Results:")
for i, doc in enumerate(results, 1):
print(f"{i}. {doc.page_content}")
print(f" Topic: {doc.metadata['topic']}\n")
Sample code is under: https://github.com/LeelaPrasadG/rag_langchain/blob/main/06_Retrieval_Strategies.ipynb
No comments:
Post a Comment