Semantic Search

Search by meaning, not just keywords.

What is Semantic Search?

Semantic search finds results based on meaning rather than exact keyword matches. "cheap flights" can find results about "affordable airfare".

Keyword vs Semantic

AspectKeyword SearchSemantic Search
MatchingExact termsMeaning
SynonymsNeeds manual configAutomatic
TyposBreaks searchOften works
SetupSimpleNeeds embeddings
SpeedVery fastFast (with index)

How It Works

  1. Index: Convert all documents to embeddings
  2. Query: Convert search query to embedding
  3. Search: Find nearest neighbors
  4. Return: Most similar documents

Implementation

# Index documents
documents = ["...", "...", "..."]
doc_embeddings = model.encode(documents)
index.add(doc_embeddings)

# Search
query = "how to cook pasta"
query_embedding = model.encode(query)
results = index.search(query_embedding, k=10)

Hybrid Search

Best results often combine both approaches:

  • Keyword for exact matches (product SKUs, names)
  • Semantic for conceptual queries
  • Rerank combined results

Use Cases

  • Document search
  • FAQ matching
  • Product discovery
  • Code search
  • Support ticket routing

Improving Quality

  • Choose appropriate embedding model
  • Add metadata filtering
  • Use reranking models
  • Fine-tune embeddings on your domain