پرش به مطلب اصلی

Rerank

Rerank نتایج اولیه جست‌وجو یا بازیابی را دوباره امتیازدهی می‌کند و موارد مرتبط‌تر را بالاتر می‌آورد. این API معمولاً بعد از Embeddings، جست‌وجوی برداری یا جست‌وجوی کلیدواژه‌ای استفاده می‌شود.

Rerank چه مسئله‌ای را حل می‌کند؟

در بسیاری از سیستم‌های جست‌وجو، مرحله اول تعداد زیادی نتیجه اولیه برمی‌گرداند. این نتایج لزوماً بهترین ترتیب را ندارند. Rerank این کار را انجام می‌دهد:

  1. یک query یا پرسش می‌گیرد.
  2. چند documents یا نتیجه اولیه دریافت می‌کند.
  3. برای هر نتیجه، امتیاز ارتباط محاسبه می‌کند.
  4. نتایج را بر اساس ارتباط واقعی‌تر مرتب می‌کند.

این الگو برای RAG، جست‌وجوی دانش سازمانی، پرسش‌وپاسخ مستندات و مرکز پشتیبانی بسیار کاربردی است.

چه زمانی استفاده کنیم؟

از Rerank استفاده کنید وقتی:

  • مرحله بازیابی اولیه نتیجه‌های زیاد یا نزدیک به هم برمی‌گرداند.
  • کیفیت چند نتیجه اول برای تجربه کاربر بسیار مهم است.
  • متن‌ها فارسی، انگلیسی یا ترکیبی هستند و شباهت برداری به‌تنهایی کافی نیست.
  • می‌خواهید پیش از ارسال متن به مدل پاسخ‌ساز، فقط بهترین بخش‌ها را نگه دارید.

اگر فقط چند سند محدود دارید و ترتیب آن‌ها روشن است، Rerank ممکن است هزینه و زمان اضافی ایجاد کند.

جایگاه در گدارAI

گدارAI از endpoint مستقل Rerank با قرارداد سازگار با Cohere پشتیبانی می‌کند:

POST /v1/rerank

در نسخه فعلی، عبور درخواست برای ارائه‌دهنده cohere و mock پیاده‌سازی شده است. مدل انتخاب‌شده باید در فضای کاری شما با قابلیت rerank مجاز شده باشد؛ اگر مدل یا ارائه‌دهنده این قابلیت را نداشته باشد، درخواست با خطای مناسب رد می‌شود.

ساختار درخواست

import requests

response = requests.post(
"https://YOUR_WORKSPACE.godarai.ir/v1/rerank",
headers={
"Authorization": "Bearer YOUR_GODARAI_TOKEN",
"Content-Type": "application/json",
},
json={
"model": "cohere:default:rerank-multilingual-v3.0",
"query": "تهران پایتخت کدام کشور است؟",
"documents": [
"تهران پایتخت ایران است.",
"آسمان امروز آبی است.",
"مشهد یکی از شهرهای بزرگ ایران است."
],
"top_n": 2
},
timeout=60,
)

response.raise_for_status()
print(response.json())

فیلدهای اصلی:

فیلدوضعیتتوضیح
modelالزامینام مدل یا شناسه مدل مجازی که قابلیت rerank دارد.
queryالزامیپرسش یا عبارت جست‌وجو.
documentsالزامیآرایه‌ای از متن‌ها. هر سند باید رشته غیرخالی باشد.
top_nاختیاریتعداد نتیجه‌های برتر. مقدار آن باید حداقل 1 و حداکثر برابر تعداد اسناد باشد.
max_tokens_per_docاختیاریسقف توکن برای هر سند پیش از رتبه‌بندی.
priorityاختیاریاولویت پردازش در بازه 0 تا 999، سازگار با قرارداد Cohere.

برای حفظ سازگاری و کارایی، در هر درخواست حداکثر 1000 سند ارسال کنید. Rerank فقط برای داده متنی طراحی شده است؛ فایل، تصویر، پیام‌های chat، ابزارها و پارامترهای تولید متن در این endpoint پذیرفته نمی‌شوند.

شکل پاسخ

{
"id": "rerank_123",
"results": [
{
"index": 0,
"relevance_score": 0.98
},
{
"index": 2,
"relevance_score": 0.41
}
]
}

index به جایگاه سند در آرایه ورودی اشاره می‌کند. بنابراین در سرویس خودتان نگاشت بین سند اصلی، شناسه داخلی و نتیجه Rerank را نگه دارید. اگر ارائه‌دهنده مقدارهای تکمیلی مثل meta یا usage برگرداند، گدارAI آن‌ها را در پاسخ حفظ می‌کند.

تفاوت با Embeddings

موضوعEmbeddingsRerank
نقشساخت نمایش برداری متنبازمرتب‌سازی نتایج اولیه
زمان استفادهقبل از جست‌وجو یا هنگام ورود پرسشبعد از بازیابی اولیه
خروجیبردار عددیامتیاز و ترتیب نتایج
هدفپیدا کردن گزینه‌های نزدیکانتخاب دقیق‌تر بین گزینه‌های نزدیک

یک الگوی خوب این است: با Embeddings پنجاه نتیجه نزدیک بگیرید، با Rerank ده نتیجه برتر را انتخاب کنید، سپس فقط چند بخش نهایی را به مدل پاسخ‌ساز بدهید.

نکته‌های آموزشی

  • Rerank جایگزین جست‌وجوی اولیه نیست؛ مکمل آن است.
  • تعداد اسناد ورودی را بی‌دلیل زیاد نکنید، چون هزینه و زمان پاسخ بالا می‌رود.
  • کیفیت را با داده واقعی فارسی خودتان بسنجید؛ رتبه‌بندها روی همه دامنه‌ها یکسان عمل نمی‌کنند.
  • اگر از ارائه‌دهنده‌ای غیر از Cohere استفاده می‌کنید، پیش از اتصال مدل مطمئن شوید آداپتر Rerank آن ارائه‌دهنده در محیط شما فعال شده است.

جمع‌بندی

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