Aller au contenu principal

Magasin de vecteurs Pinecone

La classe PineconeVector fournit une interface avec la base de données vectorielle de Pinecone. 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
Lien direct vers Options du constructeur

Le constructeur accepte toutes les options de configuration de Pinecone, 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<string, string>
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'
= aws
Fournisseur cloud pour la création de nouveaux index

region?:

string
= us-east-1
Région pour la création de nouveaux index

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)

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
Métrique de distance pour la recherche de similarité. Utilisez 'dotproduct' si vous prévoyez d'utiliser la recherche hybride.

upsert()
Lien direct vers 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<string, any>[]
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()
Lien direct vers 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
= 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 le vecteur dans le résultat

namespace?:

string
Espace de noms facultatif depuis lequel interroger les vecteurs. Renvoie uniquement les résultats de l'espace de noms spécifié.

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 qui contient le vecteur

id?:

string
ID du vecteur à mettre à jour (mutuellement exclusif avec filter)

filter?:

Record<string, any>
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<string, any>
Nouvelles métadonnées à appliquer

deleteVector()
Lien direct vers deletevector

indexName:

string
Nom de l'index qui contient le vecteur

id:

string
ID du vecteur à supprimer

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 qui contient les vecteurs à supprimer

ids?:

string[]
Tableau des ID de vecteurs à supprimer (mutuellement exclusif avec filter)

filter?:

Record<string, any>
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
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 qui peuvent être interceptées :

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
Lien direct vers Variables d'environnement

Variables d'environnement requises :

  • PINECONE_API_KEY : votre clé d'API Pinecone

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