Instructions to use AhmedBarka/qwen3-embedding-0.6b-arabic-ecom-phase2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use AhmedBarka/qwen3-embedding-0.6b-arabic-ecom-phase2 with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("AhmedBarka/qwen3-embedding-0.6b-arabic-ecom-phase2") sentences = [ "هذا شخص سعيد", "هذا كلب سعيد", "هذا شخص سعيد جدا", "اليوم هو يوم مشمس" ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [4, 4] - Notebooks
- Google Colab
- Kaggle
Qwen3-Embedding-0.6B, Arabic e-commerce, phase 2
A LoRA fine-tune of Qwen/Qwen3-Embedding-0.6B,
merged, for dense retrieval over Arabic e-commerce product names. It is the
second of two fine-tuning phases and is the dense component of a system built
for the PrestoAI Arabic E-Commerce Search challenge.
Qwen3Model, hidden size 1024, bfloat16.
Use it without the query prompt
This is the one thing worth knowing before using this checkpoint.
config_sentence_transformers.json declares a query instruction prompt, and
default_prompt_name is null, so model.encode(texts) applies no prompt. For
this checkpoint that default is correct and should be left alone. It was
fine-tuned in the no-prompt regime and adapted to it, so re-adding the
instruction at inference costs accuracy:
| checkpoint | prompt | dev nDCG@10 | short queries (<=2 tokens) |
|---|---|---|---|
| this one | none | 0.4968 | 0.3812 |
| this one | query | 0.4807 | 0.3608 |
base prestoai/qwen3-embedding-0.6b-arabic-ecom |
none | 0.4291 | 0.2730 |
base prestoai/qwen3-embedding-0.6b-arabic-ecom |
query | 0.4620 | 0.3414 |
The base checkpoint wants the opposite: it gains +0.068 on short queries from the prompt it declares but never applies by default. The two checkpoints therefore take opposite settings, and getting it backwards is silent, because nothing raises and the output still looks plausible.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("AhmedBarka/qwen3-embedding-0.6b-arabic-ecom-phase2")
model.max_seq_length = 128
# No prompt, for both queries and documents.
q = model.encode(["شاي احمر"], normalize_embeddings=True)
d = model.encode(["شاي احمر - تونسي"], normalize_embeddings=True)
What it is good at, and what it is not
Measured on the challenge's pooled benchmark, this model's top-50 has slightly better recall of judged-positive products than the lexical search engine's top-50 (0.6613 against 0.6557). It genuinely finds the right products.
It is a worse orderer than the lexical engine wherever that engine matched strongly, and using it to reorder strong lexical matches measurably loses score. In the system it was built for it is confined to generating candidates the lexical engine missed, and to supplying similarity features to a learned ranker. That placement, rather than the model's own strength, is what made it useful.
Provenance
Trained on the challenge's own training pairs, which are published as
prestoai/arabic-ecom-data.
A second training phase over phase 1 was worth +0.011 dev nDCG while recall@10
stayed flat (0.4271 to 0.4274), so this checkpoint is close to saturated for
this data.
Full method, measurements and the failures behind them: https://github.com/ahmedbarka8/AI-Arabic-E-Commerce-Search-
- Downloads last month
- 40