🚀 Shuu12121/CodeSearch-ModernBERT-Crow-Plus🐦⬛
CodeSearch-ModernBERT-Crow-Plus
是一個基於 Shuu12121/CodeModernBERT-Crow
的 Sentence Transformer 模型。它經過微調,在多語言代碼搜索任務中表現出色,能夠有效捕捉自然語言查詢與多種編程語言代碼片段之間的語義相似性。
👉 立即在 Google Colab 上試用
你可以輕鬆試用基於此模型構建的 GitHub 倉庫函數級代碼搜索系統!
🚀 快速開始
本模型可以藉助 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 基準測試的多個代碼搜索任務中取得了優異成績,展現出強大的代碼搜索能力。
- 多語言支持:支持 Python、Java、JavaScript、PHP、Ruby、Go、Rust 等多種編程語言。
- 語義理解:能夠捕捉自然語言查詢與代碼片段之間的語義相似性,實現自然語言 - 代碼間的高效檢索。
- 易於集成:可以通過
sentence-transformers
庫輕鬆集成到項目中。
📦 安裝指南
使用此模型需要安裝 sentence-transformers
庫,可通過以下命令進行安裝:
pip install sentence-transformers
📊 MTEB 排行榜成績
本模型 CodeSearch-ModernBERT-Crow-Plus
在 Massive Text Embedding Benchmark (MTEB) 的以下任務中取得了較高排名:
當前排名可在排行榜中查看。
任務名稱 |
nDCG@10 分數 |
排名(截至2025年4月) |
CodeSearchNetRetrieval |
0.89296 |
第8位 / 146 個模型中 |
COIRCodeSearchNetRetrieval |
0.79884 |
第5位 / 15 個模型中 |
這些結果表明,本模型在代碼搜索任務中具有很強的競爭力,尤其在 多語言、自然語言 - 代碼間的檢索精度 方面表現出色,是一個實用的選擇。
🧩 與相關項目的集成
CodeSearch-ModernBERT-Crow-Plus 可以像 CodeSearchCrow.ipynb 那樣,輕鬆構建一個 針對實際 GitHub 倉庫的函數級代碼搜索系統。
該筆記本會執行以下操作:
- 指定並克隆 GitHub 倉庫。
- 從
.py
或 .ipynb
文件中提取函數和代碼單元。
- 使用 Sentence Transformer 模型對函數代碼進行嵌入。
- 創建 FAISS 索引以實現快速檢索。
- 通過 Qwen3 - 8B - FP8 模型進行 日語 - 英語翻譯,實現日語查詢的自然檢索。
🔹 特點
- 首次運行創建索引,後續可快速複用:首次運行時創建索引,後續使用無需重複操作,提高檢索效率。
- 函數級檢索:支持函數級代碼搜索,能夠高精度地檢索出語義最相似的代碼。
- 支持日語查詢:藉助 [Qwen3 - 8B - FP8](https://huggingface.co/Qwen/Qwen3 - 8B - FP8) 模型進行翻譯後,可直接使用日語進行查詢。
🔗 鏈接
📚 詳細文檔
概要
CodeSearch-ModernBERT-Crow-Plus
是一個 Sentence Transformer 模型,旨在捕捉自然語言查詢與多種編程語言(Python、Java、JavaScript、PHP、Ruby、Go、Rust)代碼片段(主要是函數級)之間的語義相似性。它繼承了基礎模型 CodeModernBERT-Crow
的強大代碼理解能力,並針對代碼搜索和相似性判定任務進行了優化。
模型細節
屬性 |
詳情 |
基礎模型 |
Shuu12121/CodeModernBERT-Crow |
架構 |
ModernBERT (隱藏層大小: 768, 層數: 12, 頭數: 12) |
最大輸入長度 |
1024 個標記 |
微調 |
該模型可能使用代碼及其對應的文檔(如 CodeSearchNet 數據集)進行了相似性學習任務的微調,並添加了 Pooling 層以用於 Sentence Transformer 庫。 |
🔧 技術細節
評估
本模型在 MTEB (Massive Text Embedding Benchmark) 上進行了評估。
任務: CodeSearchNet Retrieval
注意: 由於評估設置不同,同一 CodeSearchNet Retrieval 任務的分數可能會有所差異。
作為參考,基礎模型 Shuu12121/CodeModernBERT-Crow
在 CodeSearchNet 測試集上的 MRR@100 分數如下(使用固定評估腳本):
語言 / Language |
Python |
Java |
JavaScript |
PHP |
Ruby |
Go |
MRR@100 |
0.9372 |
0.8642 |
0.8118 |
0.8388 |
0.8392 |
0.8522 |
📄 許可證
本項目採用 Apache - 2.0 許可證。
想定使用場景與限制
想定使用場景
- 多語言代碼搜索:支持自然語言到代碼、代碼到代碼的搜索。
- 代碼相似度判定:判斷代碼之間的語義相似度。
- 特徵提取:為代碼分類或聚類任務提取特徵。
- 代碼推薦系統:為用戶推薦相似的代碼片段。
目標語言
支持 Python、Java、JavaScript、PHP、Ruby、Go、Rust 等編程語言。
限制
- 代碼粒度:主要針對函數級代碼片段進行優化,對於非常長的代碼文件或語法不完整的代碼,性能可能會下降。
- 特定領域:在特定領域或特定庫相關的任務中,可能需要進行額外的微調。
- 生成任務不適用:該模型是一個編碼器模型,不適合用於生成任務。
注意:本模型在 MTEB 上的評估使用的提交哈希為 044a7a4b552f86e284817234c336bccf16f895ce
。當前的 README 可能在該版本之後進行了更新,但模型權重保持不變。
📞 聯繫信息
如有疑問或建議,請聯繫開發者 Shuu12121。
📧 shun0212114@outlook.jp