Skip to main content
The query method is designed to retrieve the most similar vectors from the index, using the specific distance metric defined for your index. This method supports a variety of options to configure the query to your needs.
The dimension of the query vector must match the dimension of your index.
The score returned from query requests is a normalized value between 0 and 1, where 1 indicates the highest similarity and 0 the lowest regardless of the similarity function used.

Arguments

Payload
QueryOptions
required

Response

QueryResponse
Vector[]
required
await index.query({ topK: 2, vector: [ ... ]})
/*
{
  matches: [
    {
      id: '6345',
      score: 1.00000012,
      vector: [],
      metadata: {
		sentence: "Upstash is great."
	  }
    },
    {
      id: '1233',
      score: 1.00000012,
      vector: [],
      metadata: undefined
    },
  ],
  namespace: ''
}
*/
type Metadata = {
  title: string,
  genre: 'sci-fi' | 'fantasy' | 'horror' | 'action'
}

const results = await index.query<Metadata>({
  vector: [
    ... // query embedding
  ],
  includeVectors: true,
  topK: 1,
  filter: "genre = 'fantasy' and title = 'Lord of the Rings'"
})

if (results[0].metadata) {
  // Since we passed the Metadata type parameter above,
  // we can interact with metadata fields without having to
  // do any typecasting.
  const { title, genre } = results[0].metadata;
  console.log(`The best match in fantasy was ${title}`)
}