/ Модель

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

Контекст
8 194 токена
Параметры
659 млн
Размер весов
1 МБ
Лицензия
MIT
Архитектура
xlm-roberta · dense
Опубликована
16 фев 2024

bge-m3-onnx

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

ONNX-модель BGE-M3 для построения плотных, разреженных и ColBERT-представлений текста в задачах семантического и гибридного поиска.

812скачиваний за 30 дней34лайкавеса обновлены16 фев 2024

Бенчмарки

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

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

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

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

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

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

aapot/bge-m3-onnx — это ONNX-конверсия модели BGE-M3, первоначально разработанной BAAI, подготовленная с использованием HF Optimum для запуска через ONNX Runtime. Модель основана на архитектуре XLM-RoBERTa, содержит около 658,7 млн параметров и поддерживает контекст до 8194 токенов.

Модель предназначена для построения векторных представлений текста в задачах семантического поиска и сопоставления текстов. Она одновременно формирует плотные embedding-векторы, разреженные лексические представления и ColBERT-представления для много-векторного взаимодействия. Плотные и ColBERT-представления нормализованы аналогично стандартному поведению библиотеки FlagEmbedding. Граф модели оптимизирован на уровне O2, что рассчитано на эффективное выполнение в ONNX Runtime.

Модель подходит для семантического поиска, гибридного поиска, ранжирования документов и поиска похожих текстов. Для токенизации можно использовать Transformers, а для инференса — ONNX Runtime. Модель распространяется по лицензии MIT. Она генерирует embedding-представления, а не готовый текст, поэтому не предназначена для диалоговой генерации или прямого ответа на вопросы.

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

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

Ограничения

Модель формирует embedding-представления и не предназначена для генерации текста или прямого ответа на вопросы. Поддерживаемые естественные языки в предоставленных данных не указаны.

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

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

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

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

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

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

Открыть на Hugging Face

BGE-M3 converted to ONNX weights with HF Optimum, to be compatible, for example, with ONNX Runtime.

This ONNX model outputs dense, sparse and ColBERT embedding representations all at once. The output is a list of numpy arrays in previously mentioned order of representations.

Note: dense and ColBERT embeddings are normalized like the default behavior in the original FlagEmbedding library, if you want unnormalized outputs you can modify the code in bgem3_model.py and re-run the ONNX export with export_onnx.py script.

This ONNX model also has "O2" level graph optimizations applied, you can read more about optimization levels here. If you want ONNX model with different optimization or without optimizations, you can re-run the ONNX export script export_onnx.py with appropriate optimization argument.

Usage with ONNX Runtime (Python)

If you haven't already, you can install the ONNX Runtime Python library with pip:

pip install onnxruntime==1.17.0

For tokenization, you can for example use HF Transformers by installing it with pip:

pip install transformers==4.37.2

Clone this repository with Git LFS to get the ONNX model files.

You can then use the model to compute embeddings, as follows:

import onnxruntime as ort
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("BAAI/bge-m3")
ort_session = ort.InferenceSession("model.onnx")

inputs = tokenizer("BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.", padding="longest", return_tensors="np")
inputs_onnx = {k: ort.OrtValue.ortvalue_from_numpy(v) for k, v in inputs.items()}

outputs = ort_session.run(None, inputs_onnx)

Note: you can use following sparse token weight processor from FlagEmbedding to get same the output for the sparse representation from the ONNX model:

from collections import defaultdict


def process_token_weights(token_weights: np.ndarray, input_ids: list):
    # conver to dict
    result = defaultdict(int)
    unused_tokens = set(
        [
            tokenizer.cls_token_id,
            tokenizer.eos_token_id,
            tokenizer.pad_token_id,
            tokenizer.unk_token_id,
        ]
    )
    for w, idx in zip(token_weights, input_ids):
        if idx not in unused_tokens and w > 0:
            idx = str(idx)
            # w = int(w)
            if w > result[idx]:
                result[idx] = w
    return result


token_weights = outputs[1].squeeze(-1)
lexical_weights = list(
    map(process_token_weights, token_weights, inputs["input_ids"].tolist())
)

Export ONNX weights

You can export ONNX weights with the provided custom BGE-M3 PyTorch model bgem3_model.py file and with the provided export_onnx.py ONNX weight export script which leverages HF Optimum. If needed, you can modify the bgem3_model.py model configuration to for example remove embedding normalization or to not output all three embedding representations. If you modify the number of output representations, you need to also modify the ONNX output config BGEM3OnnxConfig in export_onnx.py.

First, install needed Python requirements as follows:

pip install -r requirements.txt

Then you can export ONNX weights as follows:

python export_onnx.py --output . --opset 17 --device cpu --optimize O2

You can read more about the optional optimization levels here

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

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

GPU в ailist

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

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

В репозитории нет весов в формате PyTorch/safetensors.

Класс архитектуры
XLMRobertaModel
Ревизия весов
76a6033

0 моделей