|
--- |
|
tags: |
|
- sentence-transformers |
|
- sentence-similarity |
|
- feature-extraction |
|
- code-search |
|
- modernbert |
|
- code |
|
- python |
|
- java |
|
- javascript |
|
- php |
|
- ruby |
|
- rust |
|
- go |
|
- mteb |
|
base_model: Shuu12121/CodeModernBERT-Snake |
|
pipeline_tag: sentence-similarity |
|
library_name: sentence-transformers |
|
license: apache-2.0 |
|
datasets: |
|
- code-search-net/code_search_net |
|
- Shuu12121/python-codesearch-filtered |
|
- Shuu12121/java-codesearch-filtered |
|
- Shuu12121/javascript-codesearch-filtered |
|
- Shuu12121/rust-codesearch-filtered |
|
- Shuu12121/ruby-codesearch-filtered |
|
language: |
|
- en |
|
|
|
--- |
|
|
|
# Shuu12121/CodeSearch-ModernBERT-Snake-Plus 🐍 |
|
|
|
このモデルは、`Shuu12121/CodeModernBERT-Snake` をベースにした Sentence Transformer モデルであり、特に**多言語コード検索タスク**において高い性能を発揮するようファインチューニングされています。 |
|
|
|
> This is a Sentence Transformer model based on `Shuu12121/CodeModernBERT-Snake`, fine-tuned for high performance on multilingual code search tasks. |
|
|
|
- **開発者 (Developer)**: [Shuu12121](https://huggingface.co/Shuu12121) |
|
- **ベースモデル (Base Model)**: [Shuu12121/CodeModernBERT-Snake](https://huggingface.co/Shuu12121/CodeModernBERT-Snake) |
|
- **ライセンス (License)**: Apache-2.0 |
|
|
|
--- |
|
|
|
## 📊 MTEB評価 / MTEB Evaluation |
|
|
|
このモデルは、Massive Text Embedding Benchmark (MTEB) の**CodeSearchNet Retrieval**タスクにおいて、以下のスコアを記録しています。 |
|
|
|
| 指標 | スコア (標準版) | スコア (COIR版) | |
|
|:-----|:----------------|:---------------| |
|
| **main_score (nDCG@10)** | 0.87926 | 0.77199 | |
|
| ndcg_at_1 | 0.78900 | 0.68372 | |
|
| ndcg_at_3 | 0.86324 | 0.74734 | |
|
| ndcg_at_5 | 0.87229 | 0.76061 | |
|
| ndcg_at_10 | 0.87926 | 0.77199 | |
|
| recall_at_10 | 0.95667 | 0.85808 | |
|
| mrr_at_10 | 0.85375 | 0.74433 | |
|
|
|
> ※ 標準版:通常のMTEB評価設定、COIR版:より厳しい類似度評価設定 |
|
> ※ 公式に提出していないためランキング情報は記載していません。(参考順位としては,標準版は10位前後のモデルとほぼ同等ぐらいでCOIR版は8位前後と同等ぐらいです,2025年4月現在) |
|
|
|
--- |
|
|
|
# 🆚 Crow-Plusとの比較 / Comparison with Crow-Plus |
|
|
|
Crow-Plus(`Shuu12121/CodeSearch-ModernBERT-Crow-Plus`)と比較すると、 |
|
**Snake-Plusは、パラメータ数を約半分に削減**しながら、非常に高い性能を維持しています。 |
|
|
|
| 指標 | Crow-Plus | Snake-Plus | コメント | |
|
|:-----|:----------|:-----------|:---------| |
|
| **main_score (nDCG@10, 標準版)** | 0.89296 | 0.87926 | SnakeはCrowに迫る水準を維持 | |
|
| **main_score (nDCG@10, COIR版)** | 0.79884 | 0.77199 | 厳しい設定でもSnakeは健闘 | |
|
| **パラメータ数 (推定)** | 約150M | 約77M | **SnakeはCrowの約半分** | |
|
| Recall@10 (標準版) | 96.1% | 95.6% | ほぼ同等のリコール率 | |
|
|
|
### 🔥 Snake-Plusの主な特徴 |
|
|
|
- **パラメータ数はCrow-Plusの約半分(50%)** |
|
- **推論速度の高速化、メモリ消費量の低減**が可能 |
|
- **性能もほとんど維持**(nDCG@10ではCrow比約98%) |
|
- 軽量なモデルが必要な環境(例:オンデバイス検索、低リソース推論)に特に適する |
|
|
|
--- |
|
|
|
# 客観的分析まとめ |
|
|
|
Snake-Plusは、**高性能を維持したまま小型化を実現**したモデルです。 |
|
特に「推論コストを削減しつつ、実用レベルの検索性能を確保したい」ユースケースに非常に適しています。 |
|
|
|
一方で、**絶対的な最高性能を目指す場合**(特に難易度の高いドメインデータ)では、Crow-Plusの方が優位となる場面もあり得ます。 |
|
**用途とリソースに応じた使い分け**が推奨されます。 |
|
|
|
--- |
|
|
|
## 🔧 モデル詳細 / Model Details |
|
|
|
- **ベースモデル**: Shuu12121/CodeModernBERT-Snake |
|
- **アーキテクチャ**: ModernBERT (hidden\_size: 512, layers: 12, heads: 8) |
|
- **最大入力長**: 1024トークン |
|
- **ファインチューニング**: CodeSearchNetなどの自然言語–コードペアを用いた類似性学習 |
|
- **Pooling**: CLS Poolingを使用(SentenceTransformer互換) |
|
|
|
--- |
|
|
|
## 🚀 使用方法 / How to Use |
|
|
|
```python |
|
from sentence_transformers import SentenceTransformer |
|
|
|
model = SentenceTransformer("Shuu12121/CodeSearch-ModernBERT-Snake-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; }" |
|
] |
|
|
|
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(queries) |
|
``` |
|
|
|
--- |
|
|
|
## 想定用途と制限 / Intended Use & Limitations |
|
|
|
**用途例 / Intended Use:** |
|
- 多言語コード検索 (Natural Language to Code, Code to Code) |
|
- コードの類似性判定 |
|
- コード分類・クラスタリング |
|
- コード推薦システム構築 |
|
|
|
**対象言語 / Target Languages:** |
|
- Python, Java, JavaScript, PHP, Ruby, Go, Rust |
|
|
|
**制限 / Limitations:** |
|
- 主に**関数レベルのコード**に最適化。非常に長いファイルや構文エラーを含むコードには弱い傾向あり。 |
|
- ドメイン特化タスクには追加ファインチューニングが有効な場合がある。 |
|
- **生成タスク**(例:コード補完・生成)には向いていない(エンコーダ専用)。 |
|
|
|
--- |
|
|
|
## 📩 連絡先 / Contact |
|
|
|
ご質問・ご提案はこちらへどうぞ。 |
|
For questions or suggestions, please contact: |
|
|
|
**📧 shun0212114@outlook.jp** |
|
|
|
|