Qu'est-ce que les embeddings de code
La représentation vectorielle du code source est nécessaire pour de nombreuses tâches pratiques : de la recherche de fragments similaires au regroupement automatique de fonctions selon leur sens. Le programme se transforme en un ensemble de nombres que les algorithmes d'apprentissage automatique peuvent traiter. La qualité du vecteur dépend alors de la capacité du modèle à comprendre la sémantique du code, et pas seulement sa syntaxe.
En quoi c'est complexe
Les méthodes classiques exigent généralement un apprentissage dédié pour chaque tâche, ou au minimum un réglage fin sur des données de domaine. C'est coûteux et pas toujours justifié. Les approches fondées sur les grands modèles de langage (LLM) semblent plus universelles, mais elles ont leur inconvénient : les réponses des modèles contiennent souvent des informations superflues ou erronées, et cette « impureté » se retrouve dans les vecteurs.
L'idée de LSem2Vec
Les auteurs de l'étude ont proposé une approche en deux étapes au nom évocateur : LSem2Vec — LLM-extracted code Semantics to Vector embedding. Au lieu de tenter d'entraîner un autre modèle lourd, ils combinent des composants déjà prêts : le LLM extrait le sens du code, et un modèle d'embeddings de phrases transforme la description en vecteur. Aucun réglage fin pour une tâche spécifique n'est requis.

Décomposons le processus étape par étape. Dans un premier temps, le LLM reçoit le code et doit formuler ce qu'il fait précisément. Ce n'est pas une reformulation mécanique de la source, mais une extraction de l'essentiel : le modèle écarte les détails secondaires pour que la description ne contienne que ce qui compte pour le sens. Au passage, cette approche élimine aussi les éventuelles « hallucinations » des grands modèles — ces informations erronées qui apparaissent le plus souvent lorsqu'on tente d'encoder le code directement.
La deuxième étape est triviale aux standards de l'apprentissage automatique : la description obtenue du LLM est transmise à un modèle d'embeddings de phrases. Ce type de modèle est déjà entraîné à convertir le langage naturel en vecteurs pertinents, il n'est donc pas nécessaire de l'adapter à la syntaxe des langages de programmation.
Pourquoi cela fonctionne
La force de LSem2Vec réside dans une séparation claire des rôles. Un modèle est responsable de la compréhension de la logique, l'autre de la traduction du texte en vecteur. Chacun résout sa tâche de manière optimale, et ensemble ils produisent un vecteur fondé sur la sémantique, et non sur des caractéristiques formelles du code. L'absence d'étape d'apprentissage rend l'approche économique et facile à reproduire.
Comment cela a été testé et quels sont les résultats
Les expériences ont été menées sur trois ensembles de données composés dans différents langages de programmation. Les auteurs ont délibérément fait varier à la fois les LLM et les modèles d'embeddings afin de vérifier que le résultat ne dépend pas d'une paire d'outils particulière.

Dans toutes les configurations, LSem2Vec a obtenu de meilleurs résultats que cinq méthodes non supervisées modernes, généralement conçues pour des conditions spécifiques et nécessitant un réglage.
Statut des travaux
L'article a été mis en ligne sur arXiv en septembre 2024, la dernière version disponible étant la v5 d'août 2026. Selon les informations des auteurs, les travaux ont été acceptés par la revue Frontiers of Computer Science. L'approche dispose donc non seulement d'une page de prépublication, mais aussi d'une publication évaluée par les pairs. L'original est disponible via le DOI : 10.1007/s11704-026-61288-0.
Conclusion
Le principal enseignement de LSem2Vec est que les problèmes complexes ne nécessitent pas toujours des solutions complexes. Il suffit d'appliquer séquentiellement un LLM pour extraire le sens et un modèle d'embeddings de phrases pour créer le vecteur. C'est rapide, sans réglage fin dédié, et cela donne des résultats compétitifs.



