/ Модель

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

Контекст
32 768 токенов
Параметры
494 млн
Лицензия
Apache 2.0
Архитектура
c2llm · dense
Базовая модель
Qwen2.5-Coder-0.5B-Instruct
Библиотека
transformers
Опубликована
22 дек 2025

C2LLM-0.5B

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

C2LLM-0.5B — дообученная модель для создания эмбеддингов кода, семантического поиска и извлечения кода для RAG.

561скачиваний за 30 дней10лайковвеса обновлены21 янв 2026

Бенчмарки

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

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

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

  • CodeTransOceanContest

    main_score

    Результат

    0,8427

    MTEB

    Публичная таблицадругая ревизия

  • CodeEditSearchRetrieval

    main_score

    Результат

    0,6609

    Общий результат 0,7556Общий результат 0,7536Общий результат 0,7432
    MTEB

    Публичная таблицадругая ревизия

  • CodeTransOceanDL

    main_score

    Результат

    0,3399

    MTEB

    Публичная таблицадругая ревизия

  • CodeSearchNetCCRetrieval

    main_score

    Результат

    0,9593

    Общий результат 0,9759Общий результат 0,9711Общий результат 0,9603
    MTEB

    Публичная таблицадругая ревизия

  • COIRCodeSearchNetRetrieval

    main_score

    Результат

    0,9989

    Общий результат 0,8974Общий результат 0,8657Общий результат 0,845
    MTEB

    Публичная таблицадругая ревизия

  • CodeSearchNetRetrieval

    main_score

    Результат

    0,8746

    Общий результат 0,9673Общий результат 0,907Общий результат 0,8951
    MTEB

    Публичная таблицадругая ревизия

  • CosQA

    main_score

    Результат

    0,383

    MTEB

    Публичная таблицадругая ревизия

  • CodeFeedbackMT

    main_score

    Результат

    0,9229

    MTEB

    Публичная таблицадругая ревизия

  • CorebC2TReranking

    main_score

    Результат

    0,9396

    MTEB

    Публичная таблицадругая ревизия

  • CorebC2TRetrieval

    main_score

    Результат

    0,9276

    MTEB

    Публичная таблицадругая ревизия

  • AppsRetrieval

    main_score

    Результат

    0,6102

    MTEB

    Публичная таблицадругая ревизия

  • StackOverflowQA

    main_score

    Результат

    0,894

    MTEB

    Публичная таблицадругая ревизия

  • CorebC2CRetrieval

    main_score

    Результат

    0,5128

    MTEB

    Публичная таблицадругая ревизия

  • CorebT2CRetrieval

    main_score

    Результат

    0,4319

    MTEB

    Публичная таблицадругая ревизия

  • CorebC2CReranking

    main_score

    Результат

    0,393

    MTEB

    Публичная таблицадругая ревизия

  • CodeFeedbackST

    main_score

    Результат

    0,8863

    MTEB

    Публичная таблицадругая ревизия

  • CorebT2CReranking

    main_score

    Результат

    0,2799

    MTEB

    Публичная таблицадругая ревизия

  • SyntheticText2SQL

    main_score

    Результат

    0,7408

    MTEB

    Публичная таблицадругая ревизия

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

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

C2LLM-0.5B — модель CodeFuse для получения эмбеддингов исходного кода и запросов к нему. Она дообучена на базе Qwen/Qwen2.5-Coder-0.5B-Instruct и использует Pooling by Multi-head Attention (PMA), который помогает выделять важные фрагменты кода при формировании вектора. В репозитории указаны 494 млн параметров, контекст до 32 768 токенов и формат safetensors.

Модель обучена на 3 млн пар «запрос — документ» для поиска кода и поддерживает сценарии Text2Code, Code2Code и Code2Text. Её можно применять для семантического поиска по коду и извлечения фрагментов в системах RAG. Указаны английский и китайский языки; лицензия — Apache-2.0. Качество зависит от соответствия запросов и кода обучающим данным; README не приводит конкретных ограничений или оценки результатов.

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

  • семантический поиск фрагментов кода по текстовому запросу
  • поиск похожего кода по исходному фрагменту
  • поиск кода по описанию на естественном языке
  • поиск текстового объяснения или документации по фрагменту кода
  • извлечение релевантных фрагментов кода для RAG

Ограничения

Результаты зависят от соответствия запросов и исходного кода данным обучения; README не сообщает конкретных ограничений или оценки качества.

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

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

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

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

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

Открыть на Hugging Face

A New Frontier in Code Retrieval via Adaptive Cross-Attention Pooling

Paper | Code

C2LLMs (Code Contrastive Large Language Models) are powerful new models for generating code embeddings, designed to capture the deep semantics of source code.

Key Features

  • Powerful Base Model: Built upon the state-of-the-art Qwen2.5-Coder, inheriting its exceptional code comprehension capabilities.
  • Intelligent Pooling with PMA: Instead of traditional mean pooling or last token pooling, C2LLM uses PMA (Pooling by Multi-head Attention). This allows the model to dynamically focus on the most critical parts of the code, creating a more informative and robust embedding.
  • Trained for Retrieval: C2LLM was fine-tuned on a massive dataset of 3 million query-document pairs, optimizing it for real-world code retrieval and semantic search tasks. Supporting Text2Code/Code2Code/Code2Text tasks.

C2LLM is designed to be a go-to model for tasks like code search and Retrieval-Augmented Generation (RAG). For more details, please see our GitHub repository.

Model Details

How to use

Usage (HuggingFace Transformers)

from transformers import AutoModel, AutoTokenizer
import torch

model_path = "codefuse-ai/C2LLM-0.5B"

# Load the model
model = AutoModel.from_pretrained(model_path, torch_dtype=torch.bfloat16, trust_remote_code=True)

# Prepare your custom instruction
instruction = "xxxxx"

# Prepare the data
sentences = ['''int r = (int) params >> 8 & 0xff;
int p = (int) params & 0xff;

byte[] derived1 = SCrypt.scrypt(passwd.getBytes("UTF-8"), salt, N, r, p, 32);

if (derived0.length != derived1.length) return false;

int result = 0;
for (int i = 0; i < derived0.length; i++) {
result |= derived0[i] ^ derived1[i];
}
return result == 0;
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException("JVM doesn't support UTF-8?");
} catch (GeneralSecurityException e) {
throw new IllegalStateException("JVM doesn't support SHA1PRNG or HMAC_SHA256?");
}
}''',
'''	
}
if (tempFrom > tempTo) {
return new RangeInfo(inclusive ? tempTo : tempTo + 1, tempFrom + 1, true);
}
return new RangeInfo(tempFrom, inclusive ? tempTo + 1 : tempTo, false);
}''']

sentences = [instruction+sentence for sentence in sentences]

# Get the embeddings
embeddings = model.encode(sentences)

Usage (Sentence-Transformers)

from sentence_transformers import SentenceTransformer

# Load the model
model = SentenceTransformer("codefuse-ai/C2LLM-0.5B", trust_remote_code=True, tokenizer_kwargs={"padding_side":"left"})

# Prepare your custom instruction
instruction = "xxxxx"

# Prepare the data
sentences = ['''int r = (int) params >> 8 & 0xff;
int p = (int) params & 0xff;

byte[] derived1 = SCrypt.scrypt(passwd.getBytes("UTF-8"), salt, N, r, p, 32);

if (derived0.length != derived1.length) return false;

int result = 0;
for (int i = 0; i < derived0.length; i++) {
result |= derived0[i] ^ derived1[i];
}
return result == 0;
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException("JVM doesn't support UTF-8?");
} catch (GeneralSecurityException e) {
throw new IllegalStateException("JVM doesn't support SHA1PRNG or HMAC_SHA256?");
}
}''',
'''	
}
if (tempFrom > tempTo) {
return new RangeInfo(inclusive ? tempTo : tempTo + 1, tempFrom + 1, true);
}
return new RangeInfo(tempFrom, inclusive ? tempTo + 1 : tempTo, false);
}''']

sentences = [instruction+sentence for sentence in sentences]

# Get the embeddings
embeddings = model.encode(sentences)

Evaluation (MTEB)

from sentence_transformers import SentenceTransformer
from mteb.models import ModelMeta
from mteb.cache import ResultCache

model_name = "codefuse-ai/C2LLM-0.5B"

# Load the model
model = mteb.get_model(model_name) # if the model is not implemented in MTEB it will be eq. to SentenceTransformer(model_name)

# Select tasks
tasks = mteb.get_tasks(tasks=["AppsRetrieval", "CodeSearchNetCCRetrieval", "CodeEditSearchRetrieval","CodeSearchNetRetrieval","CodeFeedbackMT","CodeFeedbackST","CodeTransOceanContest","CodeTransOceanDL","COIRCodeSearchNetRetrieval","CosQA","StackOverflowQA","SyntheticText2SQL"])

# Cache the result
cache = ResultCache("./c2llm_results")

# Evaluate
results = mteb.evaluate(model, tasks=tasks, cache=cache, encode_kwargs={"batch_size": 16})

Support Us

If you find this project helpful, please give it a star. It means a lot to us!

GitHub stars

Citation

@article{2025C2LLM, title={C2LLM Technical Report: A New Frontier in Code Retrieval via Adaptive Cross-Attention Pooling}, author={Jin Qin and Zihan Liao and Ziyin Zhang and Hang Yu and Peng Di and Rui Wang}, journal = {CoRR}, volume = {abs/2512.21332}, year = {2025}, url = {https://doi.org/10.48550/arXiv.2512.21332}, doi = {10.48550/ARXIV.2512.21332}, eprinttype = {arXiv}, eprint = {2512.21332} }

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

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

GPU в ailist

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

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

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

0 моделей