Un bon point de départ avec les embeddings pour les développeurs d’apps curieux de l’IA
(bawolf.substack.com)Guide d’utilisation des embeddings pour les développeurs d’apps
- Les embeddings vectoriels sont efficaces pour mesurer la similarité entre différents types d’entrées, ce qui les rend adaptés aux fonctions de recherche et de recommandation. Ils fonctionnent aussi bien dans d’autres langues comme le français ou le japonais.
- Pgvector est une extension Postgres permettant de stocker et d’interroger des embeddings. Elle est puissante car elle permet de combiner la logique SQL et les opérations sur embeddings sans ajouter de nouveau service.
- Contrairement aux LLM, l’usage des embeddings donne une sensation proche du code déterministe classique.
Développement d’un projet de recherche et de recommandation d’icônes
- Après la mise en place de Pgvector, une stratégie est définie pour encoder les données d’icônes sous forme de vecteurs d’embedding.
- Utilisation du modèle
text-embedding-3-smalld’OpenAI. - Mesure de la similarité entre la requête de recherche et l’embedding de chaque icône avec la similarité cosinus.
- Combinaison de la recherche par embeddings avec de la logique métier, comme le filtrage par jeu d’icônes.
- Présentation d’un exemple d’algorithme de classement utilisant les données de clics sur les icônes pour une requête donnée.
- Utilisation de la comparaison d’embeddings pour recommander des icônes similaires à l’icône sélectionnée.
Résumé de l’approche d’implémentation
- Choix de pgvector/Postgres comme base de données vectorielle. D’autres options existent, comme MongoDB.
- Développement en Typescript avec
drizzle-orm. Il existe aussi de nombreuses bibliothèques pour d’autres langages/frameworks. - L’app est hébergée sur Neon. Il est aussi possible d’utiliser des services d’hébergement de bases de données managés comme fly.io ou Supabase.
- Utilisation du modèle d’embedding
text-embedding-3-smalld’OpenAI. D’autres modèles peuvent être choisis via le leaderboard de Huggingface. - Embedding des propriétés des icônes les plus pertinentes pour la recherche sous forme de paires clé-valeur.
- Utilisation de la similarité cosinus comme fonction de distance. Pgvector prend aussi en charge la distance l2 et le produit scalaire.
- Limitation des résultats de recherche aux 50 premiers. En cas d’utilisation d’une plage de distance, il est recommandé de la définir largement et de l’utiliser avec
limit.
L’avis de GN⁺
- Pour la plupart des projets, il semble suffisant d’ajouter des fonctionnalités vectorielles à une base existante avec quelque chose comme pgvector. Une base vectorielle séparée ne paraît nécessaire que pour des services à grande échelle.
- La possibilité de combiner naturellement la recherche par embeddings avec la logique métier est un avantage majeur. Cela permet de profiter pleinement de la puissance de SQL.
- L’idée d’intégrer les données de feedback utilisateur dans l’algorithme de classement est excellente. Cela semble permettre d’améliorer continuellement la précision de la recherche.
- Par rapport aux LLM, les services fondés sur les embeddings ont un fonctionnement plus clair et sont plus faciles à déboguer, ce qui semble les rendre bien plus simples à appliquer dans un vrai service.
- De nombreux modèles d’embedding open source sont disponibles, ce qui permet d’utiliser facilement des embeddings de haute qualité même lorsqu’il est difficile de développer son propre modèle.
1 commentaires
Avis Hacker News
Résumé des commentaires Hacker News
Facilité de l’embedding de documents et de la recherche de similarité avec les modèles RAG
sentence-transformersetfaiss, il est facile d’implémenter l’embedding de documents et la recherche de similaritéComprendre les concepts de base des embeddings
Manque d’explications détaillées sur le processus de génération des embeddings
They're a bit of a black boxà propos du processus de génération des embeddings, sans entrer dans les détailsLa difficulté de traiter les homonymes
Utiliser des embeddings sans vector store
@de Numpy pour obtenir le produit scalaire entre un vecteur de requête normalisé et une matrice d’enregistrementsComment exécuter la logique d’embedding en local
Potentiel des embeddings pour la rédaction de documentation technique
Méthodes de stockage et d’utilisation des embeddings
Manque de contexte pour les développeurs débutants en IA