Instructions to use Dibachain/Diba-Embed with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use Dibachain/Diba-Embed with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("Dibachain/Diba-Embed", trust_remote_code=True) sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] - Notebooks
- Google Colab
- Kaggle
Diba-Embed · دیبا-امبد
A Persian-first text embedding model by Dibachain مدل نمایش برداری متن، فارسیمحور، ساختهی دیباچین
Website · 🤖 Agent · Chat demo (GPU) · Chat demo (CPU) · Diba-Base
English
Diba-Embed is the first text-embedding model from Dibachain and the first embedding model in the Diba family — a Persian-first model that turns Persian and English text into dense vectors, placing similar meanings close together. Built by Dibachain (dibachain.ir) and tuned and packaged for Iranian, Persian-language use cases where most open models fall short.
Use it to build semantic search, retrieval‑augmented generation (RAG), FAQ matching, clustering, deduplication, and reranking — in Persian, in English, and across the two.
What it can do
- Persian semantic search — find the most relevant document for a Persian question, even when the wording differs.
- Retrieval for RAG — retrieve the right passages to ground a chat model such as Diba-Base on your own documents.
- Cross‑lingual matching — a Persian query can find an English passage and vice‑versa.
- Clustering & deduplication — group similar tickets, comments, or products; detect near‑duplicates.
- Reranking — order candidate passages by relevance to a query.
Specifications
| Parameters | ~0.6B |
| Embedding size | 1024 (Matryoshka: truncatable down to 32) |
| Max input length | 32,768 tokens |
| Languages | Multilingual, optimized for Persian + English |
| Weights | ~1.2 GB · runs on CPU |
| Similarity | cosine |
| License | Apache 2.0 |
Persian retrieval benchmark
Measured on 400 Persian question/answer pairs drawn from Diba's own grounded data (Iran history, contemporary topics, and Dibachain company Q/A). Each question must retrieve its correct passage out of the full pool. Greedy, on CPU, no task‑specific training:
| Metric | Score |
|---|---|
| Recall@1 | 82% |
| Recall@3 | 95% |
| MRR | 0.89 |
In 95% of cases the correct passage is among the top three results — enough to drive reliable Persian RAG and search.
Quick start
Diba-Embed ships with the Diba model definition, so pass
trust_remote_code=Truewhen loading.
sentence-transformers (recommended):
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Dibachain/Diba-Embed", trust_remote_code=True)
# queries use the built-in "query" prompt; documents are embedded as-is
queries = ["پایتخت ایران کجاست؟"]
documents = [
"تهران پایتخت و بزرگترین شهر ایران است.",
"اصفهان یکی از شهرهای تاریخی ایران است.",
]
q = model.encode(queries, prompt_name="query", normalize_embeddings=True)
d = model.encode(documents, normalize_embeddings=True)
scores = q @ d.T
print(scores) # highest score points to the matching document
transformers (last-token pooling, for full control):
import torch, torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer
tok = AutoTokenizer.from_pretrained("Dibachain/Diba-Embed", padding_side="left")
model = AutoModel.from_pretrained("Dibachain/Diba-Embed", trust_remote_code=True).eval()
def embed(texts, is_query=False):
if is_query:
texts = [f"Instruct: Given a query, retrieve passages that answer it\nQuery: {t}" for t in texts]
enc = tok(texts, padding=True, truncation=True, max_length=512, return_tensors="pt")
with torch.no_grad():
h = model(**enc).last_hidden_state
lengths = enc["attention_mask"].sum(1) - 1
v = h[torch.arange(h.size(0)), lengths] # last non-pad token
return F.normalize(v, dim=1)
sim = embed(["پایتخت ایران؟"], is_query=True) @ embed(["تهران پایتخت ایران است."]).T
print(sim)
Tip: always add the query instruction to search queries; embed documents without it. Normalize vectors and rank by cosine (dot product of normalized vectors).
Run with llama.cpp (GGUF)
Diba-Embed ships ready-to-run llama.cpp files (GGUF format; the .bin files load directly with -m) for CPU inference with llama.cpp — no Python required.
| File | Size | Best for |
|---|---|---|
diba-embed-q8_0.bin |
~0.6 GB | recommended — near‑full quality |
diba-embed-q4_k_m.bin |
~0.4 GB | smallest, fastest |
diba-embed-f16.bin |
~1.2 GB | full precision |
# start an OpenAI-compatible embeddings server on CPU
llama-server -m diba-embed-q8_0.bin --embedding --pooling last -c 2048 --port 8080
# then request embeddings
curl http://localhost:8080/v1/embeddings -H "Content-Type: application/json" -d '{"input": ["تهران پایتخت ایران است", "capital of Iran"]}'
Direct download: https://huggingface.co/Dibachain/Diba-Embed/resolve/main/diba-embed-q8_0.bin
Intended use and limitations
Diba-Embed is built for search and retrieval, not for generation — it produces vectors, not text. Quality is strongest on general and formal Persian and on the domains in the benchmark above; very specialized or noisy text may need domain adaptation. It reflects biases present in its training data. For generation and chat, use Diba-Base.
فارسی
دیبا-امبد نخستین مدل بردارسازی متن (Text Embedding) شرکت دیباچین و اولین مدل امبدینگ خانوادهی دیبا است — مدلی فارسیمحور که متن فارسی و انگلیسی را به بردارهای عددی تبدیل میکند تا متنهای هممعنا در فضای برداری به هم نزدیک شوند. ساختهی شرکت دیباچین (dibachain.ir) و ویژهی کاربردهای فارسیزبان و ایرانی، جایی که بیشتر مدلهای متنباز ضعیف عمل میکنند.
از آن میتوانید برای جستوجوی معنایی، تولید پاسخ مبتنی بر بازیابی (RAG)، تطبیق پرسشهای پرتکرار، خوشهبندی، حذف موارد تکراری و بازچینش نتایج استفاده کنید؛ به فارسی، به انگلیسی و میان این دو.
چه کارهایی انجام میدهد
- جستوجوی معنایی فارسی: یافتن مرتبطترین سند برای یک پرسش فارسی، حتی وقتی کلمهها فرق دارند.
- بازیابی برای RAG: پیدا کردن بخشهای درست از اسناد شما تا پاسخ یک مدل گفتگو مانند Diba-Base بر پایهی همان اسناد ساخته شود.
- تطبیق میانزبانی: یک پرسش فارسی میتواند سند انگلیسی را پیدا کند و برعکس.
- خوشهبندی و حذف تکراری: گروهبندی تیکتها، نظرها یا محصولات مشابه و تشخیص موارد نزدیک به هم.
- بازچینش نتایج: مرتب کردن بخشهای نامزد بر اساس میزان ارتباط با پرسش.
مشخصات
| تعداد پارامتر | حدود ۰٫۶ میلیارد |
| اندازهی بردار | ۱۰۲۴ (قابل کاهش تا ۳۲ با روش Matryoshka) |
| بیشینهی طول ورودی | ۳۲٬۷۶۸ توکن |
| زبانها | چندزبانه، بهینه برای فارسی و انگلیسی |
| حجم وزنها | حدود ۱٫۲ گیگابایت · قابل اجرا روی CPU |
| سنجهی شباهت | کسینوسی |
| مجوز | Apache 2.0 |
آزمون بازیابی فارسی
روی ۴۰۰ جفت پرسش و پاسخ فارسی از دادهی مستند خود دیبا (تاریخ ایران، موضوعات معاصر و پرسشهای شرکت دیباچین) سنجیده شد. هر پرسش باید پاسخ درست خود را از میان کل مجموعه بازیابی کند. بدون هیچ آموزش اختصاصی و روی CPU:
| معیار | نتیجه |
|---|---|
| Recall@1 | ۸۲٪ |
| Recall@3 | ۹۵٪ |
| MRR | ۰٫۸۹ |
در ۹۵ درصد موارد، پاسخ درست میان سه نتیجهی نخست است؛ برای جستوجو و RAG فارسی قابل اتکاست.
شروع سریع
دیبا-امبد با تعریف مدل دیبا منتشر شده است؛ هنگام بارگذاری
trust_remote_code=Trueرا بدهید.
با sentence-transformers (پیشنهادی):
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Dibachain/Diba-Embed", trust_remote_code=True)
queries = ["پایتخت ایران کجاست؟"]
documents = [
"تهران پایتخت و بزرگترین شهر ایران است.",
"اصفهان یکی از شهرهای تاریخی ایران است.",
]
q = model.encode(queries, prompt_name="query", normalize_embeddings=True)
d = model.encode(documents, normalize_embeddings=True)
print(q @ d.T) # بیشترین امتیاز به سند درست اشاره میکند
نکته: برای پرسشهای جستوجو حتماً از دستور «query» استفاده کنید و اسناد را بدون آن بردار کنید. بردارها را نرمال کنید و بر اساس شباهت کسینوسی مرتب نمایید.
اجرا با llama.cpp (GGUF)
دیبا-امبد فایلهای GGUF آماده برای اجرا روی CPU با llama.cpp دارد؛ بدون نیاز به پایتون.
| فایل | حجم | مناسبِ |
|---|---|---|
diba-embed-q8_0.bin |
حدود ۰٫۶ گیگابایت | پیشنهادی — کیفیت نزدیک به کامل |
diba-embed-q4_k_m.bin |
حدود ۰٫۴ گیگابایت | کوچکترین و سریعترین |
diba-embed-f16.bin |
حدود ۱٫۲ گیگابایت | دقت کامل |
# اجرای سرور سازگار با OpenAI روی CPU
llama-server -m diba-embed-q8_0.bin --embedding --pooling last -c 2048 --port 8080
لینک مستقیم دانلود: https://huggingface.co/Dibachain/Diba-Embed/resolve/main/diba-embed-q8_0.bin
کاربرد و محدودیتها
دیبا-امبد برای جستوجو و بازیابی ساخته شده، نه برای تولید متن؛ خروجی آن بردار است، نه نوشته. بهترین کیفیت روی فارسی عمومی و رسمی و روی حوزههای آزمون بالاست؛ متنهای بسیار تخصصی یا پرنویز ممکن است به تنظیم اختصاصی نیاز داشته باشند. مدل سوگیریهای موجود در دادهی خود را بازتاب میدهد. برای تولید و گفتگو از Diba-Base استفاده کنید.
- Downloads last month
- 566