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
| Algorithme | Vitesse | Mémoire | Précision | Meilleur Pour |
|---|---|---|---|---|
| HNSW | Rapide | Élevée | ~95% | La plupart des cas |
| IVF | Moyenne | Moyenne | ~90% | Grande échelle |
| Plat | Lent | Faible | 100% | 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éristique | Description |
|---|---|
| Filtrage | Requête par métadonnées |
| Mises à jour | Modifier les vecteurs existants |
| Suppression | Supprimer des vecteurs |
| Espaces de noms | Isoler les données |
| Réplication | Haute 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.