Rerank
Rerank نتایج اولیه جستوجو یا بازیابی را دوباره امتیازدهی میکند و موارد مرتبطتر را بالاتر میآورد. این API معمولاً بعد از Embeddings، جستوجوی برداری یا جستوجوی کلیدواژهای استفاده میشود.
Rerank چه مسئلهای را حل میکند؟
در بسیاری از سیستمهای جستوجو، مرحله اول تعداد زیادی نتیجه اولیه برمیگرداند. این نتایج لزوماً بهترین ترتیب را ندارند. Rerank این کار را انجام میدهد:
- یک
queryیا پرسش میگیرد. - چند
documentsیا نتیجه اولیه دریافت میکند. - برای هر نتیجه، امتیاز ارتباط محاسبه میکند.
- نتایج را بر اساس ارتباط واقعیتر مرتب میکند.
این الگو برای RAG، جستوجوی دانش سازمانی، پرسشوپاسخ مستندات و مرکز پشتیبانی بسیار کاربردی است.
چه زمانی استفاده کنیم؟
از Rerank استفاده کنید وقتی:
- مرحله بازیابی اولیه نتیجههای زیاد یا نزدیک به هم برمیگرداند.
- کیفیت چند نتیجه اول برای تجربه کاربر بسیار مهم است.
- متنها فارسی، انگلیسی یا ترکیبی هستند و شباهت برداری بهتنهایی کافی نیست.
- میخواهید پیش از ارسال متن به مدل پاسخساز، فقط بهترین بخشها را نگه دارید.
اگر فقط چند سند محدود دارید و ترتیب آنها روشن است، Rerank ممکن است هزینه و زمان اضافی ایجاد کند.
جایگاه در گدارAI
گدارAI از endpoint مستقل Rerank با قرارداد سازگار با Cohere پشتیبانی میکند:
POST /v1/rerank
در نسخه فعلی، عبور درخواست برای ارائهدهنده cohere و mock پیادهسازی شده است. مدل انتخابشده باید در فضای کاری شما با قابلیت rerank مجاز شده باشد؛ اگر مدل یا ارائهدهنده این قابلیت را نداشته باشد، درخواست با خطای مناسب رد میشود.
ساختار درخواست
- Python
- NodeJS
- REST API
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())
const response = await fetch("https://YOUR_WORKSPACE.godarai.ir/v1/rerank", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_GODARAI_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
"model": "cohere:default:rerank-multilingual-v3.0",
"query": "تهران پایتخت کدام کشور است؟",
"documents": [
"تهران پایتخت ایران است.",
"آسمان امروز آبی است.",
"مشهد یکی از شهرهای بزرگ ایران است."
],
"top_n": 2
}),
});
if (!response.ok) {
throw new Error(`Request failed with status ${response.status}`);
}
const data = await response.json();
console.log(data);
curl --request POST "https://YOUR_WORKSPACE.godarai.ir/v1/rerank" \
--header "Authorization: Bearer YOUR_GODARAI_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"model": "cohere:default:rerank-multilingual-v3.0",
"query": "تهران پایتخت کدام کشور است؟",
"documents": [
"تهران پایتخت ایران است.",
"آسمان امروز آبی است.",
"مشهد یکی از شهرهای بزرگ ایران است."
],
"top_n": 2
}'
فیلدهای اصلی:
| فیلد | وضعیت | توضیح |
|---|---|---|
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
| موضوع | Embeddings | Rerank |
|---|---|---|
| نقش | ساخت نمایش برداری متن | بازمرتبسازی نتایج اولیه |
| زمان استفاده | قبل از جستوجو یا هنگام ورود پرسش | بعد از بازیابی اولیه |
| خروجی | بردار عددی | امتیاز و ترتیب نتایج |
| هدف | پیدا کردن گزینههای نزدیک | انتخاب دقیقتر بین گزینههای نزدیک |
یک الگوی خوب این است: با Embeddings پنجاه نتیجه نزدیک بگیرید، با Rerank ده نتیجه برتر را انتخاب کنید، سپس فقط چند بخش نهایی را به مدل پاسخساز بدهید.
نکتههای آموزشی
- Rerank جایگزین جستوجوی اولیه نیست؛ مکمل آن است.
- تعداد اسناد ورودی را بیدلیل زیاد نکنید، چون هزینه و زمان پاسخ بالا میرود.
- کیفیت را با داده واقعی فارسی خودتان بسنجید؛ رتبهبندها روی همه دامنهها یکسان عمل نمیکنند.
- اگر از ارائهدهندهای غیر از Cohere استفاده میکنید، پیش از اتصال مدل مطمئن شوید آداپتر Rerank آن ارائهدهنده در محیط شما فعال شده است.
جمعبندی
Rerank برای بالا بردن دقت نتایج جستوجو و RAG استفاده میشود. آن را بعد از بازیابی اولیه قرار دهید، تعداد گزینهها را کنترل کنید و همیشه کیفیت را با پرسشها و اسناد واقعی محصول خود بسنجید.