Graphique d'E/S

Code

jina-code-embeddings

Tâche

Vecteur

Frontière de Pareto
30M100M300M1B3.0B10B40506070bge-base-en-v1.5bge-m3bge-small-en-v1.5CodeRankEmbedCodeSage-baseCodeSage-largeCodeSage-large-v2CodeSage-smallCodeXEmbed-7BContrievere5-base-v2e5-mistral-7b-instructe5-small-v2granite-embedding-engli…granite-embedding-small…gte-base-en-v1.5gte-modernbert-basegte-Qwen2-1.5B-instructjina-embeddings-v3jina-embeddings-v4modernbert-embed-baseNV-Embed-v2SFR-Embedding-2_RSFR-Embedding-Code-2B_RSFR-Embedding-Code-400M…snowflake-arctic-embed-…UniXcoderjina-code-embeddings-0.…Paramètres (log)nDCG@10
Ce modèle
Sur la frontière
Jina AI
Autres
CoIR
73.94
Paramètres
494M
Rang par score
1 / 31
Frontière de Pareto
Sur elle
Distribution des valeurs
AUC 0.8538
Corpus
Paires de traduction
Recherche documentaire
Code
Tâche
nl2code.passage
nl2code.query
nl2code.query → nl2code.passage
qa.passage
qa.query
qa.query → qa.passage
0.7330.000.200.400.600.80
Liées18.5%
Négatif difficile2.3%
Non liées1.1%
Seuils recommandés
FPR 0.1 · 0.544
FPR 0.01 · 0.733
FPR 0.001 · 0.813
FPR 0.0001 · 0.889
équilibré · 0.427
AUC
0.8538
Plafond de bruit
0.809
Décrochage du rappel
0.160
Paires mesurées
119 / 11k
Composantes des vecteurs
-0.210.010.23
σ 0.0334 · 213k valeurs
Géométrie des embeddings
0896
Moyenne par dimension, survolez pour la plage
Plancher de bruit
0.329
Dim. effectives
55 / 896
Choisissez les modèles à comparer
Publications (1)

Aperçu

jina-code-embeddings-0.5b est un modèle d'embedding de code de 494M paramètres qui mappe le code de programmation et les requêtes en langage naturel dans un espace sémantique partagé de 896 dimensions. Il prend en charge des fenêtres de contexte de 32K tokens, permettant la recherche de fonctions entières et de multi-fichiers, et utilise l'apprentissage de représentation Matryoshka pour une dimensionalité flexible (64–896). Il atteint un état de l'art en recherche de code pour sa taille, surpassant des modèles avec 3× plus de paramètres.

Méthodes

Le modèle repose sur un backbone transformeur autoregressif pré-entraîné sur des corpus de langage naturel et de code. Au lieu du pooling bidirectionnel utilisé par les modèles d'embedding traditionnels, il extrait les embeddings via Last-Token-Pooling depuis la position finale de la séquence. C'est un point clé de l'architecture : l'attention causale du modèle autoregressif porte naturellement attention sur l'intégralité du contexte d'entrée, et l'objectif de pré-entraînement de génération de code produit des représentations sémantiques riches qui se transfèrent bien en recherche. L'entraînement utilise une recette en deux étapes : (1) pré-entraînement contrastif sur de grandes paires de code et de texte (descriptions en langage naturel appairées avec des implémentations de code) et (2) ajustement fin supervisé sur des jeux de données de recherche de code curés, avec minage de négatifs difficiles. La longueur de contexte de 32K est rendue possible par des embeddings de position rotatifs avec une fréquence de base ajustée.

Performance

Le modèle atteint une moyenne globale de 78,41 % et une moyenne MTEB Code de 78,72 % sur les benchmarks standards de recherche de code. Scores notables : 96,77 % sur HumanEval, 89,01 % sur MBPP, 98,31 % sur WikiSQL, 99,70 % sur CodeChefXLang, 90,37 % sur CodeTransOceanContest (code-vers-code), 85,73 % sur COIR-CodeSearchNet (NL2Code), 95,98 % sur Doc2Code et 91,04 % sur StackOverflowQA. Il surpasse Qwen3-Embedding-0,6B et des modèles plus grands, dont jina-embeddings-v4 (74,11 %) et gemini-embedding-001 (77,38 %), sur les tâches spécifiques au code. Avec 494M paramètres, il surpasse plusieurs modèles de 3 à 5 fois sa taille, démontrant que l'approche backbone autoregressif offre une haute qualité sémantique par paramètre.

Conseils

Utilisez toujours les préfixes d'instruction spécifiques à la tâche appropriés : nl2code pour la recherche langage-naturel-vers-code, code2code pour la similarité code-vers-code, code2nl pour le code-vers-langage-naturel, techqa pour les questions-réponses techniques et code2completion pour la complétion de code. Pour les grandes bases de code, implémentez le découpage en blocs (chunking) aux limites de fonction ou de classe pour rester dans la limite de 32K tokens. La troncature Matryoshka à 128 ou 256 dimensions convient à l'indexation à haut débit ; utilisez les 896 dimensions complètes pour le re-ranking des meilleurs candidats. Utilisez la similarité cosinus pour comparer les embeddings. La taille de lot optimale est 512, la longueur de séquence 512 tokens. Le modèle est optimisé pour Python, JavaScript, Java, PHP, Go et Ruby, mais prend en charge plus de 30 langues. Pour les pipelines RAG sur le code, associez jina-reranker-v3.5 comme seconde étape pour maximiser la précision sur les 50 meilleurs candidats.

Blogs qui mentionnent ce modèle