ในงานนี้ เราขอแนะนำโมเดลการฝังที่ล้ำสมัยสองโมเดลสำหรับผลิตภัณฑ์อีคอมเมิร์ซ: Marqo-Ecommerce-B และ Marqo-Ecommerce-L
ผลการเปรียบเทียบแสดงให้เห็นว่าโมเดล Marqo-Ecommerce มีประสิทธิภาพเหนือกว่าโมเดลอื่นๆ ทั้งหมดในเมตริกต่างๆ อย่างสม่ำเสมอ โดยเฉพาะอย่างยิ่ง marqo-ecommerce-L
มีการปรับปรุง MRR โดยเฉลี่ย 17.6% และ 20.5% ใน nDCG@10 เมื่อเปรียบเทียบกับรุ่นโอเพ่นซอร์สที่ดีที่สุดในปัจจุบัน ViT-SO400M-14-SigLIP
ในงานทั้งสามงานใน marqo-ecommerce-hard
ชุดข้อมูล marqo-ecommerce-hard
เมื่อเปรียบเทียบกับโมเดลส่วนตัวที่ดีที่สุด Amazon-Titan-Multimodal
เราเห็นการปรับปรุงโดยเฉลี่ย 38.9% ใน MRR และ 45.1% ใน nDCG@10 ในงานทั้งสามงาน และ 35.9% ในการ Recall ในงาน Text-to-Image ใน ชุดข้อมูล marqo-ecommerce-hard
ผลลัพธ์การเปรียบเทียบเพิ่มเติมสามารถดูได้ด้านล่าง
เนื้อหาที่เผยแพร่ :
โมเดลการฝัง | #พารามส์ (ม.) | มิติ | กอดใบหน้า | ดาวน์โหลด .pt | การอนุมานข้อความชุดเดียว (A10g) | การอนุมานรูปภาพชุดเดียว (A10g) |
---|---|---|---|---|---|---|
Marqo-อีคอมเมิร์ซ-B | 203 | 768 | Marqo/marqo-ecommerce-embeddings-B | ลิงค์ | 5.1 มิลลิวินาที | 5.7 มิลลิวินาที |
Marqo-อีคอมเมิร์ซ-L | 652 | 1,024 | 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]
หากต้องการโหลดโมเดลใน Transformers โปรดดูด้านล่าง โมเดลดังกล่าวโฮสต์อยู่บน 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-Text2Image
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-Category2Image
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. การเรียกค้นผลิตภัณฑ์ Amazon-Category2Image
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,000 เทียบกับ 4M) และออกแบบมาเพื่อรองรับโมเดลที่มีอัตราจำกัด โดยเฉพาะ Cohere-Embeddings-v3 และ GCP-Vertex (โดยจำกัดที่ 0.66 rps และ 2 rps ตามลำดับ) ชุดข้อมูล "ยาก" แสดงถึงความท้าทายที่แท้จริง เนื่องจากมีรายการผลิตภัณฑ์อีคอมเมิร์ซสี่ล้านรายการ และเป็นตัวแทนของสถานการณ์การค้นหาอีคอมเมิร์ซในโลกแห่งความเป็นจริงมากกว่า
ภายในทั้งสองสถานการณ์นี้ แบบจำลองได้รับการเปรียบเทียบกับงานที่แตกต่างกันสามงาน:
Marqo-Ecommerce-Hard พิจารณาการประเมินที่ครอบคลุมซึ่งดำเนินการโดยใช้ชุดข้อมูลทั้งหมด 4 ล้านชุด โดยเน้นประสิทธิภาพที่แข็งแกร่งของแบบจำลองของเราในบริบทโลกแห่งความเป็นจริง
การดึงข้อมูล GoogleShopping-Text2Image
โมเดลการฝัง | แผนที่ | ร@10 | รพ | nDCG@10 |
---|---|---|---|---|
Marqo-อีคอมเมิร์ซ-L | 0.682 | 0.878 | 0.683 | 0.726 |
Marqo-อีคอมเมิร์ซ-B | 0.623 | 0.832 | 0.624 | 0.668 |
ViT-SO400M-14-SigLip | 0.573 | 0.763 | 0.574 | 0.613 |
ViT-L-16-SigLip | 0.540 | 0.722 | 0.540 | 0.577 |
ViT-B-16-SigLip | 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 | รพ | nDCG@10 |
---|---|---|---|---|
Marqo-อีคอมเมิร์ซ-L | 0.463 | 0.652 | 0.822 | 0.666 |
Marqo-อีคอมเมิร์ซ-B | 0.423 | 0.629 | 0.810 | 0.644 |
ViT-SO400M-14-SigLip | 0.352 | 0.516 | 0.707 | 0.529 |
ViT-L-16-SigLip | 0.324 | 0.497 | 0.687 | 0.509 |
ViT-B-16-SigLip | 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-Text2Image
โมเดลการฝัง | แผนที่ | ร@10 | รพ | nDCG@10 |
---|---|---|---|---|
Marqo-อีคอมเมิร์ซ-L | 0.658 | 0.854 | 0.663 | 0.703 |
Marqo-อีคอมเมิร์ซ-B | 0.592 | 0.795 | 0.597 | 0.637 |
ViT-SO400M-14-SigLip | 0.560 | 0.742 | 0.564 | 0.599 |
ViT-L-16-SigLip | 0.544 | 0.715 | 0.548 | 0.580 |
ViT-B-16-SigLip | 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,000 รายการจากชุดข้อมูลทั้งสองชุด นอกเหนือจากโมเดลที่มีการเปรียบเทียบประสิทธิภาพไว้ข้างต้นแล้ว การวัดประสิทธิภาพเหล่านี้ยังรวมถึง Cohere-embedding-v3 และ GCP-Vertex อีกด้วย
การดึงข้อมูล GoogleShopping-Text2Image
โมเดลการฝัง | แผนที่ | ร@10 | รพ | nDCG@10 |
---|---|---|---|---|
Marqo-อีคอมเมิร์ซ-L | 0.879 | 0.971 | 0.879 | 0.901 |
Marqo-อีคอมเมิร์ซ-B | 0.842 | 0.961 | 0.842 | 0.871 |
ViT-SO400M-14-SigLip | 0.792 | 0.935 | 0.792 | 0.825 |
GCP-เวอร์เท็กซ์ | 0.740 | 0.910 | 0.740 | 0.779 |
ViT-L-16-SigLip | 0.754 | 0.907 | 0.754 | 0.789 |
ViT-B-16-SigLip | 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 |
การเชื่อมโยงกันฝัง-v3 | 0.358 | 0.515 | 0.358 | 0.389 |
GoogleShopping-Category2การดึงรูปภาพ
โมเดลการฝัง | แผนที่ | ป@10 | รพ | nDCG@10 |
---|---|---|---|---|
Marqo-อีคอมเมิร์ซ-L | 0.515 | 0.358 | 0.764 | 0.590 |
Marqo-อีคอมเมิร์ซ-B | 0.479 | 0.336 | 0.744 | 0.558 |
ViT-SO400M-14-SigLip | 0.423 | 0.302 | 0.644 | 0.487 |
GCP-เวอร์เท็กซ์ | 0.417 | 0.298 | 0.636 | 0.481 |
ViT-L-16-SigLip | 0.392 | 0.281 | 0.627 | 0.458 |
ViT-B-16-SigLip | 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 |
การเชื่อมโยงกันฝัง-v3 | 0.136 | 0.110 | 0.315 | 0.178 |
การดึงข้อมูล AmazonProducts-Text2Image
โมเดลการฝัง | แผนที่ | ร@10 | รพ | nDCG@10 |
---|---|---|---|---|
Marqo-อีคอมเมิร์ซ-L | 0.92 | 0.978 | 0.928 | 0.940 |
Marqo-อีคอมเมิร์ซ-B | 0.897 | 0.967 | 0.897 | 0.914 |
ViT-SO400M-14-SigLip | 0.860 | 0.954 | 0.860 | 0.882 |
ViT-L-16-SigLip | 0.842 | 0.940 | 0.842 | 0.865 |
GCP-เวอร์เท็กซ์ | 0.808 | 0.933 | 0.808 | 0.837 |
ViT-B-16-SigLip | 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 |
การเชื่อมโยงกันฝัง-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}
}