Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.
L’extension lakebase_vector ajoute approximativement la recherche vectorielle du voisin le plus proche (ANN) à Lakebase via le type d’index lakebase_ann . Il s’agit d’un compagnon de dépôt pour 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. Installez ensuite l’extension :
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
Le CASCADE mot clé s’installe pgvector automatiquement en tant que dépendance.
Démarrage rapide
-- 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;
Peupler à partir de tables synchronisées
Si vous chargez des embeddings depuis Unity Catalog au lieu de les insérer directement, les tables synchronisées peuvent mapper une colonne d’embedding lakehouse directement sur une colonne Postgres vector pendant la synchronisation, au lieu de la correspondance par défaut JSONB .
Voir Mappage personnalisé de types pour la recherche Lakebase.
Configurer l’index
Définissez build_mode à la création de l’index pour contrôler la précision/la vitesse de compromis :
-
standard(par défaut) : optimise le rappel. Utilisez la plupart des charges de travail. -
fast: s’appuie plus rapidement sur un rappel inférieur. Utilisez quand le temps de génération importe plus que la qualité de la recherche.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');
Générer des index simultanément
Permet CREATE INDEX CONCURRENTLY de générer sans verrouiller la table, puis REINDEX CONCURRENTLY de reconstruire sans temps d’arrêt :
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 et lists les valeurs de default_probesdefault_epsilonl’index.
Définissez lakebase_ann.probes au moment de la requête pour contrôler le compromis de précision/vitesse. Les valeurs plus élevées améliorent le rappel, mais les requêtes lentes.
Avant de définir lakebase_ann.probes, appelez lakebase_ann_index_info pour rechercher votre lists tableau. Définissez une valeur de sonde par entrée de liste :
lists à partir des informations d’index |
probes pour définir |
|---|---|
[] (vide) |
|
[222] |
'22' |
[3333, 33333] |
'33, 333' |
Note
Le lakebase_ann.probes paramètre nécessite une valeur par entrée dans lists. Lorsque le lists tableau est vide (ce qui se produit sur de petites tables où le générateur d’index ne crée aucune partition IVF), ne définissez probespas . La définition d’une valeur lorsque le lists tableau est vide provoque une erreur. Les partitions IVF apparaissent une fois que votre jeu de données est suffisamment grand pour que le générateur d’index le partitionne.
-- 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 re-classement. La valeur par défaut fonctionne 1.9 bien pour la plupart des charges de travail.
SET lakebase_ann.epsilon TO '1.5';
Classes d’opérateurs
| Mesure de distance | Classe d’opérateur | Opérateur de requête |
|---|---|---|
| L2 (euclidienne) | vector_l2_ops |
<-> |
| Produit interne négatif | vector_ip_ops |
<#> |
| Similarité cosinus | vector_cosine_ops |
<=> |
Choisissez la classe d’opérateur qui correspond à la façon dont vos incorporations ont été entraînées et utilisez la même métrique pour l’index et la requête :
-
vector_cosine_ops(<=>) est la similarité cosinus. Utilisez-la pour la plupart des incorporations de texte. C’est le choix le plus courant. -
vector_l2_ops(<->) est la distance euclide (L2). Utilisez-la lorsque la distance spatiale absolue importe et que les vecteurs ne sont pas normalisés. -
vector_ip_ops(<#>) est un produit intérieur négatif. Utilisez-le lorsque les vecteurs sont prédéfinisés en longueur unitaire. Pour les vecteurs unitaires, le produit interne est égal à la similarité cosinus et est généralement plus rapide.
Informations de référence sur les options d’index
| Option | Type | Default | Description |
|---|---|---|---|
build_mode |
ficelle | 'standard' |
Contrôle le compromis de précision/vitesse au moment de la génération d’index.
'standard' optimise le rappel ; 'fast' s’accélère avec un rappel inférieur. |
Informations de référence sur GUC
| Paramètre | Type | Default | Description |
|---|---|---|---|
lakebase_ann.probes |
entier[] | (unset) | Tableau de nombres de sondes par partition, une valeur par entrée dans lists. Les valeurs plus élevées améliorent le rappel au coût de la vitesse des requêtes. Vérifiez lakebase_ann_index_info la lists longueur pour déterminer le nombre de valeurs à définir. |
lakebase_ann.epsilon |
float | 1.9 |
Re-classement de la marge. Plage valide : 0.0 à 4.0. |
Fonctions utilitaires
| Fonction | Returns | Description |
|---|---|---|
lakebase_ann_prewarm(regclass) |
void | Charge un index en mémoire pour éliminer la latence de démarrage à froid sur la première requête. |
lakebase_ann_index_info(regclass) |
text | Retourne les métadonnées d’index sous forme de texte, y compris lists, default_probeset default_epsilon. |