--- 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**