量化方式:Nomic
流水线标签:句子相似度
基础模型:nomic-ai/nomic-embed-code
基础模型关系:量化版本
标签:
- 句子相似度
- 特征提取
许可证:apache-2.0
Nomic代码嵌入模型的Llama.cpp量化版本:顶尖代码检索工具
博客 | 技术报告 | AWS SageMaker | Atlas嵌入与非结构化数据分析平台
使用llama.cpp提交版本11683f579进行量化。
原始模型:nomic-embed-code
使用方法
该模型可通过llama.cpp服务器及其他支持llama.cpp嵌入模型的软件使用。
使用nomic-embed-code
嵌入查询时,必须以以下前缀开头:
Represent this query for searching relevant code:
例如,以下代码展示了如何在RAG应用中使用该前缀嵌入用户问题。
启动llama.cpp服务器:
llama-server -m nomic-embed-code.Q4_0.gguf --embeddings --pooling last
并运行以下代码:
import requests
from textwrap import dedent
def dot(va, vb):
return sum(a*b for a, b in zip(va, vb))
def embed(texts):
resp = requests.post('http://localhost:8080/v1/embeddings', json={'input': texts}).json()
return [d['embedding'] for d in resp['data']]
docs = [
dedent("""\
def fn(n):
if n < 0:
raise ValueError
return 1 if n == 0 else n * fn(n - 1)
""").strip(),
dedent("""\
def fn(n):
print(("Fizz" * (n % 3 == 0) + "Buzz" * (n % 5 == 0)) or n)
""").strip(),
]
docs_embed = embed(docs)
query = 'Calculate the n-th factorial'
query_embed = embed(['Represent this query for searching relevant code: ' + query])[0]
print(f'query: {query!r}')
for d, e in zip(docs, docs_embed):
print(f'\nsimilarity {dot(query_embed, e):.2f}:\n{d}')
输出结果类似如下:
query: 'Calculate the n-th factorial'
similarity 0.49:
def fn(n):
if n < 0:
raise ValueError
return 1 if n == 0 else n * fn(n - 1)
similarity 0.32:
def fn(n):
print(("Fizz" * (n % 3 == 0) + "Buzz" * (n % 5 == 0)) or n)
从下方下载单个文件(非整个分支):
模型概览
nomic-embed-code
是一款顶尖的代码嵌入模型,擅长代码检索任务:
- 高性能:在CodeSearchNet上超越Voyage Code 3和OpenAI Embed 3 Large
- 多语言支持:支持多种编程语言(Python、Java、Ruby、PHP、JavaScript、Go)
- 先进架构:70亿参数的代码嵌入模型
- 完全开源:公开模型权重、训练数据和评估代码
模型 |
Python |
Java |
Ruby |
PHP |
JavaScript |
Go |
Nomic Embed Code |
81.7 |
80.5 |
81.8 |
72.3 |
77.1 |
93.8 |
Voyage Code 3 |
80.8 |
80.5 |
84.6 |
71.7 |
79.2 |
93.2 |
OpenAI Embed 3 Large |
70.8 |
72.9 |
75.3 |
59.6 |
68.1 |
87.6 |
Nomic CodeRankEmbed-137M |
78.4 |
76.9 |
79.3 |
68.8 |
71.4 |
92.7 |
CodeSage Large v2 (1B) |
74.2 |
72.3 |
76.7 |
65.2 |
72.5 |
84.6 |
CodeSage Large (1B) |
70.8 |
70.2 |
71.9 |
61.3 |
69.5 |
83.7 |
Qodo Embed 1 7B |
59.9 |
61.6 |
68.4 |
48.5 |
57.0 |
81.4 |
模型架构
- 总参数:7B
- 训练方法:基于CoRNStack数据集,采用双重一致性过滤和渐进式困难负样本挖掘
- 支持语言:Python、Java、Ruby、PHP、JavaScript和Go
CoRNStack数据集构建
从去重后的Stackv2开始,我们通过函数文档字符串与对应代码创建文本-代码对。过滤掉非英语、过短、含URL、HTML标签或无效字符的低质量对。同时保留文档字符串长度≥256token的样本以帮助模型学习长程依赖。

初步过滤后,采用双重一致性过滤去除潜在噪声样本。对每个文档字符串-代码对进行嵌入,并计算文档字符串与所有代码样本的相似度。若某文档字符串对应的代码样本未出现在其最相似的前两名中,则移除该样本对。
训练过程中,采用基于课程的困难负样本挖掘策略,确保模型学习具有挑战性的样本。通过softmax采样策略逐步增加难度采样困难负样本。
加入Nomic社区
引用
若模型、数据集或训练代码对您有帮助,请引用我们的工作:
@misc{suresh2025cornstackhighqualitycontrastivedata,
title={CoRNStack: High-Quality Contrastive Data for Better Code Retrieval and Reranking},
author={Tarun Suresh and Revanth Gangi Reddy and Yifei Xu and Zach Nussbaum and Andriy Mulyar and Brandon Duderstadt and Heng Ji},
year={2025},
eprint={2412.01007},
archivePrefix={arXiv},
primaryClass={cs