Team Ai
Modelpublic

Matthieufromparis/bge-small-code-search-v1

sourceHugging Faceapache-2.0updated 5mo agoView on Hugging Face
0likes105downloads
Model Card

bge-small-code-search-v1

A BGE-small-en-v1.5 model fine-tuned on CodeSearchNet (Python) for semantic code search.

๐Ÿ” What It Does

Maps natural language queries and code snippets into the same 384-dimensional vector space. Search your codebase by describing what a function does.

python
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Matthieufromparis/bge-small-code-search-v1")

query = "parse JSON config file and return a dictionary"
code_snippets = [...]  # your codebase
query_emb = model.encode(query)
code_embs = model.encode(code_snippets)
similarities = model.similarity(query_emb, code_embs)

๐Ÿ“Š Performance

MetricBase (BGE-small)Fine-TunedImprovement
NDCG@100.97610.9849+0.9%
Accuracy@10.9480.960+1.3%
MRR@100.9750.978+0.3%

Evaluated on 500 held-out Python code-comment pairs from CodeSearchNet.

๐Ÿ—๏ธ Training

  • โ€”Base Model: BAAI/bge-small-en-v1.5 (33M params, 384 dims)
  • โ€”Dataset: CodeSearchNet โ€” Python subset, 6,000 pairs
  • โ€”Loss: MultipleNegativesRankingLoss
  • โ€”Epochs: 3 | Batch Size: 4 | LR: 2e-5
  • โ€”Hardware: Apple M4 (MPS), ~33 min

๐Ÿš€ Quick Start

bash
pip install sentence-transformers
python
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Matthieufromparis/bge-small-code-search-v1")
query_embedding = model.encode("function that sorts a list of dictionaries by a key")
code_embedding = model.encode("def sort_dicts_by_key(dicts, key): return sorted(dicts, key=lambda x: x.get(key, ''))")
similarity = model.similarity(query_embedding, code_embedding)
print(f"Similarity: {similarity.item():.4f}")

๐Ÿ“ฆ Use Cases

  • โ€”Semantic Code Search โ€” Find functions by describing what they do
  • โ€”Code Documentation Lookup โ€” Match docs to relevant code
  • โ€”Code Deduplication โ€” Find similar implementations across repos
  • โ€”RAG for Coding Assistants โ€” Retrieve relevant code for LLM context

๐ŸŽฏ Intended Use

Designed for asymmetric search โ€” queries are natural language, documents are code.

โš ๏ธ Limitations

  • โ€”Trained on Python only โ€” may not generalize to other languages
  • โ€”384 dimensions โ€” trades quality for speed vs larger models
  • โ€”Training data from CodeSearchNet (2019 vintage)

๐Ÿ“š Resources


Author: Matthieu.AI (Matthieufromparis) โ€” License: Apache 2.0