# Hybrid search overview

Hybrid search combines a keyword signal with a semantic signal so a single query benefits from both. Keyword retrieval (full-text BM25 or sparse vectors) matches specific tokens like product codes, error strings, and names. Semantic retrieval (dense vectors) matches on meaning, so a query still finds an answer phrased with different words. Each method misses what the other catches, and hybrid search closes that gap.

:::callout{intent="note"}
"Hybrid" isn't one fixed method. Qualify what you are combining: full-text (BM25) plus dense, sparse plus dense, or a keyword filter plus dense. This page uses those qualifiers throughout.
:::

## Combine signals

Pinecone gives you three ways to combine a keyword signal with a dense signal. [Metadata filtering](/guides/index-data-search-filter-by-metadata) is a separate lever that composes with all of them: it narrows the candidate pool before ranking, so an out-of-scope document can't compete for a result slot.

| Pattern                               | How it works                                                                                                                                                                                                                                           | When to use it                                                                                     |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- |
| Filter, then rank                     | A [text-match filter](/guides/index-data-search-filter-by-metadata#text-match-filters) (`$match_phrase`, `$match_all`, `$match_any`) on a full-text field narrows the candidates, then a `dense_vector` search ranks what remains, all in one request. | Document and text workloads on the Documents API. One index, one call, and no score normalization. |
| Client-side fusion                    | Run a keyword search and a dense search separately, then merge the two ranked lists with [reciprocal rank fusion (RRF)](/guides/index-data-search-reciprocal-rank-fusion).                                                                             | When you want both signals to contribute to the ranking, not just to filter. Works on either API.  |
| Server-side combination (Vectors API) | Store a dense vector and a sparse vector on each record in a single vector index. Pinecone combines both in one query, and you set the dense/sparse balance client-side by scaling the query vectors before you send them (an `alpha` weighting).      | Existing vector and records workloads on the Vectors API.                                          |

RRF is a fusion method, not a synonym for hybrid search. It's one way to merge ranked lists, while "hybrid search" is the broader approach of combining signals. See [Reciprocal rank fusion](/guides/index-data-search-reciprocal-rank-fusion).

## Choose an approach

For a new document or text workload, use the Documents API. Declare a `dense_vector` field and one or more full-text `string` fields in one schema, then either filter a dense search with a text-match filter or run a keyword search and a dense search and fuse them with RRF. See [Full-text search](/guides/index-data-search-full-text-search) and the [multi-signal schema example](/guides/index-data-data-modeling#schema-patterns).

For an existing vector or records workload, use the Vectors API.

## Hybrid search on the Vectors API

The Vectors API supports two patterns:

- [Use a single index for dense and sparse vectors](/guides/index-data-search-hybrid-search-single-index): Store both vectors per record and set the dense/sparse balance client-side by scaling the query vectors before the request (an `alpha` weighting). This is the simplest single-request architecture, though the unbounded sparse scores need normalizing.
- [Use separate indexes for dense and sparse vectors](/guides/index-data-search-hybrid-search-separate-indexes): Store dense and sparse in two indexes linked by ID, query each, and merge the results client-side. This is more flexible, but there is more to manage.

## Related pages

- [Run hybrid search on a single index](./index-data-search-hybrid-search-single-index.md)
- [Run hybrid search on separate indexes](./index-data-search-hybrid-search-separate-indexes.md)
- [Reciprocal rank fusion](./index-data-search-reciprocal-rank-fusion.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
