Aller au contenu principal

Chapitre 1 : Introduction aux Magasins de Vecteurs

Qu'est-ce qui rend les bases de données vectorielles spéciales ?​

Les bases de données traditionnelles sont optimisées pour les correspondances exactes :

SELECT * FROM products WHERE id = 123;

Les bases de données vectorielles sont optimisées pour la recherche de similarité :

# Trouver les 10 vecteurs les plus similaires à query_vector
results = vector_db.search(query_vector, top_k=10)

Algorithmes d'indexation​

HNSW (Hierarchical Navigable Small World)​

L'algorithme le plus populaire pour la recherche vectorielle :

# Paramètres HNSW
index = create_hnsw_index(
vectors=embeddings,
M=16, # Nombre de connexions par nœud
ef_construction=200, # Qualité à la construction
ef_search=50 # Qualité à la requête
)

Caractéristiques :

  • Excellente vitesse de requête
  • Utilisation élevée de la mémoire
  • Meilleur pour la plupart des cas d'utilisation

IVF (Inverted File Index)​

Regroupe les vecteurs pour une recherche plus rapide :

# Paramètres IVF
index = create_ivf_index(
vectors=embeddings,
nlist=100, # Nombre de clusters
nprobe=10 # Clusters à rechercher
)

Caractéristiques :

  • Moins de mémoire que HNSW
  • Nécessite un entraînement
  • Bon pour les grands ensembles de données

Index Plat​

Recherche exacte par force brute :

# Pas de paramètres - recherche exacte
index = create_flat_index(vectors=embeddings)

Caractéristiques :

  • Précision parfaite
  • Recherche la plus lente
  • Bon pour les petits ensembles de données

Comparaison des Algorithmes​

AlgorithmeVitesseMémoirePrécisionMeilleur Pour
HNSWRapideÉlevée~95%La plupart des cas
IVFMoyenneMoyenne~90%Grande échelle
PlatLentFaible100%Petits ensembles de données

Stockage des Métadonnées​

Les bases de données vectorielles stockent les métadonnées avec les vecteurs :

vectorstore.add(
vectors=[embedding],
documents=["Document de politique d'entreprise"],
metadata=[{
"source": "handbook.pdf",
"page": 15,
"department": "RH",
"date": "2024-01-15"
}]
)

# Filtrer par métadonnées lors de la recherche
results = vectorstore.search(
query_vector,
filter={"department": "RH"},
top_k=5
)

Caractéristiques Clés à Considérer​

CaractéristiqueDescription
FiltrageRequête par métadonnées
Mises à jourModifier les vecteurs existants
SuppressionSupprimer des vecteurs
Espaces de nomsIsoler les données
RéplicationHaute disponibilité
PartitionnementÉvoluer horizontalement

Résumé​

  • Les bases de données vectorielles permettent la recherche de similarité
  • HNSW est l'algorithme le plus courant
  • Le filtrage par métadonnées est essentiel pour la production
  • Choisissez en fonction de l'échelle et des exigences

Prochaines Étapes​

Continuez vers Chapitre 2 : Options Populaires.