Обзор
jina-code-embeddings-0.5b — эмбеддинг-модель для кода на 494M параметров, которая отображает программный код и запросы на естественном языке в общее 896-мерное семантическое пространство. Поддерживает окна контекста в 32K токенов, что позволяет искать целые функции и несколько файлов, и использует обучение представлений Matryoshka для гибкой размерности (64–896). Достигает передовых результатов в поиске кода для своего размера, превосходя модели с 3-кратным числом параметров.
Методы
Модель построена на autoregressive трансформер-бэкбоне, предобученном на корпусах естественного языка и кода. Вместо двунаправленного пулинга, используемого традиционными эмбеддинг-моделями, она извлекает эмбеддинги через Last-Token-Pooling с последней позиции последовательности. Это ключевой архитектурный инсайт: каузальное внимание autoregressive модели естественно обращено на весь контекст входа, а цель предобучения генерации кода производит богатые семантические представления, хорошо переносящиеся на поиск. Обучение использует двухстадийный рецепт: (1) контрастивное предобучение на больших парах «код-текст» (описания на естественном языке, спаренные с реализациями кода) и (2) супервизированное дообучение на отобранных датасетах поиска кода с добычей трудных негативов. Длина контекста 32K обеспечивается rotary position embeddings с подогнанной базовой частотой.
Производительность
Модель достигает среднего значения 78,41% в целом и 78,72% в среднем MTEB Code на стандартных бенчмарках поиска кода. Заметные результаты: 96,77% на HumanEval, 89,01% на MBPP, 98,31% на WikiSQL, 99,70% на CodeChefXLang, 90,37% на CodeTransOceanContest (код в код), 85,73% на COIR-CodeSearchNet (NL2Code), 95,98% на Doc2Code и 91,04% на StackOverflowQA. Она превосходит Qwen3-Embedding-0,6B и более крупные модели, включая jina-embeddings-v4 (74,11%) и gemini-embedding-001 (77,38%), на задачах, специфичных для кода. При 494M параметров модель превосходит несколько моделей размером в 3–5 раз больше, демонстрируя, что подход с autoregressive бэкбоном даёт высокое семантическое качество на параметр.
Руководство
Всегда используйте соответствующие специфичные для задачи инструктивные префиксы: nl2code для поиска «естественный язык в код», code2code для сходства «код в код», code2nl для «код в естественный язык», techqa для технических вопросов и ответов и code2completion для автодополнения кода. Для больших кодовых баз реализуйте чанкинг на границах функций или классов, чтобы оставаться в пределах лимита 32K токенов. Обрезка Matryoshka до 128 или 256 измерений подходит для высокопроизводительной индексации; для re-ranking лучших кандидатов используйте все 896 измерений. Используйте косинусное сходство для сравнения эмбеддингов. Оптимальный размер батча — 512, длина последовательности 512 токенов. Модель оптимизирована для Python, JavaScript, Java, PHP, Go и Ruby, но поддерживает 30+ языков. Для RAG-конвейеров по коду сочетайте jina-reranker-v3.5 как второй этап, чтобы максимизировать точность на 50 лучших кандидатах.



