lakebase_vector
Bêta
Cette fonctionnalité est en Bêta. Les administrateurs du Workspace peuvent contrôler l'accès à cette fonctionnalité à partir de la page Previews . Consultez Gérer les aperçus Databricks.
L'extension lakebase_vector ajoute la recherche vectorielle de plus proche voisin approximatif (ANN) à Lakebase via le type d'index lakebase_ann. C'est un complément direct à pgvector: les mêmes types de vecteurs, opérateurs de distance et syntaxe de requête fonctionnent sans modification.
Installer
Tout d'abord, activez la recherche Lakebase dans les paramètres de votre projet. Puis installez l'extension :
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
Le mot-clé CASCADE installe automatiquement pgvector en tant que dépendance.
Quick start
-- Create a table with a vector column
CREATE TABLE items (id BIGSERIAL PRIMARY KEY, embedding VECTOR(3));
-- Insert sample data
INSERT INTO items (embedding)
SELECT ARRAY[random(), random(), random()]::real[]
FROM generate_series(1, 1000);
-- Create a lakebase_ann index
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops);
-- Query using standard pgvector distance operators
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
Configurez l'index
Définissez build_mode lors de la création de l'index pour contrôler le compromis précision/vitesse :
standard(default) : optimise le rappel. Utilisez pour la plupart des charges de travail.fastcrée plus rapidement avec un rappel inférieur. À utiliser lorsque le temps de création importe plus que la qualité de la recherche.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');
Créer des index simultanément
Utilisez CREATE INDEX CONCURRENTLY pour créer sans verrouiller la table, puis REINDEX CONCURRENTLY pour reconstruire sans interruption :
CREATE INDEX CONCURRENTLY items_embedding_ann ON items
USING lakebase_ann (embedding vector_l2_ops);
REINDEX INDEX CONCURRENTLY items_embedding_ann;
Ajuster la précision de la recherche
Avant le réglage, appelez lakebase_ann_index_info(index_name) pour obtenir les valeurs lists, default_probes et default_epsilon de l'index.
Définissez lakebase_ann.probes au moment de la query pour contrôler le compromis précision/vitesse. Des valeurs plus élevées améliorent le rappel mais ralentissent les queries.
Avant de définir lakebase_ann.probes, appelez lakebase_ann_index_info pour trouver votre tableau lists. Définissez une valeur de sonde par entrée de liste :
|
|
|---|---|
| |
|
|
|
|
Le paramètre lakebase_ann.probes requiert une valeur par entrée dans lists. Lorsque le tableau lists est vide (ce qui se produit sur de petites tables où le constructeur d'index ne crée pas de partitions IVF), ne définissez pas probes. Définir une valeur lorsque le tableau lists est vide provoque une erreur. Les partitions IVF apparaissent une fois que votre dataset est suffisamment grand pour que le générateur d'index puisse le partitionner.
-- Check your index's lists length first
SELECT lakebase_ann_index_info('items_embedding_ann');
-- Set probes matching the lists array (example: one partition)
SET lakebase_ann.probes TO '22';
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 10;
lakebase_ann.epsilon contrôle la marge de reclassement. La valeur par default de 1.9 fonctionne bien pour la plupart des charges de travail.
SET lakebase_ann.epsilon TO '1.5';
Classes d'opérateurs
Métrique de distance | Classe d'opérateur | Opérateur de query |
|---|---|---|
L2 (euclidien) |
|
|
Produit interne négatif |
|
|
Similarité cosinus |
|
|
Choisissez la classe d’opérateur qui correspond à la façon dont vos intégrations ont été entraînées, et utilisez la même métrique pour l’index et la query :
vector_cosine_ops(<=>) est la similarité cosinus. Utilisez-le pour la plupart des intégrations de texte. C'est le choix le plus courant.vector_l2_ops(<->) est la distance euclidienne (L2). Utilisez-le lorsque la distance spatiale absolue importe et que les vecteurs ne sont pas normalisés.vector_ip_ops(<#>) est un produit interne négatif. Utilisez-le lorsque les vecteurs sont pré-normalisés à une longueur unitaire. Pour les vecteurs unitaires, le produit interne est égal à la similarité cosinus et est généralement plus rapide.
Référence des options d'index
Option | Type | Par défaut | Description |
|---|---|---|---|
| chaîne |
| Contrôle le compromis précision/vitesse au moment de la création de l'index. |
Référence GUC
parameter | Type | Par défaut | Description |
|---|---|---|---|
| entier[] | (non défini) | Tableau de comptages de sondes par partition, une valeur par entrée dans |
| Présentation libre |
| Marge de reclassement. Plage de valeurs valides : |
Fonctions utilitaires
Fonction | Renvoie | Description |
|---|---|---|
| vide | Charge un index en mémoire pour éliminer la latence de démarrage à cold-start lors de la première query. |
| Texte | Renvoie les métadonnées d'index sous forme de texte, notamment |