VECTOR.QUERY to find the IDs whose vectors are closest to a query vector.
TOPK sets how many results to return, and the query vector is given in the same three forms VECTOR.ADD accepts. The reply is a list of ID and score pairs, best match first. Scores are normalized to the range 0 to 1 for every metric, so a higher score always means a closer match and a threshold can be applied without knowing which metric the index uses.
PROFILE trades recall against latency. FAST examines less of the index and returns sooner, PRECISE examines more and is likelier to return the true nearest neighbours, and BALANCED, the default, sits between them. The profile only changes how the query reads the index, never what is stored, so it can be varied per call.
Search is approximate: a query may miss a true neighbour, and raising TOPK or moving to PRECISE reduces how often that happens. Asking for more results than the index holds simply returns everything it has.
Vector indexes are an Upstash extension. See the vector command overview for how an index is created, written to, and queried.
Syntax
Arguments
Important points
TOPKand the query vector are both required; the clauses may be given in any order.- The three vector forms are mutually exclusive and exactly one must be given.
VALUESis the readable form;FP32avoids decimal formatting on a binary-safe connection;BASE64-FP32carries the same bytes through JSON, which is what the REST API needs. - Results are ordered by score, highest first. Scores are normalized to
0through1for every metric. - A query vector whose length differs from the index’s
DIMreturnsERR vector dimension mismatch: expected <dim>, got <n>.
Response
The reply reports the result of the operation. Error replies have the same shape in RESP2 and RESP3 and are surfaced as exceptions by the SDKs below.Client libraries often decode bulk strings, maps, sets, and numeric strings into language-native values. The table describes the Redis wire reply.
Examples
TCP examples use the TLSREDIS_URL from the Upstash console. REST examples use UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN.
Redis CLI
Redis CLI
@upstash/redis
@upstash/redis
This command is not supported yet in
@upstash/redis.upstash_redis
upstash_redis
This command is not supported yet in
upstash_redis.ioredis
ioredis
node-redis
node-redis
redis-py
redis-py
go-redis
go-redis
jedis
jedis
redis-rs
redis-rs