Similarity search retrieves documents whose meaning is close to a query, even when they use different words. Embedding models represent text as vectors; a vector search engine such as FAISS finds nearby vectors. Unlike keyword search, this can match “API authentication” with documents about “user login security.” section 12.1.3
In a retrieval-augmented generation system, similarity search connects document representations to relevant query results:
- Convert text into embeddings so semantically similar content maps to nearby points in vector space. section 12.1.3
- Use a vector search engine to find documents similar to the query; FAISS supports development and moderate-scale production, while dedicated vector databases offer additional operational features. section 12.1.3
Different wording, similar intent
A query asking how to update API credentials can retrieve documentation about key rotation, despite the wording being different. section 12.1.3
Listing 12.2 Manual RAG vs. LangChain’s declarative pipeline
def manual_rag_query(query: str):
try:
query_embedding = embedding_client.embed(query)
results = vector_db.similarity_search(query_embedding, k=5)
context = "\n".join([doc.content for doc in results])
prompt = f"Context: {context}\nQuestion: {query}\nAnswer:"
response = llm_client.generate(prompt)
return validate_response(response)
except Exception as e:
return handle_error(e)
from langchain.chains import RetrievalQA
from langchain.retrievers import VectorStoreRetriever
chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vector_store.as_retriever(),
return_source_documents=True
)
result = chain.invoke({"query": query})
Shows a RAG query using vector similarity search to retrieve documents before generating an answer. section 12.1.3





















