This page shows you how to search a dense index for records that are most similar in meaning and context to a query. This is often called semantic search, nearest neighbor search, similarity search, or just vector search.
Semantic search uses dense vectors. Each number in a dense vector corresponds to a point in a multidimensional space. Vectors that are closer together in that space are semantically similar.
Searching with text is supported only for indexes with integrated embedding.
To search a dense index with a query text, use the search_records
operation with the following parameters:
namespace
to query. To use the default namespace, set the namespace to "__default__"
.query.inputs.text
parameter with the query text. Pinecone uses the embedding model integrated with the index to convert the text to a dense vector automatically.query.top_k
parameter with the number of similar records to return.fields
to return in the response. If not specified, the response will include all fields.For example, the following code searches for the 2 records most semantically related to a query text:
The response will look as follows. Each record is returned with a similarity score that represents its distance to the query vector, calculated according to the similarity metric for the index.
To search a dense index with a dense vector representation of a query, use the query
operation with the following parameters:
namespace
to query. To use the default namespace, set the namespace to "__default__"
.vector
parameter with the dense vector values representing your query.top_k
parameter with the number of results to return.include_values
and/or include_metadata
to true
to include the vector values and/or metadata of the matching records in the response. However, when querying with top_k
over 1000, avoid returning vector data or metadata for optimal performance.For example, the following code uses a dense vector representation of the query “Disease prevention” to search for the 3 most semantically similar records in the example-namespaces
namespace:
The response will look as follows. Each record is returned with a similarity score that represents its distance to the query vector, calculated according to the similarity metric for the index.
When you search with a record ID, Pinecone uses the dense vector associated with the record as the query. To search a dense index with a record ID, use the query
operation with the following parameters:
namespace
to query. To use the default namespace, set the namespace to "__default__"
.id
parameter with the unique record ID containing the vector to use as the query.top_k
parameter with the number of results to return.include_values
and/or include_metadata
to true
to include the vector values and/or metadata of the matching records in the response. However, when querying with top_k
over 1000, avoid returning vector data or metadata for optimal performance.For example, the following code uses an ID to search for the 3 records in the example-namespace
namespace that are most semantically similar to the dense vector in the record:
Python SDK v6.0.0 and later provide async
methods for use with asyncio. Async support makes it possible to use Pinecone with modern async web frameworks such as FastAPI, Quart, and Sanic, and can significantly increase the efficiency of running queries in parallel. For more details, see the Async requests.
This page shows you how to search a dense index for records that are most similar in meaning and context to a query. This is often called semantic search, nearest neighbor search, similarity search, or just vector search.
Semantic search uses dense vectors. Each number in a dense vector corresponds to a point in a multidimensional space. Vectors that are closer together in that space are semantically similar.
Searching with text is supported only for indexes with integrated embedding.
To search a dense index with a query text, use the search_records
operation with the following parameters:
namespace
to query. To use the default namespace, set the namespace to "__default__"
.query.inputs.text
parameter with the query text. Pinecone uses the embedding model integrated with the index to convert the text to a dense vector automatically.query.top_k
parameter with the number of similar records to return.fields
to return in the response. If not specified, the response will include all fields.For example, the following code searches for the 2 records most semantically related to a query text:
The response will look as follows. Each record is returned with a similarity score that represents its distance to the query vector, calculated according to the similarity metric for the index.
To search a dense index with a dense vector representation of a query, use the query
operation with the following parameters:
namespace
to query. To use the default namespace, set the namespace to "__default__"
.vector
parameter with the dense vector values representing your query.top_k
parameter with the number of results to return.include_values
and/or include_metadata
to true
to include the vector values and/or metadata of the matching records in the response. However, when querying with top_k
over 1000, avoid returning vector data or metadata for optimal performance.For example, the following code uses a dense vector representation of the query “Disease prevention” to search for the 3 most semantically similar records in the example-namespaces
namespace:
The response will look as follows. Each record is returned with a similarity score that represents its distance to the query vector, calculated according to the similarity metric for the index.
When you search with a record ID, Pinecone uses the dense vector associated with the record as the query. To search a dense index with a record ID, use the query
operation with the following parameters:
namespace
to query. To use the default namespace, set the namespace to "__default__"
.id
parameter with the unique record ID containing the vector to use as the query.top_k
parameter with the number of results to return.include_values
and/or include_metadata
to true
to include the vector values and/or metadata of the matching records in the response. However, when querying with top_k
over 1000, avoid returning vector data or metadata for optimal performance.For example, the following code uses an ID to search for the 3 records in the example-namespace
namespace that are most semantically similar to the dense vector in the record:
Python SDK v6.0.0 and later provide async
methods for use with asyncio. Async support makes it possible to use Pinecone with modern async web frameworks such as FastAPI, Quart, and Sanic, and can significantly increase the efficiency of running queries in parallel. For more details, see the Async requests.