概述
jina-code-embeddings-0.5b 是一个 494M 参数的代码向量模型,将编程代码和自然语言查询映射到共享的 896 维语义空间。它支持 32K token 上下文窗口,可实现整个函数和多文件检索,并使用 Matryoshka 表示学习实现灵活维度(64–896)。它在同尺寸中达到最先进的代码检索性能,超过参数量为其 3 倍的模型。
方法
该模型构建在自然语言和代码语料上预训练的自回归 Transformer 骨干之上。与传统向量模型使用的双向池化不同,它通过 Last-Token-Pooling 从序列的最终位置提取向量。这是一个关键的架构洞见:自回归模型的因果注意力自然地关注完整输入上下文,而代码生成预训练目标产生丰富的语义表示,能很好地迁移到检索。训练采用两阶段方案:(1) 在大规模代码-文本对(自然语言描述与代码实现配对)上进行对比预训练,(2) 在精选的代码检索数据集上以困难负样本挖掘进行监督微调。32K 上下文长度通过调整基础频率的旋转位置编码实现。
性能
该模型在标准代码检索基准上取得 78.41% 的总平均和 78.72% 的 MTEB Code 平均。值得注意的分数:HumanEval 96.77%、MBPP 89.01%、WikiSQL 98.31%、CodeChefXLang 99.70%、CodeTransOceanContest(代码到代码)90.37%、COIR-CodeSearchNet(NL2Code)85.73%、Doc2Code 95.98%、StackOverflowQA 91.04%。在代码特定任务上,它超过 Qwen3-Embedding-0.6B 以及更大的模型,包括 jina-embeddings-v4(74.11%)和 gemini-embedding-001(77.38%)。在 494M 参数下,它超过多个尺寸为其 3–5 倍的模型,证明自回归骨干方法每参数提供高语义质量。
最佳实践
始终使用适当的任务特定指令前缀:自然语言到代码搜索用 nl2code,代码到代码相似度用 code2code,代码到自然语言用 code2nl,技术问答用 techqa,代码补全用 code2completion。对于大型代码库,在函数或类边界处实现分块,以保持在 32K token 限制内。Matryoshka 截断到 128 或 256 维适合高吞吐索引;重排序顶级候选时使用完整的 896 维。使用余弦相似度比较向量。最佳批量大小为 512,序列长度 512 token。该模型针对 Python、JavaScript、Java、PHP、Go 和 Ruby 优化,但支持 30 多种语言。对于代码的 RAG 流水线,第二阶段搭配 jina-reranker-v3.5,以最大化前 50 候选的精度。



