> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Magasin de vecteurs Pinecone La classe PineconeVector fournit une interface avec la base de données vectorielle de [Pinecone](https://www.pinecone.io/). Elle permet la recherche vectorielle en temps réel, avec des fonctionnalités telles que la recherche hybride, le filtrage de métadonnées et la gestion des espaces de noms. ## Options du constructeur Le constructeur accepte toutes les [options de configuration de Pinecone](https://docs.pinecone.io/reference/typescript-sdk), ainsi que des champs propres à Mastra. **id** (`string`): Identifiant unique de cette instance de magasin de vecteurs **apiKey** (`string`): Clé d'API Pinecone **controllerHostUrl** (`string`): URL d'hôte personnalisée du contrôleur Pinecone **additionalHeaders** (`Record`): En-têtes HTTP supplémentaires à inclure dans les requêtes **sourceTag** (`string`): Balise de source pour le suivi des requêtes **cloud** (`'aws' | 'gcp' | 'azure'`): Fournisseur cloud pour la création de nouveaux index (Default: `aws`) **region** (`string`): Région pour la création de nouveaux index (Default: `us-east-1`) ## Méthodes ### `createIndex()` **indexName** (`string`): Nom de l'index à créer **dimension** (`number`): Dimension du vecteur (doit correspondre à votre modèle d'embedding) **metric** (`'cosine' | 'euclidean' | 'dotproduct'`): Métrique de distance pour la recherche de similarité. Utilisez 'dotproduct' si vous prévoyez d'utiliser la recherche hybride. (Default: `cosine`) ### `upsert()` **indexName** (`string`): Nom de votre index Pinecone **vectors** (`number[][]`): Tableau de vecteurs d'embedding denses **sparseVectors** (`{ indices: number[], values: number[] }[]`): Tableau de vecteurs creux pour la recherche hybride. Chaque vecteur doit comporter des tableaux indices et values correspondants. **metadata** (`Record[]`): Métadonnées de chaque vecteur **ids** (`string[]`): ID de vecteurs facultatifs (générés automatiquement s’ils ne sont pas fournis) **namespace** (`string`): Espace de noms facultatif où stocker les vecteurs. Les vecteurs de différents espaces de noms sont isolés les uns des autres. ### `query()` **indexName** (`string`): Nom de l'index à interroger **queryVector** (`number[]`): Vecteur de requête dense pour trouver des vecteurs similaires **sparseVector** (`{ indices: number[], values: number[] }`): Vecteur creux facultatif pour la recherche hybride. Il doit comporter des tableaux indices et values correspondants. **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 le vecteur dans le résultat (Default: `false`) **namespace** (`string`): Espace de noms facultatif depuis lequel interroger les vecteurs. Renvoie uniquement les résultats de l'espace de noms spécifié. ### `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 qui contient le vecteur **id** (`string`): ID du vecteur à mettre à jour (mutuellement exclusif avec filter) **filter** (`Record`): Filtre de métadonnées pour identifier le ou les vecteurs à mettre à jour (mutuellement exclusif avec id) **namespace** (`string`): Espace de noms facultatif pour l'opération de mise à jour **update** (`object`): Paramètres de mise à jour **update.vector** (`number[]`): Nouvelles valeurs de vecteur à appliquer **update.metadata** (`Record`): Nouvelles métadonnées à appliquer ### `deleteVector()` **indexName** (`string`): Nom de l'index qui contient le vecteur **id** (`string`): ID du vecteur à supprimer ### `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 qui contient les vecteurs à supprimer **ids** (`string[]`): Tableau des ID de vecteurs à supprimer (mutuellement exclusif avec filter) **filter** (`Record`): Filtre de métadonnées pour identifier les vecteurs à supprimer (mutuellement exclusif avec ids) **namespace** (`string`): Espace de noms facultatif pour l'opération de suppression ## 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 qui peuvent être interceptées : ```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 } } ``` ### Variables d'environnement Variables d'environnement requises : - `PINECONE_API_KEY` : votre clé d'API Pinecone ## Recherche hybride Pinecone prend en charge la recherche hybride en combinant des vecteurs denses et creux. Pour utiliser la recherche hybride : 1. Créez un index avec `metric: 'dotproduct'` 2. Lors de l'upsert, fournissez des vecteurs creux avec le paramètre `sparseVectors` 3. Lors de la requête, fournissez un vecteur creux avec le paramètre `sparseVector` ## Ressources associées - [Filtres de métadonnées](https://mastra.zisheng.pro/fr/reference/rag/metadata-filters)