Shuu12121's picture
Update README.md
dd5a111 verified
---
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**