Sentence Similarity
sentence-transformers
Safetensors
qwen3
code-retrieval
multilingual
matryoshka
custom_code
text-embeddings-inference
Instructions to use brokkai/Muninn with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use brokkai/Muninn with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("brokkai/Muninn", trust_remote_code=True) sentences = [ "That is a happy person", "That is a happy dog", "That is a very happy person", "Today is a sunny day" ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [4, 4] - Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| library_name: sentence-transformers | |
| pipeline_tag: sentence-similarity | |
| base_model: voyageai/voyage-4-nano | |
| tags: | |
| - sentence-transformers | |
| - code-retrieval | |
| - multilingual | |
| - matryoshka | |
| datasets: | |
| - BrokkAI/Quarry | |
| # Muninn | |
| Muninn is a 346M-parameter multilingual retriever for natural-language-query → | |
| code-function retrieval, with an 8,192-token serving context and 2,048-dimensional | |
| embeddings. | |
| It is trained from `voyageai/voyage-4-nano` and uses a bidirectional Qwen3 encoder. | |
| Muninn supports Matryoshka truncation at 512, 1,024, 1,536, and 2,048 dimensions. We | |
| recommend 2,048 dimensions: that is the native evaluation setting, and truncating to 512 | |
| cost roughly two recall points at depth on Quarry. | |
| ## Usage | |
| Muninn requires `trust_remote_code=True` because this repository includes the custom | |
| `Qwen3BidirectionalModel` implementation. | |
| ```python | |
| from sentence_transformers import SentenceTransformer | |
| model = SentenceTransformer( | |
| "BrokkAI/Muninn", | |
| trust_remote_code=True, | |
| truncate_dim=2048, | |
| ) | |
| model.max_seq_length = 8192 | |
| queries = ["Where is retry backoff calculated for failed HTTP requests?"] | |
| documents = [ | |
| "src/net/client.py/HttpClient/retry_delay\n" | |
| "class HttpClient:def retry_delay(self, attempt):\n" | |
| " return min(60, 2 ** attempt)" | |
| ] | |
| query_embeddings = model.encode(queries, prompt_name="query", normalize_embeddings=True) | |
| document_embeddings = model.encode( | |
| documents, prompt_name="document", normalize_embeddings=True | |
| ) | |
| scores = model.similarity(query_embeddings, document_embeddings) | |
| print(scores) | |
| ``` | |
| The exact inference prompts are: | |
| ```text | |
| query: Represent the query for retrieving supporting documents: | |
| document: Represent the document for retrieval: | |
| ``` | |
| ### Document format | |
| Quarry results use the header format produced by `swerank_document_text()` before the | |
| document prompt is applied. For a free function: | |
| ```text | |
| {path}/{function_name} | |
| {source} | |
| ``` | |
| For a class method: | |
| ```text | |
| {path}/{ClassName}/{function_name} | |
| class {ClassName}:{source} | |
| ``` | |
| The worked usage example above is therefore the exact representation of a method named | |
| `HttpClient.retry_delay` in `src/net/client.py`. Preserve this shape when comparing against | |
| reported results. | |
| ## Quarry results | |
| [Quarry](https://huggingface.co/datasets/BrokkAI/Quarry) contains 6,525 synthetic behavioral | |
| queries over real repository revisions. The metric is strict all-gold micro recall@k: for | |
| each query, `|gold ∩ top-k| / |gold|`, followed by a flat mean over queries. Models use their | |
| native dimensions and the header document format above. | |
| We measured every row ourselves with the Quarry harness. Muninn leads a field that includes | |
| much larger open models and commercial APIs. | |
| | Model | Params | recall@5 | recall@20 | recall@50 | | |
| |---|---:|---:|---:|---:| | |
| | **Muninn** | 346M | **61.4** | **82.6** | **90.7** | | |
| | voyage-code-3 | API | 59.1 | 81.8 | 90.4 | | |
| | voyage-4 | API | 59.0 | 80.8 | 90.0 | | |
| | SweRank-Large | 7B | 58.5 | 80.6 | 89.6 | | |
| | Nemotron-3-Embed-1B | 1B | 58.3 | 79.9 | 88.7 | | |
| | bge-code-v1 | 1.5B | 58.2 | 79.8 | 88.7 | | |
| | voyage-4-nano (base) | 346M | 57.5 | 79.7 | 89.0 | | |
| | voyage-4-lite | API | 57.3 | 79.6 | 89.0 | | |
| | Qwen3-Embedding-8B | 8B | 56.0 | 78.2 | 88.1 | | |
| | SweRank-Small | 137M | 53.5 | 74.6 | 83.9 | | |
| | [Muninn-small](https://huggingface.co/BrokkAI/Muninn-small) | 47M | 52.3 | 74.6 | 84.7 | | |
| | text-embedding-3-large | API | 51.7 | 74.3 | 85.0 | | |
| | Qwen3-Embedding-0.6B | 0.6B | 50.9 | 72.8 | 83.8 | | |
| | granite-embedding-small-english-r2 (Muninn-small base) | 47M | 47.7 | 69.7 | 80.5 | | |
| ## Other benchmarks | |
| † marks published numbers (SweRank paper for the localization benchmarks; the CoIR | |
| leaderboard and the Qwen3-Embedding paper elsewhere). Unmarked rows are our measurements | |
| on the same protocol as the corresponding published numbers. | |
| **SWE-Bench-Lite localization** — 274 Python issues, function-level accuracy: | |
| | Model | Acc@5 | Acc@10 | | |
| |---|---:|---:| | |
| | **Muninn (346M)** | **73.4** | 79.6 | | |
| | SweRank-Large (7B)† | 71.9 | **82.1** | | |
| | SweRank-Small (137M)† | 63.1 | 74.5 | | |
| | Muninn-small (47M) | 48.5 | 61.0 | | |
| **LocBench** — 560 Python issues, function-level accuracy: | |
| | Model | Acc@10 | Acc@15 | | |
| |---|---:|---:| | |
| | SweRank-Large (7B)† | **63.2** | **67.3** | | |
| | **Muninn (346M)** | 60.2 | 65.7 | | |
| | SweRank-Small (137M)† | 58.6 | 63.4 | | |
| | Muninn-small (47M) | 46.4 | 51.6 | | |
| **CoIR text-to-code** — NDCG@10: | |
| | Model | APPS | CosQA | | |
| |---|---:|---:| | |
| | bge-code-v1 (1.5B)† | **98.1** | **46.7** | | |
| | voyage-code-3 (API)† | 93.6 | 34.5 | | |
| | Qwen3-Embedding-8B† | 91.1 | 38.0 | | |
| | **Muninn (346M)** | 77.4 | 31.3 | | |
| | Qwen3-Embedding-0.6B† | 75.3 | 36.5 | | |
| | Muninn-small (47M) | 12.4 | 35.1 | | |
| **CodeSearchNet** — mean NDCG@10 over six languages (Python, JavaScript, Go, Ruby, Java, | |
| PHP; 1,000 queries per language): | |
| | Model | Mean NDCG@10 | | |
| |---|---:| | |
| | Qwen3-Embedding-8B† | **92.7** | | |
| | Qwen3-Embedding-0.6B† | 91.0 | | |
| | **Muninn (346M)** | 90.1 | | |
| | SweRank-Small (137M) | 87.9 | | |
| | SweRank-Large (7B) | 85.0 | | |
| | Muninn-small (47M) | 77.8 | | |
| ## Languages | |
| C, C++, C#, Go, Java, JavaScript, PHP, Python, Rust, Scala, and TypeScript. | |
| ## License and attribution | |
| Muninn is released under the Apache License 2.0. It is derived from | |
| [`voyageai/voyage-4-nano`](https://huggingface.co/voyageai/voyage-4-nano), also released | |
| under Apache-2.0. See `LICENSE` for the full license text. | |