モデル概要
モデル特徴
モデル能力
使用事例
🚀 ノミック埋め込みコードGGUFモデル
nomic-embed-code
は最先端のコード埋め込みモデルで、コード検索タスクで優れた性能を発揮します。高い性能、複数のプログラミング言語のサポート、高度なアーキテクチャを備え、完全にオープンソースです。
🚀 クイックスタート
インストール
必要な依存関係を以下のコマンドでインストールできます。
pip install transformers sentence-transformers torch
Transformersを使用したコード例
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("nomic-ai/nomic-embed-code")
model = AutoModel.from_pretrained("nomic-ai/nomic-embed-code")
def last_token_pooling(hidden_states, attention_mask):
sequence_lengths = attention_mask.sum(-1) - 1
return hidden_states[torch.arange(hidden_states.shape[0]), sequence_lengths]
queries = ['Represent this query for searching relevant code: Calculate the n-th factorial']
codes = ['def fact(n):\n if n < 0:\n raise ValueError\n return 1 if n == 0 else n * fact(n - 1)']
code_snippets = queries + codes
encoded_input = tokenizer(code_snippets, padding=True, truncation=True, return_tensors='pt')
model.eval()
with torch.no_grad():
model_output = model(**encoded_input)[0]
embeddings = last_token_pooling(model_output, encoded_input['attention_mask'])
embeddings = F.normalize(embeddings, p=2, dim=1)
print(embeddings.shape)
similarity = F.cosine_similarity(embeddings[0], embeddings[1], dim=0)
print(similarity)
SentenceTransformersを使用したコード例
from sentence_transformers import SentenceTransformer
queries = ['Calculate the n-th factorial']
code_snippets = ['def fact(n):\n if n < 0:\n raise ValueError\n return 1 if n == 0 else n * fact(n - 1)']
model = SentenceTransformer("nomic-ai/nomic-embed-code")
query_emb = model.encode(queries, prompt_name="query")
code_emb = model.encode(code_snippets)
similarity = model.similarity(query_emb[0], code_emb[0])
print(similarity)
✨ 主な機能
- 高性能:CodeSearchNetでVoyage Code 3やOpenAI Embed 3 Largeを上回る性能を発揮します。
- 多言語コードサポート:Python、Java、Ruby、PHP、JavaScript、Goなどの複数のプログラミング言語に対応しています。
- 高度なアーキテクチャ:70億パラメータのコード埋め込みモデルです。
- 完全オープンソース:モデルの重み、学習データ、評価コードが公開されています。
📦 インストール
必要な依存関係を以下のコマンドでインストールできます。
pip install transformers sentence-transformers torch
💻 使用例
基本的な使用法
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("nomic-ai/nomic-embed-code")
model = AutoModel.from_pretrained("nomic-ai/nomic-embed-code")
def last_token_pooling(hidden_states, attention_mask):
sequence_lengths = attention_mask.sum(-1) - 1
return hidden_states[torch.arange(hidden_states.shape[0]), sequence_lengths]
queries = ['Represent this query for searching relevant code: Calculate the n-th factorial']
codes = ['def fact(n):\n if n < 0:\n raise ValueError\n return 1 if n == 0 else n * fact(n - 1)']
code_snippets = queries + codes
encoded_input = tokenizer(code_snippets, padding=True, truncation=True, return_tensors='pt')
model.eval()
with torch.no_grad():
model_output = model(**encoded_input)[0]
embeddings = last_token_pooling(model_output, encoded_input['attention_mask'])
embeddings = F.normalize(embeddings, p=2, dim=1)
print(embeddings.shape)
similarity = F.cosine_similarity(embeddings[0], embeddings[1], dim=0)
print(similarity)
高度な使用法
from sentence_transformers import SentenceTransformer
queries = ['Calculate the n-th factorial']
code_snippets = ['def fact(n):\n if n < 0:\n raise ValueError\n return 1 if n == 0 else n * fact(n - 1)']
model = SentenceTransformer("nomic-ai/nomic-embed-code")
query_emb = model.encode(queries, prompt_name="query")
code_emb = model.encode(code_snippets)
similarity = model.similarity(query_emb[0], code_emb[0])
print(similarity)
📚 ドキュメント
モデルアーキテクチャ
- 総パラメータ数:70億
- 学習アプローチ:CoRNStackデータセットを使用し、二重一貫性フィルタリングと段階的ハードネガティブマイニングを行って学習されました。
- サポート言語:Python、Java、Ruby、PHP、JavaScript、Go
CoRNStackデータセットの作成
重複排除されたStackv2から、関数のドキュメント文字列と対応するコードからテキスト-コードペアを作成しました。ドキュメント文字列が英語でない、短すぎる、URL、HTMLタグ、または無効な文字を含む低品質のペアをフィルタリングしました。さらに、モデルが長距離依存関係を学習できるように、256トークン以上のドキュメント文字列を保持しました。
初期フィルタリングの後、二重一貫性フィルタリングを使用して潜在的にノイズの多い例を削除しました。各ドキュメント文字列とコードペアを埋め込み、各ドキュメント文字列とすべてのコード例の間の類似度を計算します。与えられたドキュメント文字列に対して、対応するコード例が最も類似する上位2つの例に含まれない場合は、データセットからペアを削除します。
学習中には、新しいカリキュラムベースのハードネガティブマイニング戦略を採用し、モデルが難しい例から学習できるようにしました。ソフトマックスベースのサンプリング戦略を使用して、時間の経過とともに難易度を増しながらハードネガティブを段階的にサンプリングします。
モデル形式の選択
モデル形式 | 精度 | メモリ使用量 | デバイス要件 | 最適な使用ケース |
---|---|---|---|---|
BF16 | 非常に高い | 高い | BF16対応のGPU/CPU | 低メモリでの高速推論 |
F16 | 高い | 高い | FP16対応のGPU/CPU | BF16が利用できない場合の推論 |
Q4_K | 中程度 - 低い | 低い | CPUまたは低VRAMデバイス | メモリ制限のある推論 |
Q6_K | 中程度 | 中程度 | メモリの多いCPU | 量子化によるより高い精度 |
Q8_0 | 高い | 中程度 | 中程度のVRAMを持つGPU/CPU | 量子化モデルの中で最も高い精度 |
IQ3_XS | 低い | 非常に低い | 超低メモリデバイス | 最大のメモリ効率、低い精度 |
IQ3_S | 低い | 非常に低い | 低メモリデバイス | IQ3_XSよりも少し使いやすい |
IQ3_M | 低 - 中程度 | 低い | 低メモリデバイス | IQ3_Sよりも高い精度 |
Q4_0 | 低い | 低い | ARMベース/組み込みデバイス | Llama.cppがARM推論用に自動的に最適化 |
Ultra Low-Bit (IQ1/2_*) | 非常に低い | 極めて低い | 小さなエッジ/組み込みデバイス | 非常に制限されたメモリにモデルを収める;低い精度 |
Hybrid (e.g., bf16_q8_0 ) |
中程度 - 高い | 中程度 | 混合精度対応のハードウェア | バランスの取れたパフォーマンスとメモリ、重要なレイヤーでのFPに近い精度 |
🔧 技術詳細
モデル生成の詳細
このモデルは、llama.cpp のコミット 7f4fbe51
を使用して生成されました。
イマトリックスを超える量子化
標準のイマトリックスが低ビット量子化やMOEモデルでは十分な性能を発揮しないことがわかったため、新しい量子化方法をテストしています。llama.cppの --tensor-type
を使用して、選択したレイヤーを上位に移動させます。詳細は Layer bumping with llama.cpp を参照してください。この方法はモデルファイルを大きくするが、与えられたモデルサイズに対して精度を向上させます。
📄 ライセンス
このプロジェクトは、Apache-2.0ライセンスの下で公開されています。
ノミックコミュニティへの参加
- ノミック埋め込みエコシステム: https://www.nomic.ai/embed
- ウェブサイト: https://nomic.ai
- Twitter: https://twitter.com/nomic_ai
- Discord: https://discord.gg/myY5YDR8z8
引用
モデル、データセット、または学習コードが役立った場合は、以下のように引用してください。
@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.CL},
url={https://arxiv.org/abs/2412.01007},
}
ネットワークモニターのテスト
テスト方法
AIアシスタントのタイプを選択します。
TurboLLM
(GPT-4.1-mini)HugLLM
(Hugginfaceのオープンソースモデル)TestLLM
(実験的なCPU専用)
テスト内容
小さなオープンソースモデルを使用したAIネットワークモニタリングの限界を追求しています。具体的には、以下のことをテストしています。
- ライブネットワークサービスに対する関数呼び出し
- 以下のタスクを処理しながら、モデルをどれだけ小さくできるか
- 自動化されたNmapセキュリティスキャン
- 量子準備チェック
- ネットワークモニタリングタスク
各アシスタントの特徴
TestLLM
- ゼロコンフィギュレーションセットアップ
- 30秒のロード時間(推論は遅いがAPIコストがかからない)。コストが低いためトークン制限がありません。
- 協力者募集中! エッジデバイスAIに興味がある方は、一緒に協力しましょう!
TurboLLM
- gpt-4.1-miniを使用:非常に良い性能を発揮しますが、OpenAIがトークンごとに課金するため、トークンの使用量に制限があります。
- カスタムコマンドプロセッサを作成:Free Network Monitor Agents上で.NETコードを実行します。
- リアルタイムネットワーク診断とモニタリング
- セキュリティ監査
- 侵入テスト (Nmap/Metasploit)
HugLLM
- Hugging Face Inference API上で実行:Novitaにホストされている最新のモデルを使用して、かなり良い性能を発揮します。
テストできるコマンド例
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a comprehensive security audit on my server"
"Create a cmd processor to .. (what ever you want)"
(Free Network Monitor Agentをインストールして.NETコードを実行する必要があります。非常に柔軟で強力な機能ですが、注意して使用してください!)
最後に
これらのモデルファイルを作成するためのサーバー、Free Network Monitorサービスを実行するためのサーバー、およびNovitaとOpenAIからの推論費用はすべて自費で負担しています。モデル作成とFree Network Monitorプロジェクトのすべてのコードは オープンソース です。役に立つものがあれば自由に使用してください。
もしこの仕事が役に立ったと感じたら、コーヒーを請う ことを検討してみてください。あなたの支援はサービスコストを賄い、トークン制限を引き上げるのに役立ちます。
また、仕事の機会やスポンサーシップも歓迎しています。
ありがとうございます!







