Qdrant vector store
The QdrantVector class provides vector search using Qdrant, a vector similarity search engine. It provides a production-ready service with a convenient API to store, search, and manage vectors with additional payload and extended filtering support.
Constructor optionsConstructor options的直接链接
url:
apiKey:
https:
MethodsMethods的直接链接
createIndex()createindex的直接链接
indexName:
dimension:
metric?:
namedVectors?:
Creating a named vectors Collectioncreating-a-named-vectors-collection的直接链接
// Create a collection with multiple named vector spaces
await store.createIndex({
indexName: 'multi_modal',
dimension: 768, // fallback
namedVectors: {
text: { size: 768, distance: 'cosine' },
image: { size: 512, distance: 'euclidean' },
},
})
upsert()upsert的直接链接
indexName:
vectors:
metadata?:
ids?:
vectorName?:
Upserting into Named Vector SpacesUpserting into Named Vector Spaces的直接链接
// Upsert into the "text" vector space
await store.upsert({
indexName: 'multi_modal',
vectors: textEmbeddings,
metadata: textMetadata,
vectorName: 'text',
})
// Upsert into the "image" vector space
await store.upsert({
indexName: 'multi_modal',
vectors: imageEmbeddings,
metadata: imageMetadata,
vectorName: 'image',
})
query()query的直接链接
indexName:
queryVector:
topK?:
filter?:
includeVector?:
using?:
named vectorsnamed-vectors的直接链接
Qdrant supports multiple vectors per collection, with a name assigned to each vector field. Use the using parameter to select the vector field to query:
const results = await store.query({
indexName: 'my_index',
queryVector: embedding,
topK: 10,
using: 'title_embedding', // Query against a specific named vector
})
listIndexes()listindexes的直接链接
Returns an array of index names as strings.
describeIndex()describeindex的直接链接
indexName:
Returns:
interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}
deleteIndex()deleteindex的直接链接
indexName:
updateVector()updatevector的直接链接
Update a single vector by ID or by metadata filter. Either id or filter must be provided, but not both.
indexName:
id?:
filter?:
update:
Updates a vector and/or its metadata in the specified index. If both vector and metadata are provided, both will be updated. Providing either value updates that value alone.
deleteVector()deletevector的直接链接
indexName:
id:
Deletes a vector from the specified index by its ID.
deleteVectors()deletevectors的直接链接
Delete multiple vectors by IDs or by metadata filter. Either ids or filter must be provided, but not both.
indexName:
ids?:
filter?:
createPayloadIndex()createpayloadindex的直接链接
Creates a payload (metadata) index on a collection field to enable efficient filtering. This is required for Qdrant Cloud and any Qdrant instance with strict_mode_config = true.
indexName:
fieldName:
fieldSchema:
wait?:
// Create a keyword index for filtering by source
await store.createPayloadIndex({
indexName: 'my_index',
fieldName: 'source',
fieldSchema: 'keyword',
})
const results = await store.query({
indexName: 'my_index',
queryVector: queryVector,
filter: { source: 'document-a' },
})
deletePayloadIndex()deletepayloadindex的直接链接
Removes a payload index from a collection field.
indexName:
fieldName:
wait?:
Response typesResponse types的直接链接
Query results are returned in this format:
interface QueryResult {
id: string
score: number
metadata?: Record<string, any>
vector?: number[] // Only included if includeVector is true
}
Error handlingError handling的直接链接
The store throws MastraError instances from @mastra/core/error:
import { MastraError } from '@mastra/core/error'
try {
await store.query({
indexName: 'index_name',
queryVector: queryVector,
})
} catch (error) {
if (error instanceof MastraError) {
console.log(error.id) // 'MASTRA_VECTOR_QDRANT_QUERY_FAILED'
console.log(error.domain) // 'STORAGE'
console.log(error.category) // 'USER' | 'THIRD_PARTY'
console.log(error.details) // Additional error context
}
}