/ Модель

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

Контекст
131 072 токена
Параметры
1,5 млрд
Размер весов
6,2 ГБ
Лицензия
Своя лицензия
Архитектура
qwen2 · dense
Базовая модель
gte-Qwen2-1.5B-instruct
Библиотека
sentence-transformers
Опубликована
19 фев 2025

Qodo-Embed-1-1.5B

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

Модель Qodo для создания эмбеддингов кода и поиска соответствий между запросами на естественном языке и кодом.

17 766скачиваний за 30 дней65лайковвеса обновлены24 фев 2025

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

  • COIRCodeSearchNetRetrieval

    main_score

    Результат

    0,7907

    Общий результат 0,9354Общий результат 0,846Общий результат 0,8309
    MTEB

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

  • AppsRetrieval

    main_score

    Результат

    0,4327

    MTEB

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

  • CodeSearchNetCCRetrieval

    main_score

    Результат

    0,8355

    Общий результат 0,8855Общий результат 0,8524Общий результат 0,8454
    MTEB

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

  • StackOverflowQA

    main_score

    Результат

    0,9192

    MTEB

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

  • SyntheticText2SQL

    main_score

    Результат

    0,7004

    MTEB

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

  • CodeFeedbackMT

    main_score

    Результат

    0,7452

    MTEB

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

  • CosQA

    main_score

    Результат

    0,3446

    MTEB

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

  • CodeFeedbackST

    main_score

    Результат

    0,8381

    MTEB

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

  • CodeTransOceanContest

    main_score

    Результат

    0,8684

    MTEB

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

  • CodeTransOceanDL

    main_score

    Результат

    0,3392

    MTEB

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

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

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

Qodo-Embed-1-1.5B — модель эмбеддингов кода от Qodo, дообученная на базе Alibaba-NLP/gte-Qwen2-1.5B-instruct. Она предназначена для поиска по коду и сопоставления естественно-языковых запросов с фрагментами кода, а также для поиска похожих фрагментов кода. Такие эмбеддинги можно использовать в поисковых системах и RAG-сценариях для разработки ПО. Архитектура — плотная Qwen2, размер — 1,5 млрд параметров; модель выдаёт векторы размерности 1536. По данным метаданных, нативный контекст составляет 131 072 токена; README указывает максимум входа 32 тыс. токенов.

README сообщает о поддержке Python, C++, C#, Go, Java, JavaScript, PHP, Ruby и TypeScript. Метаданные указывают библиотеку Sentence Transformers и формат safetensors. Разработчики заявляют о высоких результатах на COIR и MTEB, однако это заявление карточки модели и не гарантирует качества на конкретном наборе данных. Лицензия обозначена как other, поэтому условия использования следует сверить с лицензией репозитория.

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

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

Ограничения

README указывает максимум 32 тыс. токенов на вход, тогда как метаданные сообщают о нативном контексте 131 072 токена; практический лимит может зависеть от используемого способа запуска. Лицензия помечена как other, поэтому условия использования нужно уточнить в репозитории.

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

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

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

Также подходит для

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

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

Открыть на Hugging Face

Qodo-Embed-1

Qodo-Embed-1 is a state-of-the-art code embedding model designed for retrieval tasks in the software development domain. It is offered in two sizes: lite (1.5B) and medium (7B). The model is optimized for natural language-to-code and code-to-code retrieval, making it highly effective for applications such as code search, retrieval-augmented generation (RAG), and contextual understanding of programming languages. This model outperforms all previous open-source models in the COIR and MTEB leaderboards, achieving best-in-class performance with a significantly smaller size compared to competing models.

Languages Supported:

  • Python
  • C++
  • C#
  • Go
  • Java
  • Javascript
  • PHP
  • Ruby
  • Typescript

Model Information

  • Model Size: 1.5B
  • Embedding Dimension: 1536
  • Max Input Tokens: 32k

Requirements

transformers>=4.39.2
flash_attn>=2.5.6

Usage

Sentence Transformers

from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("Qodo/Qodo-Embed-1-1.5B")
# Run inference
sentences = [
    'accumulator = sum(item.value for item in collection)',  
    'result = reduce(lambda acc, curr: acc + curr.amount, data, 0)',  
    'matrix = [[i*j for j in range(n)] for i in range(n)]'  
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1536]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]

Transformers

import torch
import torch.nn.functional as F

from torch import Tensor
from transformers import AutoTokenizer, AutoModel


def last_token_pool(last_hidden_states: Tensor,
                 attention_mask: Tensor) -> Tensor:
    left_padding = (attention_mask[:, -1].sum() == attention_mask.shape[0])
    if left_padding:
        return last_hidden_states[:, -1]
    else:
        sequence_lengths = attention_mask.sum(dim=1) - 1
        batch_size = last_hidden_states.shape[0]
        return last_hidden_states[torch.arange(batch_size, device=last_hidden_states.device), sequence_lengths]


# Each query must come with a one-sentence instruction that describes the task
queries = [
      'how to handle memory efficient data streaming',
      'implement binary tree traversal'
  ]

documents = [
        """def process_in_chunks():
            buffer = deque(maxlen=1000)
            for record in source_iterator:
                buffer.append(transform(record))
                if len(buffer) >= 1000:
                    yield from buffer
                    buffer.clear()""",

        """class LazyLoader:
            def __init__(self, source):
                self.generator = iter(source)
                self._cache = []

            def next_batch(self, size=100):
                while len(self._cache) < size:
                    try:
                        self._cache.append(next(self.generator))
                    except StopIteration:
                        break
                return self._cache.pop(0) if self._cache else None""",

        """def dfs_recursive(root):
            if not root:
                return []
            stack = []
            stack.extend(dfs_recursive(root.right))
            stack.append(root.val)
            stack.extend(dfs_recursive(root.left))
            return stack"""
    ]
input_texts = queries + documents

tokenizer = AutoTokenizer.from_pretrained('Qodo/Qodo-Embed-1-1.5B', trust_remote_code=True)
model = AutoModel.from_pretrained('Qodo/Qodo-Embed-1-1.5B', trust_remote_code=True)

max_length = 8192

# Tokenize the input texts
batch_dict = tokenizer(input_texts, max_length=max_length, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
embeddings = last_token_pool(outputs.last_hidden_state, batch_dict['attention_mask'])

# normalize embeddings
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())

License

QodoAI-Open-RAIL-M

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
Qwen2Model
Ревизия весов
00edfbb

0 моделей