代码检索新利器:Granite-Embedding-97M-Multilingual-R2如何支持Python、Java等9种编程语言?
代码检索新利器:Granite-Embedding-97M-Multilingual-R2如何支持Python、Java等9种编程语言?
Granite-Embedding-97M-Multilingual-R2是一款来自Granite Embeddings系列的97M参数密集型嵌入模型,旨在以最小的计算成本提供高质量的多语言文本嵌入。它能生成384维向量,上下文长度可达32,768个令牌,支持200多种语言,并对52种语言和编程语言提供增强支持,是代码检索的理想选择。
🚀 模型亮点:为何选择Granite-Embedding-97M-Multilingual-R2?
卓越的检索性能
Granite Embedding 97M Multilingual R2在Multilingual MTEB Retrieval(18项任务)中获得59.6分,是所有1亿参数以下开源多语言嵌入模型中的最高检索分数,比同尺寸类别中的次优模型(multilingual-e5-small,50.9分)高出8.7分,同时比全尺寸的granite-embedding-311m-multilingual-r2小约3倍。该多语言R2模型在多语言信息检索基准、代码检索、长文档搜索、对话多轮和推理检索任务中均表现出强大性能。
专为代码检索优化
该模型的代码检索训练集涵盖了Python、Go、Java、JavaScript、PHP、Ruby、SQL、C、C++等9种编程语言,支持跨语言代码检索,能满足不同编程语言代码检索的需求。
架构与训练优势
- 架构升级:ModernBERT取代XLM-RoBERTa,带来交替注意力、SiLU激活和旋转位置嵌入。
- 紧凑的多语言词汇表:专门训练的180K令牌分词器在减少模型大小的同时保持广泛的多语言覆盖。
- 模型剪枝:从全尺寸多语言模型进行层剪枝(22→12层),然后进行持续蒸馏训练以恢复质量。
- 训练进展:来自多个教师的知识蒸馏和对比微调比上一代granite-embedding-107m-multilingual平均增益14.5点。
💡 适用场景
- 选择granite-embedding-97m-multilingual-r2:适用于对延迟敏感的生产工作负载、边缘部署,或需要最大编码吞吐量并具有竞争力的多语言质量的场景。该模型仅有97M参数,比全尺寸的granite-embedding-311m-multilingual-r2小3倍,同时保持强大的跨语言检索性能。
- 选择[granite-embedding-311m-multilingual-r2]:当准确性是首要优先级,并且可以承受311M参数模型的吞吐量时。
- 选择[granite-embedding-english-r2]或[granite-embedding-small-english-r2]:当数据主要是英语时,这些特定于英语的模型为单语英语用例提供优化性能。
📝 快速上手
要使用Granite-Embedding-97M-Multilingual-R2进行代码检索,可按照以下步骤:
首先,克隆仓库:
git clone https://gitcode.com/hf_mirrors/ibm-granite/granite-embedding-97m-multilingual-r2
然后,在代码中使用该模型:
model_path = "ibm-granite/granite-embedding-97m-multilingual-r2"
# 加载模型
model = SentenceTransformer(model_path)
# 编码查询和代码片段
query_embeddings = model.encode(input_queries)
passage_embeddings = model.encode(input_passages)
# 计算余弦相似度
print(util.cos_sim(query_embeddings, passage_embeddings))
通过以上步骤,即可利用Granite-Embedding-97M-Multilingual-R2实现对Python、Java等9种编程语言的高效代码检索。
🌐 语言支持
该模型的基础编码器在200多种语言的文本上进行了预训练,可提供任何这些语言的通用嵌入。此外,对52种语言和编程语言提供增强支持,这些语言和编程语言接收显式的检索对和跨语言训练数据,在检索任务上产生更高质量的嵌入。
更多推荐



所有评论(0)