I/O 图
选择要比较的模型
论文 (1)
概述
jina-code-embeddings-0.5b 是一个包含 4.94 亿个参数的代码向量模型,旨在从自然语言查询、技术问答中检索代码,并识别跨语言的相似代码。该模型基于 Qwen2.5-Coder-0.5B 主干网络构建,通过最后一个词法单元池化生成向量,并解决了传统代码向量模型依赖于注释和文档字符串等稀缺对齐数据的根本局限性。该模型利用大模型训练中使用的大量未对齐代码和文档,尽管规模较小,但仍实现了最佳性能。它支持五种具有特定指令前缀的任务类别:NL2Code、TechQA、Code2Code、Code2NL 和 Code2Completion。该模型实现了可截断向量的 Matryoshka 表示学习,从而允许灵活地权衡精度和资源。
方法
该模型采用 InfoNCE 损失函数进行对比训练,温度 τ=0.05,批次大小 512,序列长度 512。训练数据包括 MTEB 代码任务、CoSQA+、经过调整的公共数据集以及用于罕见场景的 GPT-4o 合成数据。特定于任务的指令前缀会根据查询和文档对模型进行不同的条件调整 - 例如,NL2Code 使用“根据以下查询查找最相关的代码片段:”来处理查询。在四块 A100 GPU 上进行 1500 步训练耗时 8.3 小时。在消融研究中,最后标记池化的表现优于平均注意力池化和潜在注意力池化。对比方法将查询-文档对视为正例,将交叉组合视为每个批次中的负例。
性能
在各项基准测试中,其总体平均得分达到 78.41%,MTEB 代码平均得分达到 78.72%。值得关注的得分包括 HumanEval 的 96.77%、MBPP 的 89.01%、WikiSQL 的 98.31% 和 CodeChefXLang 的 99.70%。其性能优于类似规模的 Qwen3-Embedding-0.6B 以及更大规模的模型,例如 jina-embeddings-v4 (74.11%) 和 gemini-embedding-001 (77.38%)。在代码到代码检索方面表现出色,在 CodeTransOceanContest 上得分为 90.37%。NL2Code 性能强劲,在 COIR-CodeSearchNet 上得分为 85.73%,在 Doc2Code 上得分为 95.98%。其技术问答能力在 StackOverflowQA 上达到了 91.04%。
最佳实践
始终为查询和文档使用适当的特定于任务的指令前缀。利用 Matryoshka 向量来平衡质量和资源——从全维度开始,并根据需要截断。最佳批量大小为 512,序列长度为 512 个标记。使用余弦相似度进行向量比较。鉴于 CodeChefXLang 的性能高达 99.70%,非常适合多语言代码搜索。考虑采用两阶段检索,先从该模型中获取初始候选集,然后进行重新排序。由于其紧凑的尺寸,非常适合边缘部署和实时应用。缓存频繁访问的向量,并为大型代码库实现分层索引。
提及此模型的博客





