Aller au contenu principal

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 constructeur
Lien direct vers Options du constructeur

url:

string
URL REST de l’instance Qdrant. Par exemple : https://xyz-example.eu-central.aws.cloud.qdrant.io:6333

apiKey:

string
Clé API Qdrant facultative

https:

boolean
Indique s’il faut utiliser TLS lors de la configuration de la connexion. Recommandé.

Méthodes
Lien direct vers Méthodes

createIndex()
Lien direct vers createindex

indexName:

string
Nom de l’index à créer

dimension:

number
Dimension du vecteur (doit correspondre à votre modèle d’embedding). Obligatoire pour les collections à vecteur unique.

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
Métrique de distance pour la recherche de similarité

namedVectors?:

Record<string, { size: number; distance: 'cosine' | 'euclidean' | 'dotproduct' }>
Configuration des espaces vectoriels nommés. Lorsqu’elle est fournie, crée une collection avec plusieurs champs vectoriels nommés.

Création d’une collection de vecteurs nommés
Lien 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:

string
Nom de l’index dans lequel effectuer l’upsert

vectors:

number[][]
Tableau de vecteurs d’embedding

metadata?:

Record<string, any>[]
Métadonnées de chaque vecteur

ids?:

string[]
ID de vecteur facultatifs (générés automatiquement s’ils ne sont pas fournis)

vectorName?:

string
Nom de l’espace vectoriel dans lequel effectuer l’upsert lors de l’utilisation de vecteurs nommés.

Upsert dans des espaces vectoriels nommés
Lien 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:

string
Nom de l’index à interroger

queryVector:

number[]
Vecteur de requête pour trouver des vecteurs similaires

topK?:

number
= 10
Nombre de résultats à renvoyer

filter?:

Record<string, any>
Filtres de métadonnées pour la requête

includeVector?:

boolean
= false
Indique s’il faut inclure les vecteurs dans les résultats

using?:

string
Nom du champ vectoriel à interroger lors de l’utilisation de vecteurs nommés. Utilisez cette option lorsque votre collection comporte plusieurs champs vectoriels nommés.

Vecteurs nommés
Lien 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:

string
Nom de l’index à décrire

Renvoie :

interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}

deleteIndex()
Lien direct vers deleteindex

indexName:

string
Nom de l’index à supprimer

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:

string
Nom de l’index à mettre à jour

id?:

string
ID du vecteur à mettre à jour (s’exclut mutuellement avec filter)

filter?:

Record<string, any>
Filtre de métadonnées pour identifier le ou les vecteurs à mettre à jour (s’exclut mutuellement avec id)

update:

{ vector?: number[]; metadata?: Record<string, any>; }
Objet contenant le vecteur et/ou les métadonnées à mettre à jour

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:

string
Nom de l’index duquel supprimer le vecteur

id:

string
ID du vecteur à supprimer

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:

string
Nom de l’index contenant les vecteurs à supprimer

ids?:

string[]
Tableau des ID de vecteurs à supprimer (s’exclut mutuellement avec filter)

filter?:

Record<string, any>
Filtre de métadonnées pour identifier les vecteurs à supprimer (s’exclut mutuellement avec ids)

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:

string
Nom de la collection sur laquelle créer l’index de charge utile

fieldName:

string
Nom du champ de charge utile à indexer

fieldSchema:

'keyword' | 'integer' | 'float' | 'geo' | 'text' | 'bool' | 'datetime' | 'uuid'
Type de schéma du champ de charge utile

wait?:

boolean
= true
Indique s’il faut attendre la fin de l’opération
// 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:

string
Nom de la collection dont supprimer l’index de charge utile

fieldName:

string
Nom de l’index de champ de charge utile à supprimer

wait?:

boolean
= true
Indique s’il faut attendre la fin de l’opération

Types de réponse
Lien 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 erreurs
Lien 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
}
}