Winnie l'ourson en 768 dimensions : recherche sémantique pour les animaux Codex sur YDB
Яндекс
Un développeur a construit une recherche sémantique pour le catalogue Codex Pets en utilisant des plongements vectoriels stockés dans YDB. Le système combine des classements lexicaux, sémantiques textuels et sémantiques visuels. Les tests montrent une amélioration des métriques NDCG et Recall par rapport à la recherche lexicale seule.
Le catalogue Codex Pets contient 153 animaux animés approuvés qui accompagnent les agents IA. À mesure que le catalogue s'agrandissait, la recherche par balises est devenue impraticable, ne parvenant pas à trouver des animaux décrits par leur apparence plutôt que par des balises exactes. L'auteur a mis en œuvre une recherche sémantique : les champs textuels (nom, description, balises) sont encodés en vecteurs de 768 dimensions, et un modèle multimodal génère des légendes pour quatre images d'animation sélectionnées, également vectorisées. YDB stocke les vecteurs et calcule la similarité cosinus via Knn::CosineSimilarity. Quatre nouvelles tables ont été ajoutées pour gérer les plongements (embeddings), les légendes, les recommandations et le versionnage. La recherche fusionne trois listes classées à l'aide de la fusion pondérée de rangs réciproques (Weighted Reciprocal Rank Fusion), avec des poids lexicaux et textuels de 1 et un poids visuel ajusté. La branche visuelle peut échouer indépendamment, revenant aux résultats lexicaux. Les tests ont montré que la recherche sémantique améliore le NDCG@5 de 0,539 à 0,724 et le Recall@5 de 0,528 à 0,743 sur l'ensemble complet des 14 requêtes.
Source: Habr — хаб ML —
original
