hybrid search

Combining dense vector similarity search with traditional keyword (BM25) search for improved recall. Especially useful for queries with specific terminology or names.

Syntax

rag
results = alpha * vector_search(query) + (1-alpha) * bm25_search(query)

Example

rag
# Hybrid search with Pinecone:
results = pinecone_index.query(
    vector=dense_embedding,
    sparse_vector=bm25_sparse_vector,  # sparse from BM25
    top_k=10,
    alpha=0.5  # balance dense vs sparse
)

# Or with Weaviate:
result = (
    client.query
    .get("Document", ["content"])
    .with_hybrid(query=query, alpha=0.5)
    .with_limit(5)
    .do()
)