Magasin de vecteurs Qdrant
La classe QdrantVector propose une recherche vectorielle à l’aide de Qdrant, un moteur de recherche de similarité vectorielle. Elle fournit un service prêt pour la production avec une API pratique pour stocker, rechercher et gérer des vecteurs, ainsi qu’une prise en charge supplémentaire des charges utiles et des filtres avancés.
Options du constructeurLien direct vers Options du constructeur
url:
apiKey:
https:
MéthodesLien direct vers Méthodes
createIndex()Lien direct vers createindex
indexName:
dimension:
metric?:
namedVectors?:
Création d’une collection de vecteurs nommésLien direct vers Création d’une collection de vecteurs nommés
// 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()Lien direct vers upsert
indexName:
vectors:
metadata?:
ids?:
vectorName?:
Upsert dans des espaces vectoriels nommésLien direct vers Upsert dans des espaces vectoriels nommés
// 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()Lien direct vers query
indexName:
queryVector:
topK?:
filter?:
includeVector?:
using?:
Vecteurs nommésLien direct vers Vecteurs nommés
Qdrant prend en charge plusieurs vecteurs par collection, avec un nom attribué à chaque champ vectoriel. Utilisez le paramètre using pour sélectionner le champ vectoriel à interroger :
const results = await store.query({
indexName: 'my_index',
queryVector: embedding,
topK: 10,
using: 'title_embedding', // Query against a specific named vector
})
listIndexes()Lien direct vers listindexes
Renvoie un tableau de noms d’index sous forme de chaînes.
describeIndex()Lien direct vers describeindex
indexName:
Renvoie :
interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}
deleteIndex()Lien direct vers deleteindex
indexName:
updateVector()Lien direct vers updatevector
Met à jour un seul vecteur par ID ou par filtre de métadonnées. Vous devez fournir id ou filter, mais pas les deux.
indexName:
id?:
filter?:
update:
Met à jour un vecteur et/ou ses métadonnées dans l’index indiqué. Si le vecteur et les métadonnées sont tous deux fournis, les deux sont mis à jour. Fournir une seule valeur met uniquement cette valeur à jour.
deleteVector()Lien direct vers deletevector
indexName:
id:
Supprime un vecteur de l’index indiqué à partir de son ID.
deleteVectors()Lien direct vers deletevectors
Supprime plusieurs vecteurs par ID ou par filtre de métadonnées. Vous devez fournir ids ou filter, mais pas les deux.
indexName:
ids?:
filter?:
createPayloadIndex()Lien direct vers createpayloadindex
Crée un index de charge utile (métadonnées) sur un champ de collection pour permettre un filtrage efficace. Cette opération est obligatoire pour Qdrant Cloud et pour toute instance Qdrant avec 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()Lien direct vers deletepayloadindex
Supprime un index de charge utile d’un champ de collection.
indexName:
fieldName:
wait?:
Types de réponseLien direct vers Types de réponse
Les résultats de requête sont renvoyés dans ce format :
interface QueryResult {
id: string
score: number
metadata: Record<string, any>
vector?: number[] // Only included if includeVector is true
}
Gestion des erreursLien direct vers Gestion des erreurs
Le magasin lève des erreurs typées que vous pouvez intercepter :
try {
await store.query({
indexName: 'index_name',
queryVector: queryVector,
})
} catch (error) {
if (error instanceof VectorStoreError) {
console.log(error.code) // 'connection_failed' | 'invalid_dimension' | etc
console.log(error.details) // Additional error context
}
}