Base vectorielle Lance
La classe LanceVectorStore fournit une recherche vectorielle avec LanceDB, une base vectorielle embarquée fondée sur le format colonnaire Lance. Elle offre un stockage efficace et une recherche de similarité rapide, aussi bien pour le développement local que pour les déploiements en production.
Méthode de fabriqueLien direct vers Méthode de fabrique
LanceVectorStore utilise un modèle de fabrique pour sa création. Utilisez la méthode statique create() plutôt que le constructeur directement.
uri:
options?:
Exemples de constructionLien direct vers Exemples de construction
Vous pouvez créer une instance de LanceVectorStore à l’aide de la méthode statique create :
import { LanceVectorStore } from '@mastra/lance'
// Connect to a local database
const vectorStore = await LanceVectorStore.create('/path/to/db')
// Connect to a LanceDB cloud database
const cloudStore = await LanceVectorStore.create('db://host:port')
// Connect to a cloud database with options
const s3Store = await LanceVectorStore.create('s3://bucket/db', {
storageOptions: { timeout: '60s' },
})
MéthodesLien direct vers Méthodes
createIndex()Lien direct vers createindex
tableName:
indexName:
dimension:
metric?:
indexConfig?:
LanceIndexConfigLien direct vers lanceindexconfig
type:
ivfflat:
hnsw:
numPartitions?:
numSubVectors?:
hnsw?:
m?:
efConstruction?:
createTable()Lien direct vers createtable
tableName:
data:
options?:
upsert()Lien direct vers upsert
tableName:
vectors:
metadata?:
ids?:
query()Lien direct vers query
tableName:
queryVector:
topK?:
filter?:
includeVector?:
columns?:
includeAllColumns?:
listTables()Lien direct vers listtables
Renvoie un tableau de noms de tables sous forme de chaînes.
const tables = await vectorStore.listTables()
// ['my_vectors', 'embeddings', 'documents']
getTableSchema()Lien direct vers gettableschema
tableName:
Renvoie le schéma de la table indiquée.
deleteTable()Lien direct vers deletetable
tableName:
deleteAllTables()Lien direct vers deletealltables
Supprime toutes les tables de la base de données.
listIndexes()Lien direct vers listindexes
Renvoie un tableau de noms d’index sous forme de chaînes.
describeIndex()Lien direct vers describeindex
indexName:
Renvoie des informations sur l’index :
interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
type: 'ivfflat' | 'hnsw'
config: {
m?: number
efConstruction?: number
numPartitions?: number
numSubVectors?: number
}
}
deleteIndex()Lien direct vers deleteindex
indexName:
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:
id?:
filter?:
update:
deleteVector()Lien direct vers deletevector
indexName:
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:
ids?:
filter?:
close()Lien direct vers close
Ferme la connexion à la base de données.
Types de réponseLien direct vers Types de réponse
Les résultats de la 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
document?: string // Document text if available
}
Gestion des erreursLien direct vers Gestion des erreurs
La base vectorielle déclenche des erreurs typées qui peuvent être interceptées :
try {
await store.query({
tableName: 'my_vectors',
queryVector: queryVector,
})
} catch (error) {
if (error instanceof Error) {
console.log(error.message)
}
}
Bonnes pratiquesLien direct vers Bonnes pratiques
- Utilisez le type d’index adapté à votre cas d’utilisation :
- HNSW pour un meilleur rappel et de meilleures performances lorsque la mémoire n’est pas limitée
- IVF pour une meilleure efficacité mémoire avec de grands jeux de données
- Pour des performances optimales avec de grands jeux de données, envisagez d’ajuster les valeurs
numPartitionsetnumSubVectors - Utilisez la méthode
close()pour fermer correctement les connexions lorsque vous avez fini d’utiliser la base de données - Stockez les métadonnées selon un schéma cohérent afin de simplifier les opérations de filtrage