标签:
- 句子转换器
- 句子相似度
- 特征提取
- 代码搜索
- 现代BERT
- 代码
- Python
- Java
- JavaScript
- PHP
- Ruby
- Rust
- Go
- MTEB
基础模型: Shuu12121/CodeModernBERT-Crow
管道标签: 句子相似度
库名称: sentence-transformers
许可证: apache-2.0
数据集:
- 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
语言:
- 英语
小部件:
- 源文本:
- 'def greet(name): print(f''Hello, {name}!'')'
- function calculateSum(a, b) { return a + b; }
-
public static void main(String[] args) { System.out.println("Hello World");
}
示例标题: 代码片段
- 源文本:
- 一个打印问候语的函数
- 计算两个数字之和的函数
- Java程序的主入口点
示例标题: 描述
Shuu12121/CodeSearch-ModernBERT-Crow-Plus🐦⬛
该模型是基于Shuu12121/CodeModernBERT-Crow
的句子转换器模型,专门针对多语言代码搜索任务进行了优化微调。
👉 立即在Google Colab上试用
您可以轻松尝试使用该模型构建的GitHub仓库函数级代码搜索系统!
📊 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
文件中提取函数/代码单元
- 使用句子转换器模型生成函数代码的嵌入
- 创建FAISS索引实现快速搜索
- 通过Qwen3-8B-FP8模型进行日语→英语翻译,实现日语查询的自然搜索
🔹 特点
- 首次运行时创建索引,之后可快速复用
- 支持函数级代码搜索,能够高精度搜索语义最相似的代码
- 完全支持日语查询(使用Qwen3-8B-FP8翻译为英语后搜索)
🔗 链接
概述
CodeSearch-ModernBERT-Crow-Plus
是一款专为捕捉自然语言查询与多种编程语言(Python、Java、JavaScript、PHP、Ruby、Go、Rust)代码片段(主要是函数级)之间语义相似性而设计的句子转换器模型。它继承了基础模型CodeModernBERT-Crow
强大的代码理解能力,并针对代码搜索和相似性判定任务进行了优化。
模型详情
- 基础模型: Shuu12121/CodeModernBERT-Crow
- 架构: ModernBERT (隐藏层大小: 768, 层数: 12, 头数: 12)
- 最大输入长度: 1024个标记
- 微调: 该模型可能使用代码及其对应文档(如CodeSearchNet数据集)通过相似性学习任务进行了微调。为配合句子转换器库使用,添加了Pooling层。
使用方法
可以使用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 = [
"递归计算数字的阶乘",
"使用二分查找在排序数组中查找元素"
]
code_embeddings = model.encode(code_snippets)
query_embeddings = model.encode(natural_language_queries)
print("代码嵌入形状:", code_embeddings.shape)
print("查询嵌入形状:", query_embeddings.shape)
评估
该模型已在MTEB (Massive Text Embedding Benchmark)上进行评估。
任务: CodeSearchNet Retrieval
注: 由于评估设置不同,同一CodeSearchNet Retrieval任务的得分也有所不同。
作为参考,基础模型Shuu12121/CodeModernBERT-Crow
在CodeSearchNet测试集上的MRR@100得分如下(使用固定评估脚本):
语言 |
Python |
Java |
JavaScript |
PHP |
Ruby |
Go |
MRR@100 |
0.9372 |
0.8642 |
0.8118 |
0.8388 |
0.8392 |
0.8522 |
预期用途与限制
- 预期用途:
- 多语言代码搜索(自然语言到代码,代码到代码)
- 代码相似性判定
- 用于代码分类和聚类的特征提取
- 代码推荐系统
- 目标语言: Python、Java、JavaScript、PHP、Ruby、Go、Rust
- 限制:
- 主要针对函数级代码片段进行了优化。对于非常长的完整代码文件或语法不完整的代码,性能可能会下降。
- 对于特定领域或库的任务,额外的微调可能更有效。
- 不适用于生成任务(这是一个编码器模型)。
注意:
该模型在MTEB上的评估使用了提交哈希044a7a4b552f86e284817234c336bccf16f895ce
。
当前的README可能已更新,但模型权重保持不变。
联系方式
如有问题或建议,请联系开发者Shuu12121。
📧 shun0212114@outlook.jp