File size: 5,865 Bytes
a08936c
 
 
 
 
267dbea
 
 
 
 
 
 
 
 
 
 
a08936c
 
 
267dbea
 
 
 
 
 
 
 
 
 
 
a08936c
 
267dbea
a08936c
267dbea
a08936c
267dbea
a08936c
267dbea
 
 
a08936c
267dbea
a08936c
267dbea
a08936c
267dbea
a08936c
267dbea
 
 
 
 
 
 
 
 
a08936c
267dbea
 
a08936c
267dbea
a08936c
267dbea
a08936c
267dbea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dd5a111
267dbea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a08936c
 
 
 
267dbea
 
 
 
 
a08936c
 
267dbea
 
 
 
a08936c
267dbea
 
a08936c
 
267dbea
 
dd5a111
267dbea
 
 
 
 
 
a08936c
267dbea
 
 
 
 
 
 
 
 
a08936c
267dbea
a08936c
267dbea
 
a08936c
267dbea
a08936c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
---
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:

**📧 [email protected]**