MAISON CODE .
/ Tech · AI · Search · Vectors · Database

Bases de données vectorielles : la mémoire de l'IA

SQL utilise une correspondance exacte de mots clés. Les bases de données vectorielles utilisent la recherche sémantique. Comment créer des moteurs de recherche qui comprennent que « Scarlet » est similaire à « Rouge ».

AB
Alex B.
Bases de données vectorielles : la mémoire de l'IA

L’histoire de la recherche : du SQL aux vecteurs

Pour comprendre pourquoi les bases de données vectorielles sont nécessaires, nous devons examiner l’histoire de la recherche d’informations.

Génération 1 : correspondance exacte (années 1970) L’opérateur SQL LIKE. Requête : SELECT * FROM produits WHERE description LIKE '%dress%'. C’est binaire. Soit il contient la chaîne « dress », soit il ne le contient pas. Si l’utilisateur tape « tenue », il n’obtient aucun résultat. Cela a obligé les utilisateurs à apprendre « Search-Speak » (en tapant des mots-clés spécifiques dont ils savaient qu’ils fonctionneraient).

Génération 2 : Index inversés (années 1990) Lucène, Elasticsearch, Algolia. Ceux-ci divisent le texte en jetons (["blue", "dress"]), suppriment les mots vides (""le”, “a”) et effectuent un radicaling (""running" -> "run"). Ils notent ensuite les documents en utilisant TF-IDF (Term Frequency-Inverse Document Frequency) ou BM25. Cela a permis une correspondance floue et une tolérance aux fautes de frappe. Mais cela a quand même échoué sur le sens. “Manteau chaud” ne correspond pas à “Veste d’hiver” dans un moteur de mots clés, à moins d’être synonyme manuellement.

Génération 3 : Recherche sémantique (années 2020) Vecteurs. On ne regarde plus les mots. Nous examinons les Concepts. Le mot « King » n’est plus une chaîne de 4 caractères (« K-i-n-g »). C’est un point dans un espace de 1 536 dimensions. Et devinez quoi ? Le point pour “Queen” est juste à côté. En utilisant la similarité cosinus, nous pouvons trouver des documents conceptuellement similaires, même s’ils ne partagent aucun mot-clé.

Pourquoi Maison Code en parle

Nous ne construisons pas de barres de recherche ; nous construisons des Moteurs de découverte. Pour nos clients disposant de catalogues > 1 000 SKU, la recherche standard est un tueur de conversion. Nous avons récemment mis en place une recherche de vecteurs hybrides pour une marque de meubles de luxe : * Défi : les utilisateurs ont recherché “Vibes” (“Esthétique confortable pour un coin lecture”), et non des mots clés (“Fauteuil en velours”).

  • Action : Nous avons vectorisé l’intégralité de leur catalogue à l’aide d’OpenAI Embeddings.
  • Résultat : le taux de rebond sur les pages de recherche a diminué de 35 %. Nous pensons qu’en 2026, la recherche devra être sémantique et non syntaxique.

Comprendre les intégrations (les mathématiques)

Comment un ordinateur comprend-il le « sens » ? Il convertit le texte en nombres. Ce processus est appelé Intégration.

Imaginez un simple graphique 2D de tous les concepts.

  • Axe X : Royalité (à quel point est-ce royal ?)
  • Axe Y : sexe (masculin ou féminin)

Cartographions maintenant quelques mots :

  • “King” : [0.9, 0.9] (Très Royal, Masculin)
  • “Reine” : [0.9, 0.1] (Très Royal, Féminin)
  • “Homme” : [0.1, 0.9] (Pas Royal, Masculin)
  • “Femme” : [0.1, 0.1] (Pas Royal, Féminin)

Voici la magie. Vous pouvez faire des mathématiques avec ces mots. Roi - Homme + Femme = ?

  • [0,9, 0,9] - [0,1, 0,9] + [0,1, 0,1]
  • = [0,9, 0,1]
  • = Reine.

C’est littéralement ainsi que « pensent » les LLM. Ils comprennent les relations via l’arithmétique vectorielle. Les modèles modernes comme « text-embedding-3-small » d’OpenAI utilisent 1 536 dimensions (pas seulement 2) pour capturer des nuances telles que le sentiment, la couleur, l’urgence, la formalité et des centaines d’autres caractéristiques linguistiques que nous ne pouvons même pas nommer.

La pile de bases de données vectorielles

Vous ne pouvez pas stocker efficacement ces vecteurs dans une base de données MySQL normale. Les bases de données standards sont optimisées pour l’indexation B-Tree (tri alphanumérique). Les bases de données de vecteurs de recherche sont optimisées pour la recherche Voisin le plus proche (ANN) approximatif. Scanner 1 million de vecteurs pour trouver le plus proche prendrait quelques secondes (balayage linéaire). Les bases de données vectorielles utilisent des graphiques HNSW (Hierarchical Navigable Small World) pour le faire en millisecondes.

Meilleurs joueurs :

  1. Pinecone : géré, cloud natif. La norme de l’industrie. Facile à démarrer.
  2. Weaviate : Open-source, modulaire. Permet de stocker des objets à côté de vecteurs. Idéal pour l’auto-hébergement.
  3. Milvus : À grande échelle, Zilliz. Conçu pour des milliards de vecteurs.
  4. pgvector : Un plugin pour PostgreSQL. Idéal si vous souhaitez tout conserver au même endroit (Supabase le prend en charge).

Matrice de comparaison

FonctionnalitéPomme de pinpgvecteurTisser
TapezSaaS géréExtension PostgresOSS / Géré
LatenceUltra faibleMoyenFaible
ComplexitéFaibleFaibleMoyen
Coût€€€€ (Gratuit si auto-hébergé)€€
Filtrage des métadonnéesExcellentBon (SQL)Excellent

Implémentation : créer un moteur de recherche sémantique

Voici comment créer une « Recherche par signification » à l’aide de Node.js et Pinecone.

importer { Pinecone } depuis '@pinecone-database/pinecone' ;
importer OpenAI depuis « openai » ;

// Initialiser les clients
const pinecone = new Pinecone({ apiKey: process.env.PINECONE_KEY });
const openai = new OpenAI({ apiKey : process.env.OPENAI_KEY });

const index = pinecone.index('maison-products');

fonction asynchrone searchProducts (userQuery : string) {
  console.log(`Recherche : ${userQuery}`);

  // 1. Convertir la requête utilisateur en vecteur
  const intégration = attendre openai.embeddings.create({
    modèle : "text-embedding-3-small",
    entrée : requête utilisateur,
  });
  const vecteur = embedding.data[0].embedding;

  // 2. Requête Vector DB pour les voisins les plus proches
  résultats const = attendre index.query ({
    vecteur : vecteur,
    topK : 5, // Obtenez les 5 meilleurs matchs
    includeMetadata : vrai,
    // Facultatif : Filtrer par catégorie
    filtre : {
      prix : { $lt : 200 } // Uniquement les articles bon marché
    }
  });

  // 3. Afficher les résultats
  résultats.matches.forEach(match => {
    console.log(`Trouvé : ${match.metadata.title} (Score : ${match.score})`);
  });
}

// Utilisation
searchProducts("Quelque chose d'élégant pour un mariage d'été à moins de 200 $");

Que se passe-t-il :

  1. OpenAI transforme « Quelque chose d’élégant… » en vecteur.
  2. Pinecone calcule la distance entre ce vecteur et chaque produit de votre catalogue.
  3. Il trouve « Robe fleurie en soie » et « Costume en lin ».
  4. Même si le mot « Mariage » n’apparaît jamais dans la description du produit ! Le modèle d’intégration sait que “Soie” et “Lin” sont associés aux “Mariages d’été”.

Le défi : la recherche hybride

La recherche de vecteurs est magique, mais elle n’est pas parfaite. Il a parfois des hallucinations ou manque des correspondances évidentes de mots clés.

  • Requête : “ID produit 1234”.
  • Recherche vectorielle : peut renvoyer « ID produit 1235 » car les nombres sont mathématiquement proches dans l’espace vectoriel. Il traite l’ID comme des fonctionnalités distinctes.
  • Utilisateur : “J’ai tapé l’identifiant exact, pourquoi m’avez-vous donné le mauvais ?”

Solution : recherche hybride. Vous combinez la recherche par mot-clé (BM25) avec la recherche vectorielle (dense).

  • Score du mot clé : 1,0 (correspondance exacte)
  • Score vectoriel : 0,2 (correspondance faible)
  • Somme pondérée : la correspondance des mots clés l’emporte.

Pinecone et Weaviate prennent désormais en charge la recherche hybride prête à l’emploi (vecteurs “Sparse-Dense”). Vous transmettez à la requête le vecteur dense (intégration) et le vecteur clairsemé (mots-clés). Il s’agit du Gold Standard pour la recherche de commerce électronique.

RAG : Génération augmentée de récupération

Les bases de données vectorielles constituent également l’épine dorsale de l’Enterprise AI (RAG). (Voir LLM Fine-Tuning). Lorsque vous posez à ChatGPT une question sur vos documents, il utilise strictement une étape de recherche vectorielle en coulisses pour trouver le « numéro de page » avant de répondre. Sans bases de données vectorielles, l’IA d’entreprise est impossible. Vous ne pouvez pas insérer 10 000 pages dans une invite. Vous alimentez les 3 pages les plus pertinentes. La recherche vectorielle trouve ces 3 pages.

Le point de vue du sceptique : quand NE PAS utiliser de vecteurs

Les vecteurs sont actuellement à la mode, mais ils sont coûteux et complexes. N’utilisez PAS la recherche de vecteurs si :

  1. Vous avez < 100 éléments : utilisez simplement Array.filter().
  2. Vos utilisateurs recherchent par SKU exact : La recherche de vecteurs est terrible pour les codes exacts.
  3. Votre budget est de 0 € : les intégrations coûtent de l’argent (API OpenAI). Les bases de données vectorielles coûtent de l’argent. Algolia est souvent moins cher et « assez bon ».

##FAQ

Q : Puis-je utiliser des vecteurs pour la recherche d’images ? R : Oui ! Des modèles tels que CLIP (Contrastive Language-Image Pre-Training) peuvent intégrer des images dans le même espace vectoriel que le texte. Vous pouvez rechercher « Chien » et trouver une photo d’un chien.

Q : À quelle fréquence dois-je mettre à jour l’index ? R : En temps réel. Si un produit est en rupture de stock, vous devez immédiatement mettre à jour les métadonnées dans Pinecone afin que la recherche ne renvoie pas d’articles OOS.

10. Quantification : réduire les coûts

Les vecteurs sont lourds (Float32). 1 million de vecteurs * 1536 dims * 4 octets = 6 Go de RAM. C’est cher. Quantisation compresse les vecteurs en Int8 ou Binaire. Nous perdons un peu en précision (la PRÉCISION chute de 1 %), mais la taille chute de 4x à 32x. Pour un catalogue de 100M de produits, la Quantification est obligatoire. Pinecone gère cela automatiquement.

11. Re-classement : La Deuxième Passe

La recherche de vecteurs trouve des éléments « conceptuellement similaires ». Mais il ne connaît pas les « règles commerciales ». Il peut renvoyer un article en rupture de stock car il s’agit d’une correspondance sémantique parfaite. Nous utilisons un Re-ranker (Cross-Encoder Model comme Cohere).

  1. Récupérer : obtenez les 100 meilleurs candidats de Vector DB (rapide).
  2. Reclassement : faites-les passer par un modèle lourd qui vérifie l’état du stock, la marge et le chevauchement exact des mots clés.
  3. Retour : Top 10 à l’utilisateur. Cette « récupération en deux étapes » offre le meilleur équilibre entre vitesse et précision.

13. Sous le capot : l’algorithme HNSW

Comment Pinecone recherche-t-il 1 milliard de vecteurs en 10 ms ? Il utilise des graphiques Hiérarchique Navigable Small World. Imaginez une carte multicouche.

  • Couche supérieure : autoroutes à grande vitesse reliant des villes éloignées.
  • Couche inférieure : rues locales. La requête commence en haut, effectue un zoom sur le quartier général du vecteur, puis descend vers les rues pour trouver la maison exacte. C’est la complexité €O(log(N))€. Un balayage linéaire est €O(N)€. Il s’agit de la percée informatique qui a rendu Vector Search viable en production.

14. Le coût des intégrations

Les vecteurs n’apparaissent pas de nulle part. Vous payez OpenAI pour les générer. Le prix est bon marché : 0,00013 € / 1 000 jetons. Intégrer toute la série Harry Potter (1 million de jetons) coûte 0,13 €. Cependant, pour un site de contenu généré par l’utilisateur (des millions de commentaires par jour), cela s’additionne. Optimisation : utilisez des modèles open source (Hugging Face) exécutés sur votre propre GPU/CPU (ONNX Runtime) pour générer des intégrations gratuitement. La qualité est de 95 % d’OpenAI, le coût est de 0.

15. Conclusion

Si la recherche de votre site renvoie « Aucun résultat trouvé », vous laissez de l’argent sur la table. Les utilisateurs ne connaissent pas votre terminologie exacte. Ils parlent avec intention (« manteau chaud », « cadeau pas cher », « quelque chose pour papa »). La recherche de vecteurs comble le fossé entre Intention humaine et Inventaire de base de données. Il s’agit de la mise à niveau de “Data Retrieval” vers “Knowledge Retrieval”.



Aucun résultat trouvé ?

Nous mettons en œuvre des écosystèmes de recherche de vecteurs hybrides pour garantir que vos clients trouvent toujours ce dont ils ont besoin.

Embauchez nos architectes.