/ Модель

Характеристики

Контекст
512 токенов
Параметры
50,3 млн
Лицензия
GPL 2.0
Архитектура
bert · dense
Библиотека
sentence-transformers
Опубликована
27 авг 2026

kernel-code-embed

ЭмбеддингиТекст → embedding3 профессии

Компактный BERT-биэнкодер для поиска исходного кода Linux kernel на C по текстовым запросам с выдачей эмбеддингов для сравнения по косинусному сходству.

40скачиваний за 30 дней0лайковвеса обновлены27 авг 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

nethunter2023/kernel-code-embed — биэнкодер на архитектуре BERT для поиска фрагментов исходного кода Linux kernel на языке C по текстовым запросам. Модель разработана для извлечения и сопоставления эмбеддингов запросов и кода; для обоих типов входа используется один энкодер без специальных префиксов. По карточке, модель имеет 42,6 млн параметров, выдаёт 512-мерные L2-нормализованные векторы с mean pooling и использует библиотеку Sentence Transformers. Контекст обучения retrieval-этапа ограничен 320 токенами, хотя архитектура поддерживает до 512; более длинные функции рекомендуется разбивать на части.

Модель рассчитана на поиск функций и фрагментов Linux kernel C по комментариям и запросам на естественном языке. В README приведены результаты на двух тестовых протоколах, включая поиск по индексу из 914 554 фрагментов ядра и сравнение с другими энкодерами. Заявленная специализация узкая: модель не предназначена для общего поиска по тексту, другим языкам программирования или кодовым базам. Наибольшую релевантность ожидают запросы в стиле kernel-doc; на разговорных и неоднозначных запросах качество может снижаться. Лицензия — GPL-2.0.

Сценарии применения

  • поиск функции Linux kernel C по описанию её назначения
  • поиск фрагментов ядра Linux по комментариям kernel-doc
  • индексация кода ядра для семантического поиска
  • ранжирование фрагментов Linux kernel по релевантности текстовому запросу

Ограничения

Модель специализирована на Linux kernel C и не предназначена для других языков, кодовых баз или общего текстового поиска. Retrieval-контекст ограничен 320 токенами, а качество может снижаться на длинных функциях, разговорных запросах и неоднозначных формулировках.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

kernel-code-embed

A 42.6M-parameter bi-encoder for retrieving Linux kernel C from natural-language queries. Queries and code go through the same encoder, with no prefix or instruction prompt.

512-dim output, mean pooling, L2-normalised — score with cosine similarity.

Usage

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("nethunter2023/kernel-code-embed")

query = "how are free pages coalesced into larger blocks"
code = "static inline void __free_one_page(struct page *page, ...) { ... }"

emb = model.encode([query, code], normalize_embeddings=True)
print(emb @ emb.T)          # cosine similarity

Sequence length

max_seq_length is 320, and should not be raised even though max_position_embeddings is 512. Pretraining saw 512 tokens but the retrieval stage trained at 320, so positions 320–511 are undertrained; feeding longer inputs measurably degrades ranking. Chunk longer functions instead.

Results

Two different protocols. Read them separately — the candidate pools differ by two orders of magnitude, so the numbers are not comparable across tables.

1. Open retrieval — the whole kernel

Every .c/.h chunk of Linux v7.1-rc5 as the index (914,554 candidates), N = 400 held-out queries, one correct answer each.

this model+ BM25 fusion
recall@10.81250.9050
recall@50.93750.9725
recall@100.95750.9775
recall@500.98500.9950
MRR0.86820.9374

The model alone ranks the correct function first 81% of the time out of 914,554 candidates (95% CI ±3.8pp at N=400).

The second column is reciprocal-rank fusion of this model with BM25. It is higher, but part of that lift is BM25's, so the 0.8125 figure is the one that belongs to this model.

2. Closed set — against other encoders

N = 2,000 held-out queries, 4,000 candidates, where each distractor is a sibling function from the same source file as the answer.

paramsaccuracy@1NDCG@10
BM25 (lexical)—0.71150.8297
jina-embeddings-v2-base-code161M0.90350.9541
this model42.6M0.92300.9661

Scored with the identical query set, candidate pool and metric code. The general-purpose code embedder was given a 512-token budget — more than this model's 320.

The +2.0pp accuracy@1 margin over jina-embeddings-v2-base-code is significant under a paired McNemar test: p = 0.003, 95% CI on the paired difference +0.7pp to +3.4pp (N = 2,000). A 42.6M domain model edging out a 161M general-purpose one — at 3.8× fewer parameters — is the result worth having.

How the evaluation set was built

This matters for reading the numbers above.

Queries are kernel-doc comments written by kernel developers, not generated by a language model — so they are not distribution-matched to the training data by construction. They are held out from training. The symbol name is stripped from the query: left in, kmalloc_node would appear in both the query and the answer's signature and the task would collapse to identifier matching.

Training used InfoNCE over in-batch negatives (batch size 24, softmax scale 20.0), with hard negatives drawn as sibling functions from the same file.

Limitations

  • Domain-specific. Linux kernel C only. Not a general-purpose code or text embedding model; do not expect transfer to other languages or codebases.
  • Short context — 320 tokens. Long functions must be chunked.
  • kernel-doc phrasing. Queries are developer-written documentation, which is more precise than typical end-user questions. Expect lower accuracy on casual or ambiguous phrasing.
  • Single held-out split, no seed variance reported.

License

GPL-2.0, matching the Linux kernel corpus it was trained on. Whether a GPL training corpus propagates to model weights is legally unsettled; this is the conservative reading, chosen deliberately rather than by default. If you need different terms for commercial use, treat that as an open question to resolve with counsel rather than an answered one.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · sentence-transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
BertModel
Ревизия весов
f3271f7

0 моделей