> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Magasin de vecteurs Qdrant La classe QdrantVector propose une recherche vectorielle à l’aide de [Qdrant](https://qdrant.tech/), 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 **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 ### `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'`): Métrique de distance pour la recherche de similarité (Default: `cosine`) **namedVectors** (`Record`): 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 ```typescript // 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()` **indexName** (`string`): Nom de l’index dans lequel effectuer l’upsert **vectors** (`number[][]`): Tableau de vecteurs d’embedding **metadata** (`Record[]`): 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 ```typescript // 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()` **indexName** (`string`): Nom de l’index à interroger **queryVector** (`number[]`): Vecteur de requête pour trouver des vecteurs similaires **topK** (`number`): Nombre de résultats à renvoyer (Default: `10`) **filter** (`Record`): Filtres de métadonnées pour la requête **includeVector** (`boolean`): Indique s’il faut inclure les vecteurs dans les résultats (Default: `false`) **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 Qdrant prend en charge [plusieurs vecteurs par collection](https://qdrant.tech/documentation/concepts/vectors/#named-vectors), avec un nom attribué à chaque champ vectoriel. Utilisez le paramètre `using` pour sélectionner le champ vectoriel à interroger : ```typescript const results = await store.query({ indexName: 'my_index', queryVector: embedding, topK: 10, using: 'title_embedding', // Query against a specific named vector }) ``` ### `listIndexes()` Renvoie un tableau de noms d’index sous forme de chaînes. ### `describeIndex()` **indexName** (`string`): Nom de l’index à décrire Renvoie : ```typescript interface IndexStats { dimension: number count: number metric: 'cosine' | 'euclidean' | 'dotproduct' } ``` ### `deleteIndex()` **indexName** (`string`): Nom de l’index à supprimer ### `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`): Filtre de métadonnées pour identifier le ou les vecteurs à mettre à jour (s’exclut mutuellement avec id) **update** (`{ vector?: number[]; metadata?: Record; }`): 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()` **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()` 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`): Filtre de métadonnées pour identifier les vecteurs à supprimer (s’exclut mutuellement avec ids) ### `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`): Indique s’il faut attendre la fin de l’opération (Default: `true`) ```typescript // 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()` 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`): Indique s’il faut attendre la fin de l’opération (Default: `true`) ## Types de réponse Les résultats de requête sont renvoyés dans ce format : ```typescript interface QueryResult { id: string score: number metadata: Record vector?: number[] // Only included if includeVector is true } ``` ## Gestion des erreurs Le magasin lève des erreurs typées que vous pouvez intercepter : ```typescript 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 } } ``` ## Pages associées - [Filtres de métadonnées](https://mastra.zisheng.pro/fr/reference/rag/metadata-filters)