DatabaseConfig
Le type DatabaseConfig vous permet de spécifier des configurations propres à chaque base de données lorsque vous utilisez des outils de requête vectorielle. Ces configurations vous permettent d’utiliser les fonctionnalités et les optimisations proposées par différents magasins de vecteurs.
Définition de typeLien direct vers Définition de type
export type DatabaseConfig = {
pinecone?: PineconeConfig
pgvector?: PgVectorConfig
chroma?: ChromaConfig
turbopuffer?: TurbopufferConfig
[key: string]: any // Extensible for future databases
}
Types propres aux bases de donnéesLien direct vers Types propres aux bases de données
PineconeConfigLien direct vers pineconeconfig
Options de configuration propres au magasin de vecteurs Pinecone.
namespace?:
sparseVector?:
indices:
values:
Cas d’utilisation :
- Applications multi-tenant (espaces de noms distincts par tenant)
- Isolation des environnements (espaces de noms de développement, préproduction et production)
- Recherche hybride combinant correspondances sémantiques et par mots-clés
PgVectorConfigLien direct vers pgvectorconfig
Options de configuration propres à PostgreSQL avec l’extension pgvector.
minScore?:
ef?:
probes?:
Recommandations de performance :
- ef : commencez avec 2 à 4 fois votre valeur topK, puis augmentez-la pour améliorer la précision
- probes : commencez entre 1 et 10, puis augmentez-la pour améliorer le rappel
- minScore : utilisez des valeurs entre 0,5 et 0,9 selon vos exigences de qualité
Cas d’utilisation :
- Optimisation des performances pour les scénarios à forte charge
- Filtrage de qualité pour supprimer les résultats non pertinents
- Réglage fin du compromis entre précision et vitesse de recherche
ChromaConfigLien direct vers chromaconfig
Options de configuration propres au magasin de vecteurs Chroma.
where?:
whereDocument?:
Exemples de syntaxe de filtre :
// Simple equality
where: { "category": "technical" }
// Operators
where: { "price": { "$gt": 100 } }
// Multiple conditions
where: {
"category": "electronics",
"inStock": true
}
// Document content filtering
whereDocument: { "$contains": "API documentation" }
Cas d’utilisation :
- Filtrage avancé des métadonnées
- Filtrage des documents fondé sur leur contenu
- Combinaisons de requêtes complexes
TurbopufferConfigLien direct vers turbopufferconfig
Options de configuration propres au magasin de vecteurs Turbopuffer.
consistency?:
Cas d’utilisation :
- Requêtes sensibles à la latence pour lesquelles des données légèrement obsolètes sont acceptables (
eventual) - Flux de travail de lecture après écriture qui doivent voir les données les plus récentes (
strong)
Exemples d’utilisationLien direct vers Exemples d’utilisation
- Utilisation de base
- Remplacement à l’exécution
- Plusieurs bases de données
- Réglage des performances
Configuration de base d’une base de donnéesLien direct vers Configuration de base d’une base de données
import { createVectorQueryTool } from '@mastra/rag'
const vectorTool = createVectorQueryTool({
vectorStoreName: 'pinecone',
indexName: 'documents',
model: embedModel,
databaseConfig: {
pinecone: {
namespace: 'production',
},
},
})
Remplacement de configuration à l’exécutionLien direct vers Remplacement de configuration à l’exécution
import { RequestContext } from '@mastra/core/request-context'
// Initial configuration
const vectorTool = createVectorQueryTool({
vectorStoreName: 'pinecone',
indexName: 'documents',
model: embedModel,
databaseConfig: {
pinecone: {
namespace: 'development',
},
},
})
// Override at runtime
const requestContext = new RequestContext()
requestContext.set('databaseConfig', {
pinecone: {
namespace: 'production',
},
})
await vectorTool.execute({ queryText: 'search query' }, { mastra, requestContext })
Configuration de plusieurs bases de donnéesLien direct vers Configuration de plusieurs bases de données
const vectorTool = createVectorQueryTool({
vectorStoreName: 'dynamic', // Will be determined at runtime
indexName: 'documents',
model: embedModel,
databaseConfig: {
pinecone: {
namespace: 'default',
},
pgvector: {
minScore: 0.8,
ef: 150,
},
chroma: {
where: { type: 'documentation' },
},
},
})
Prise en charge de plusieurs bases de données : lorsque vous configurez plusieurs bases de données, seule la configuration correspondant au magasin de vecteurs réellement utilisé est appliquée.
Réglage des performancesLien direct vers Réglage des performances
// High accuracy configuration
const highAccuracyTool = createVectorQueryTool({
vectorStoreName: 'postgres',
indexName: 'embeddings',
model: embedModel,
databaseConfig: {
pgvector: {
ef: 400, // High accuracy
probes: 20, // High recall
minScore: 0.85, // High quality threshold
},
},
})
// High speed configuration
const highSpeedTool = createVectorQueryTool({
vectorStoreName: 'postgres',
indexName: 'embeddings',
model: embedModel,
databaseConfig: {
pgvector: {
ef: 50, // Lower accuracy, faster
probes: 3, // Lower recall, faster
minScore: 0.6, // Lower quality threshold
},
},
})
ExtensibilitéLien direct vers Extensibilité
Le type DatabaseConfig est conçu pour être extensible. Pour ajouter la prise en charge d’une nouvelle base de données vectorielle :
// 1. Define the configuration interface
export interface NewDatabaseConfig {
customParam1?: string
customParam2?: number
}
// 2. Extend DatabaseConfig type
export type DatabaseConfig = {
pinecone?: PineconeConfig
pgvector?: PgVectorConfig
chroma?: ChromaConfig
newdatabase?: NewDatabaseConfig
[key: string]: any
}
// 3. Use in vector query tool
const vectorTool = createVectorQueryTool({
vectorStoreName: 'newdatabase',
indexName: 'documents',
model: embedModel,
databaseConfig: {
newdatabase: {
customParam1: 'value',
customParam2: 42,
},
},
})
Bonnes pratiquesLien direct vers Bonnes pratiques
- Configuration des environnements : utilisez différents espaces de noms ou configurations pour différents environnements
- Réglage des performances : commencez avec les valeurs par défaut et ajustez-les selon vos besoins spécifiques
- Filtrage de qualité : utilisez minScore pour exclure les résultats de faible qualité
- Flexibilité à l’exécution : remplacez les configurations à l’exécution pour les scénarios définis à l’exécution
- Documentation : documentez vos choix de configuration spécifiques pour les membres de l’équipe
Guide de migrationLien direct vers Guide de migration
Les outils de requête vectorielle existants continuent de fonctionner sans modification. Pour ajouter des configurations de base de données :
const vectorTool = createVectorQueryTool({
vectorStoreName: 'pinecone',
indexName: 'documents',
model: embedModel,
+ databaseConfig: {
+ pinecone: {
+ namespace: 'production'
+ }
+ }
});