🚀 Shuu12121/CodeSearch-ModernBERT-Crow-Plus🐦⬛
このモデルは、Shuu12121/CodeModernBERT-Crow
をベースにした Sentence Transformer モデルです。多言語コード検索タスクに特化してファインチューニングされ、高い性能を発揮します。
🚀 クイックスタート
このモデルは、自然言語のクエリと複数のプログラミング言語のコードスニペット間の意味的な類似性を捉えることができます。sentence-transformers
ライブラリを使って簡単に利用できます。
from sentence_transformers import SentenceTransformer
import torch
model = SentenceTransformer("Shuu12121/CodeSearch-ModernBERT-Crow-Plus")
code_snippets = [
"def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)",
"function binarySearch(arr, target) { let left = 0, right = arr.length - 1; while (left <= right) { const mid = Math.floor((left + right) / 2); if (arr[mid] === target) return mid; if (arr[mid] < target) left = mid + 1; else right = mid - 1; } return -1; }"
]
natural_language_queries = [
"calculate the factorial of a number recursively",
"find an element in a sorted array using binary search"
]
code_embeddings = model.encode(code_snippets)
query_embeddings = model.encode(natural_language_queries)
print("Code Embeddings Shape:", code_embeddings.shape)
print("Query Embeddings Shape:", query_embeddings.shape)
✨ 主な機能
- 多言語コード検索 (Natural Language to Code, Code to Code) が可能です。
- コードの類似性判定に優れています。
- コード分類やクラスタリングのための特徴抽出ができます。
- コード推薦システムに利用できます。
📦 インストール
sentence-transformers
ライブラリを使ってモデルを利用するためには、以下のコマンドでライブラリをインストールします。
pip install sentence-transformers
💻 使用例
基本的な使用法
from sentence_transformers import SentenceTransformer
import torch
model = SentenceTransformer("Shuu12121/CodeSearch-ModernBERT-Crow-Plus")
code_snippets = [
"def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)",
"function binarySearch(arr, target) { let left = 0, right = arr.length - 1; while (left <= right) { const mid = Math.floor((left + right) / 2); if (arr[mid] === target) return mid; if (arr[mid] < target) left = mid + 1; else right = mid - 1; } return -1; }"
]
natural_language_queries = [
"calculate the factorial of a number recursively",
"find an element in a sorted array using binary search"
]
code_embeddings = model.encode(code_snippets)
query_embeddings = model.encode(natural_language_queries)
print("Code Embeddings Shape:", code_embeddings.shape)
print("Query Embeddings Shape:", query_embeddings.shape)
📚 ドキュメント
📊 MTEB Leaderboard 成績
本モデル CodeSearch-ModernBERT-Crow-Plus
は、Massive Text Embedding Benchmark (MTEB) における以下のタスクで高い順位を記録しています。現在の順位はLeaderboardでご確認できます。
タスク名 |
nDCG@10 スコア |
順位(2025年4月時点) |
CodeSearchNetRetrieval |
0.89296 |
第8位 / 146 モデル中 |
COIRCodeSearchNetRetrieval |
0.79884 |
第5位 / 15 モデル中 |
これらの結果は、本モデルがコード検索タスクにおいて非常に競争力のある性能を発揮していることを示しています。特に、多言語・自然言語–コード間の検索精度に優れた Sentence Transformer モデルとして、実用的な選択肢の一つです。
🧩 関連プロジェクトとの連携 / Integration with Related Projects
CodeSearch-ModernBERT-Crow-Plus は CodeSearchCrow.ipynb のように、実際のGitHubリポジトリを対象とした、関数単位のコード検索システムを簡単に構築できます。
このノートブックでは以下の処理が実行されます:
- GitHubリポジトリを指定してクローン
.py
または .ipynb
ファイルから関数・コードセルを抽出
- 関数コードをエンベディング(Sentence Transformerモデルを使用)
- FAISSインデックスを作成して高速検索を可能に
- Qwen3-8B-FP8モデルによる日本語→英語翻訳を通じて、日本語クエリでも自然な検索を実現
🔹 特徴
- 初回実行時にインデックスを作成し、以降は高速に再利用可能
- 関数レベルでコードを検索できるため、意味的に最も類似するコードを高精度に検索可能
- 日本語クエリにも完全対応(Qwen3-8B-FP8で英語翻訳後に検索)
🔗 リンク
概要 / Overview
CodeSearch-ModernBERT-Crow-Plus
は、自然言語のクエリと複数のプログラミング言語(Python, Java, JavaScript, PHP, Ruby, Go, Rust)のコードスニペット(主に関数レベル)間の意味的な類似性を捉えるために設計された Sentence Transformer モデルです。ベースモデルである CodeModernBERT-Crow
の強力なコード理解能力を継承し、コード検索や類似性判定タスクに最適化されています。
モデル詳細 / Model Details
属性 |
详情 |
ベースモデル / Base Model |
Shuu12121/CodeModernBERT-Crow |
アーキテクチャ / Architecture |
ModernBERT (hidden_size: 768, layers: 12, heads: 12) |
最大入力長 / Max Sequence Length |
1024 トークン |
ファインチューニング / Fine-tuning |
このモデルは、コードとその対応するドキュメント(例:CodeSearchNet データセット)を用いた類似性学習タスクでファインチューニングされていると考えられます。Sentence Transformer ライブラリで使用するために、Pooling 層が追加されています。 |
評価 / Evaluation
このモデルは MTEB (Massive Text Embedding Benchmark) で評価されています。
タスク: CodeSearchNet Retrieval
- MTEB 標準評価 (main_score: nDCG@10): 0.89296
ndcg_at_1
: 0.8135
ndcg_at_3
: 0.8781
ndcg_at_5
: 0.8868
ndcg_at_10
: 0.8930
ndcg_at_20
: 0.8947
ndcg_at_100
: 0.8971
ndcg_at_1000
: 0.8995
map_at_10
: 0.8705
recall_at_10
: 0.9610
mrr_at_10
: 0.8705
- COIR版での評価 (main_score: nDCG@10): 0.79884
ndcg_at_1
: 0.7152
ndcg_at_3
: 0.7762
ndcg_at_5
: 0.7885
ndcg_at_10
: 0.7988
ndcg_at_20
: 0.8056
ndcg_at_100
: 0.8134
ndcg_at_1000
: 0.8172
map_at_10
: 0.7729
recall_at_10
: 0.8794
mrr_at_10
: 0.7729
注: 評価設定の違いにより、同じ CodeSearchNet Retrieval タスクでもスコアが異なります。
参考として、ベースモデル Shuu12121/CodeModernBERT-Crow
の CodeSearchNet Test Split における MRR@100 スコアは以下の通りです(固定評価スクリプト使用)。
言語 / Language |
Python |
Java |
JavaScript |
PHP |
Ruby |
Go |
MRR@100 |
0.9372 |
0.8642 |
0.8118 |
0.8388 |
0.8392 |
0.8522 |
想定している用途と制限 / Intended Use & Limitations
- 想定している用途 / Intended Use:
- 多言語コード検索 (Natural Language to Code, Code to Code)
- コードの類似性判定
- コード分類やクラスタリングのための特徴抽出
- コード推薦システム
- 対象言語 / Target Languages: Python, Java, JavaScript, PHP, Ruby, Go, Rust
- 制限 / Limitations:
- 主に関数レベルのコードスニペットに最適化されています。非常に長いコードファイル全体や、構文的に不完全なコードに対する性能は低下する可能性があります。
- 特定のドメインやライブラリに特化したタスクでは、追加のファインチューニングが有効な場合があります。
- 生成タスクには適していません(これはエンコーダモデルです)。
Note:
This model was evaluated on MTEB with commit hash 044a7a4b552f86e284817234c336bccf16f895ce
.
The current README may have been updated since that version, but the model weights remain unchanged.
🔧 技術詳細
このモデルは Shuu12121/CodeModernBERT-Crow
をベースにしており、コードとその対応するドキュメントを用いた類似性学習タスクでファインチューニングされています。Sentence Transformer ライブラリで使用するために、Pooling 層が追加されています。
📄 ライセンス
連絡先 / Contact
質問や提案については、開発者 Shuu12121 までご連絡ください。
📧 shun0212114@outlook.jp