نِت اَرز · مستندات API هوش مصنوعی
همهٔ مستندات
مدل‌ها و قیمت‌ها مرجع تعاملی دریافت کلید

Embeddings

Embeddings در API هوش مصنوعی نِت اَرز: بردارسازی متن برای جست‌وجوی معنایی و RAG، پارامترها، قیمت‌گذاری و یک نمونهٔ کامل محاسبهٔ شباهت کسینوسی.

base_url: https://netarz.ir/api/ai/v1 به‌روزرسانی: 1405/07/16
POST /api/ai/v1/embeddings نیازمند کلید API

امبدینگ، متن را به برداری از اعداد تبدیل می‌کند که معنای آن را نمایندگی می‌کند؛ پایهٔ جستجوی معنایی، دسته‌بندی، خوشه‌بندی و RAG (پاسخ‌گویی بر اساس اسناد شما). هزینه فقط بر اساس توکن‌های ورودی محاسبه می‌شود و مدل‌های امبدینگ بسیار ارزان‌اند.

درخواست

Python
res = client.embeddings.create(
    model="text-embedding-3-small",
    input=["خرید اکانت ChatGPT Plus", "اشتراک Claude Pro", "شارژ کیف پول"],
)
vectors = [d.embedding for d in res.data]
print(len(vectors), "بردار با", len(vectors[0]), "بُعد —", res.usage.total_tokens, "توکن")
Node.js
const res = await client.embeddings.create({
  model: "text-embedding-3-small",
  input: ["خرید اکانت ChatGPT Plus", "اشتراک Claude Pro", "شارژ کیف پول"],
});
const vectors = res.data.map((d) => d.embedding);
console.log(vectors.length, "بردار —", res.usage.total_tokens, "توکن");
cURL
curl https://netarz.ir/api/ai/v1/embeddings \
  -H "Authorization: Bearer $NETARZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "text-embedding-3-small", "input": ["خرید اکانت ChatGPT Plus", "اشتراک Claude Pro"]}'
پاسخ
{
  "object": "list",
  "data": [
    { "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456, 0.0789, "…"] },
    { "object": "embedding", "index": 1, "embedding": [0.0311, -0.0022, 0.0154, "…"] }
  ],
  "model": "text-embedding-3-small",
  "usage": { "prompt_tokens": 18, "total_tokens": 18 }
}

پارامترها

پارامترتوضیح
model الزامییک مدل از نوع امبدینگ؛ مثلاً text-embedding-3-small، text-embedding-3-large، gemini-embedding-001 یا gemini-embedding-2؛ و از راه OpenRouter مدل‌هایی مثل openrouter/voyageai/voyage-4 و openrouter/qwen/qwen3-embedding-8b. فهرست
input الزامییک رشته یا آرایه‌ای از رشته‌ها (چند متن در یک درخواست ارزان‌تر و سریع‌تر است).
dimensionsکوتاه‌کردن بردار خروجی (در مدل‌های text-embedding-3 و Gemini) برای صرفه‌جویی در فضای ذخیره‌سازی.
encoding_formatfloat (پیش‌فرض) یا base64.

نمونهٔ کامل: جستجوی معنایی + RAG

Python
import numpy as np
from openai import OpenAI

client = OpenAI(base_url="https://netarz.ir/api/ai/v1", api_key="sk-ntz-v1-...")
EMB = "text-embedding-3-small"

# ۱) اسناد خود را یک بار بردار کنید و ذخیره کنید (پایگاه‌دادهٔ برداری، pgvector، یا حتی یک فایل)
docs = [
    "سفارش‌های دیجیتال بلافاصله پس از پرداخت تحویل داده می‌شوند.",
    "کش‌بک هر خرید هفت روز بعد از تکمیل سفارش آزاد می‌شود.",
    "برای خرید سازمانی فاکتور رسمی صادر می‌شود.",
]
doc_vectors = np.array([d.embedding for d in client.embeddings.create(model=EMB, input=docs).data])

def search(question: str, k: int = 2) -> list[str]:
    q = np.array(client.embeddings.create(model=EMB, input=question).data[0].embedding)
    scores = doc_vectors @ q / (np.linalg.norm(doc_vectors, axis=1) * np.linalg.norm(q))   # شباهت کسینوسی
    return [docs[i] for i in scores.argsort()[::-1][:k]]

# ۲) پاسخ را با همان کلید از یک مدل گفت‌وگو بگیرید (RAG)
question = "کش‌بک کی به حسابم می‌آید؟"
context = "\n".join(search(question))
answer = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": f"فقط بر اساس این اطلاعات پاسخ بدهید:\n{context}"},
        {"role": "user", "content": question},
    ],
    max_tokens=150,
)
print(answer.choices[0].message.content)

نکات

  • برای پرسش و اسناد از یک مدل استفاده کنید؛ بردارهای مدل‌های مختلف با هم قابل مقایسه نیستند.
  • حداکثر طول ورودی هر مدل در context_length فهرست مدل‌ها آمده (مثلاً ۸۱۹۱ توکن برای text-embedding-3). متن‌های بلند را تکه‌تکه کنید.
  • تعداد ابعاد بردار در capabilities.dimensions آمده است.
  • برای فارسی، text-embedding-3-large و مدل‌های Gemini Embedding کیفیت بهتری نسبت به text-embedding-ada-002 دارند.