🚀 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