В этой работе мы представляем две современные модели внедрения продуктов электронной коммерции: Marqo-Ecommerce-B и Marqo-Ecommerce-L.
Результаты сравнительного анализа показывают, что модели Marqo-Ecommerce неизменно превосходят все другие модели по различным показателям. В частности, marqo-ecommerce-L
достиг среднего улучшения MRR на 17,6% и nDCG@10 на 20,5% по сравнению с лучшей на данный момент моделью с открытым исходным кодом ViT-SO400M-14-SigLIP
по всем трем задачам в marqo-ecommerce-hard
набор данных. По сравнению с лучшей частной моделью Amazon-Titan-Multimodal
мы увидели среднее улучшение MRR на 38,9% и nDCG@10 на 45,1% во всех трех задачах, а также на 35,9% в Recall для задач преобразования текста в изображение в набор данных marqo-ecommerce-hard
.
Дополнительные результаты сравнительного анализа можно найти ниже.
Выпущенный контент :
Встраивание модели | #Параметры (м) | Измерение | ОбниматьЛицо | Скачать .pt | Однопакетный вывод текста (A10g) | Вывод однопакетного изображения (A10g) |
---|---|---|---|---|---|---|
Марко-Электронная коммерция-B | 203 | 768 | Marqo/marqo-ecommerce-embeddings-B | связь | 5,1 мс | 5,7 мс |
Марко-Электронная коммерция-L | 652 | 1024 | Marqo/marqo-ecommerce-embeddings-L | связь | 10,3 мс | 11,0 мс |
Чтобы загрузить модели в OpenCLIP, см. ниже. Модели размещаются на Hugging Face и загружаются с помощью OpenCLIP. Вы также можете найти этот код внутри run_models.py
.
pip install open_clip_torch
from PIL import Image
import open_clip
import requests
import torch
# Specify model from Hugging Face Hub
model_name = 'hf-hub:Marqo/marqo-ecommerce-embeddings-L'
model , preprocess_train , preprocess_val = open_clip . create_model_and_transforms ( model_name )
tokenizer = open_clip . get_tokenizer ( model_name )
# Preprocess the image and tokenize text inputs
# Load an example image from a URL
img = Image . open ( requests . get ( 'https://raw.githubusercontent.com/marqo-ai/marqo-ecommerce-embeddings/refs/heads/main/images/dining-chairs.png' , stream = True ). raw )
image = preprocess_val ( img ). unsqueeze ( 0 )
text = tokenizer ([ "dining chairs" , "a laptop" , "toothbrushes" ])
# Perform inference
with torch . no_grad (), torch . cuda . amp . autocast ():
image_features = model . encode_image ( image , normalize = True )
text_features = model . encode_text ( text , normalize = True )
# Calculate similarity probabilities
text_probs = ( 100.0 * image_features @ text_features . T ). softmax ( dim = - 1 )
# Display the label probabilities
print ( "Label probs:" , text_probs )
# [1.0000e+00, 8.3131e-12, 5.2173e-12]
О том, как загрузить модели в Трансформеры, смотрите ниже. Модели размещаются на Hugging Face и загружаются с помощью Transformers.
from transformers import AutoModel , AutoProcessor
import torch
from PIL import Image
import requests
model_name = 'Marqo/marqo-ecommerce-embeddings-L'
# model_name = 'Marqo/marqo-ecommerce-embeddings-B'
model = AutoModel . from_pretrained ( model_name , trust_remote_code = True )
processor = AutoProcessor . from_pretrained ( model_name , trust_remote_code = True )
img = Image . open ( requests . get ( 'https://raw.githubusercontent.com/marqo-ai/marqo-ecommerce-embeddings/refs/heads/main/images/dining-chairs.png' , stream = True ). raw ). convert ( "RGB" )
image = [ img ]
text = [ "dining chairs" , "a laptop" , "toothbrushes" ]
processed = processor ( text = text , images = image , padding = 'max_length' , return_tensors = "pt" )
processor . image_processor . do_rescale = False
with torch . no_grad ():
image_features = model . get_image_features ( processed [ 'pixel_values' ], normalize = True )
text_features = model . get_text_features ( processed [ 'input_ids' ], normalize = True )
text_probs = ( 100 * image_features @ text_features . T ). softmax ( dim = - 1 )
print ( text_probs )
# [1.0000e+00, 8.3131e-12, 5.2173e-12]
Для оценки используется обобщенное контрастное обучение (GCL). Следующий код также можно найти в scripts
.
git clone https://github.com/marqo-ai/GCL
Установите пакеты, необходимые для GCL.
1. GoogleShopping-Text2Поиск изображений.
cd ./GCL
MODEL=hf-hub:Marqo/marqo-ecommerce-B
outdir=MarqoModels/GE/marqo-ecommerce-B/gs-title2image
mkdir -p $outdir
hfdataset=Marqo/google-shopping-general-eval
python evals/eval_hf_datasets_v1.py
--model_name $MODEL
--hf-dataset $hfdataset
--output-dir $outdir
--batch-size 1024
--num_workers 8
--left-key "['title']"
--right-key "['image']"
--img-or-txt "[['txt'], ['img']]"
--left-weight "[1]"
--right-weight "[1]"
--run-queries-cpu
--top-q 4000
--doc-id-key item_ID
--context-length "[[64], [0]]"
2. GoogleShopping-Category2Извлечение изображения.
cd ./GCL
MODEL=hf-hub:Marqo/marqo-ecommerce-B
outdir=MarqoModels/GE/marqo-ecommerce-B/gs-cat2image
mkdir -p $outdir
hfdataset=Marqo/google-shopping-general-eval
python evals/eval_hf_datasets_v1.py
--model_name $MODEL
--hf-dataset $hfdataset
--output-dir $outdir
--batch-size 1024
--num_workers 8
--left-key "['query']"
--right-key "['image']"
--img-or-txt "[['txt'], ['img']]"
--left-weight "[1]"
--right-weight "[1]"
--run-queries-cpu
--top-q 4000
--doc-id-key item_ID
--context-length "[[64], [0]]"
3. AmazonProducts-Category2Извлечение изображения.
cd ./GCL
MODEL=hf-hub:Marqo/marqo-ecommerce-B
outdir=MarqoModels/GE/marqo-ecommerce-B/ap-title2image
mkdir -p $outdir
hfdataset=Marqo/amazon-products-eval
python evals/eval_hf_datasets_v1.py
--model_name $MODEL
--hf-dataset $hfdataset
--output-dir $outdir
--batch-size 1024
--num_workers 8
--left-key "['title']"
--right-key "['image']"
--img-or-txt "[['txt'], ['img']]"
--left-weight "[1]"
--right-weight "[1]"
--run-queries-cpu
--top-q 4000
--doc-id-key item_ID
--context-length "[[64], [0]]"
Наш процесс сравнительного анализа был разделен на два отдельных режима, каждый из которых использовал разные наборы данных о списках продуктов электронной коммерции: marqo-ecommerce-hard и marqo-ecommerce-easy. Оба набора данных содержали изображения продуктов и текст и отличались только размером. «Простой» набор данных примерно в 10–30 раз меньше (200 тыс. по сравнению с 4 млн продуктов) и предназначен для работы с моделями с ограниченной скоростью, в частности Cohere-Embeddings-v3 и GCP-Vertex (с ограничениями 0,66 об/с и 2 об/с соответственно). «Жесткий» набор данных представляет собой настоящую проблему, поскольку он содержит четыре миллиона списков продуктов электронной коммерции и более репрезентативен для реальных сценариев поиска в электронной коммерции.
В рамках обоих этих сценариев модели сравнивались с тремя различными задачами:
Marqo-Ecommerce-Hard изучает комплексную оценку, проведенную с использованием всего 4-миллионного набора данных, подчеркивая надежную работу наших моделей в реальном контексте.
GoogleShopping-Text2Поиск изображения.
Встраивание модели | карта | Р@10 | МРР | нДЦГ@10 |
---|---|---|---|---|
Марко-Электронная коммерция-L | 0,682 | 0,878 | 0,683 | 0,726 |
Марко-Электронная коммерция-B | 0,623 | 0,832 | 0,624 | 0,668 |
ВИТ-СО400М-14-СигЛип | 0,573 | 0,763 | 0,574 | 0,613 |
ВиТ-Л-16-СигЛип | 0,540 | 0,722 | 0,540 | 0,577 |
ВИТ-Б-16-СигЛип | 0,476 | 0,660 | 0,477 | 0,513 |
Amazon-Titan-MultiModal | 0,475 | 0,648 | 0,475 | 0,509 |
Джина-V1-КЛИП | 0,285 | 0,402 | 0,285 | 0,306 |
GoogleShopping-Category2Поиск изображения.
Встраивание модели | карта | П@10 | МРР | нДЦГ@10 |
---|---|---|---|---|
Марко-Электронная коммерция-L | 0,463 | 0,652 | 0,822 | 0,666 |
Марко-Электронная коммерция-B | 0,423 | 0,629 | 0,810 | 0,644 |
ВИТ-СО400М-14-СигЛип | 0,352 | 0,516 | 0,707 | 0,529 |
ВиТ-Л-16-СигЛип | 0,324 | 0,497 | 0,687 | 0,509 |
ВИТ-Б-16-СигЛип | 0,277 | 0,458 | 0,660 | 0,473 |
Amazon-Titan-MultiModal | 0,246 | 0,429 | 0,642 | 0,446 |
Джина-V1-КЛИП | 0,123 | 0,275 | 0,504 | 0,294 |
AmazonProducts-Text2Получение изображения.
Встраивание модели | карта | Р@10 | МРР | нДЦГ@10 |
---|---|---|---|---|
Марко-Электронная коммерция-L | 0,658 | 0,854 | 0,663 | 0,703 |
Марко-Электронная коммерция-B | 0,592 | 0,795 | 0,597 | 0,637 |
ВИТ-СО400М-14-СигЛип | 0,560 | 0,742 | 0,564 | 0,599 |
ВиТ-Л-16-СигЛип | 0,544 | 0,715 | 0,548 | 0,580 |
ВИТ-Б-16-СигЛип | 0,480 | 0,650 | 0,484 | 0,515 |
Amazon-Titan-MultiModal | 0,456 | 0,627 | 0,457 | 0,491 |
Джина-V1-КЛИП | 0,265 | 0,378 | 0,266 | 0,285 |
Как уже упоминалось, наш процесс сравнительного анализа был разделен на два отдельных сценария: marqo-ecommerce-hard и marqo-ecommerce-easy. В этом разделе рассматривается последний вариант, корпус которого в 10–30 раз меньше и был разработан для моделей с ограниченной скоростью. Мы рассмотрим комплексную оценку, проведенную с использованием полных 200 тысяч продуктов в двух наборах данных. В дополнение к моделям, уже протестированным выше, эти тесты также включают Cohere-embedding-v3 и GCP-Vertex.
GoogleShopping-Text2Получение изображения.
Встраивание модели | карта | Р@10 | МРР | нДЦГ@10 |
---|---|---|---|---|
Марко-Электронная коммерция-L | 0,879 | 0,971 | 0,879 | 0,901 |
Марко-Электронная коммерция-B | 0,842 | 0,961 | 0,842 | 0,871 |
ВИТ-СО400М-14-СигЛип | 0,792 | 0,935 | 0,792 | 0,825 |
GCP-Вертекс | 0,740 | 0,910 | 0,740 | 0,779 |
ВиТ-Л-16-СигЛип | 0,754 | 0,907 | 0,754 | 0,789 |
ВИТ-Б-16-СигЛип | 0,701 | 0,870 | 0,701 | 0,739 |
Amazon-Titan-MultiModal | 0,694 | 0,868 | 0,693 | 0,733 |
Джина-V1-КЛИП | 0,480 | 0,638 | 0,480 | 0,511 |
Cohere-embedding-v3 | 0,358 | 0,515 | 0,358 | 0,389 |
GoogleShopping-Category2Поиск изображения.
Встраивание модели | карта | П@10 | МРР | нДЦГ@10 |
---|---|---|---|---|
Марко-Электронная коммерция-L | 0,515 | 0,358 | 0,764 | 0,590 |
Марко-Электронная коммерция-B | 0,479 | 0,336 | 0,744 | 0,558 |
ВИТ-СО400М-14-СигЛип | 0,423 | 0,302 | 0,644 | 0,487 |
GCP-Вертекс | 0,417 | 0,298 | 0,636 | 0,481 |
ВиТ-Л-16-СигЛип | 0,392 | 0,281 | 0,627 | 0,458 |
ВИТ-Б-16-СигЛип | 0,347 | 0,252 | 0,594 | 0,414 |
Amazon-Titan-MultiModal | 0,308 | 0,231 | 0,558 | 0,377 |
Джина-V1-КЛИП | 0,175 | 0,122 | 0,369 | 0,229 |
Cohere-embedding-v3 | 0,136 | 0,110 | 0,315 | 0,178 |
AmazonProducts-Text2Получение изображения.
Встраивание модели | карта | Р@10 | МРР | нДЦГ@10 |
---|---|---|---|---|
Марко-Электронная коммерция-L | 0,92 | 0,978 | 0,928 | 0,940 |
Марко-Электронная коммерция-B | 0,897 | 0,967 | 0,897 | 0,914 |
ВИТ-СО400М-14-СигЛип | 0,860 | 0,954 | 0,860 | 0,882 |
ВиТ-Л-16-СигЛип | 0,842 | 0,940 | 0,842 | 0,865 |
GCP-Вертекс | 0,808 | 0,933 | 0,808 | 0,837 |
ВИТ-Б-16-СигЛип | 0,797 | 0,917 | 0,797 | 0,825 |
Amazon-Titan-MultiModal | 0,762 | 0,889 | 0,763 | 0,791 |
Джина-V1-КЛИП | 0,530 | 0,699 | 0,530 | 0,565 |
Cohere-embedding-v3 | 0,433 | 0,597 | 0,433 | 0,465 |
@software{zhu2024marqoecommembed_2024,
author = {Tianyu Zhu and and Jesse Clark},
month = oct,
title = {{Marqo Ecommerce Embeddings - Foundation Model for Product Embeddings}},
url = {https://github.com/marqo-ai/marqo-ecommerce-embeddings/},
version = {1.0.0},
year = {2024}
}