42 lines
1.7 KiB
Markdown
42 lines
1.7 KiB
Markdown
# Hybrid Retrieval + Reranker (Persian-friendly)
|
||
|
||
این پایپلاین یک روش هیبریدی برای بازیابی و بازرتبهبندی نتایج است:
|
||
- Dense Retrieval با `sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2`
|
||
- Sparse Retrieval با TF-IDF (الگوی توکنسازی سازگار با فارسی)
|
||
- Fusion بر اساس وزندهی امتیازها (`--dense-alpha`)
|
||
- Re-ranking با Cross-Encoder: `BAAI/bge-reranker-v2-m3`
|
||
|
||
## دادهٔ ورودی
|
||
فایل `./data/sentences_vector.json` با ساختار زیر:
|
||
```json
|
||
[
|
||
{"sentence": "متن جمله ۱", "embedding": [0.1, -0.2, ...]},
|
||
{"sentence": "متن جمله ۲", "embedding": [0.05, 0.33, ...]}
|
||
]
|
||
```
|
||
|
||
## نصب
|
||
```bash
|
||
pip install -U sentence-transformers transformers scikit-learn numpy torch
|
||
```
|
||
|
||
## اجرا
|
||
```bash
|
||
python hybrid_retrieval_reranker.py --query "بهترین راه موفقیت چیست؟" --topk-dense 50 --topk-sparse 50 --pre-rerank-k 50 --final-k 5
|
||
```
|
||
|
||
### آرگومانها
|
||
- `--query` : پرسش کاربر
|
||
- `--data` : مسیر فایل داده (پیشفرض: `./data/sentences_vector.json`)
|
||
- `--topk-dense` ، `--topk-sparse` : تعداد نتایج اولیه از هر روش
|
||
- `--pre-rerank-k` : تعداد کاندیدهای ورودی به ریرنکر
|
||
- `--final-k` : تعداد نتایج نهایی
|
||
- `--dense-alpha` : وزن امتیاز Dense در مرحله Fusion (۰ تا ۱)
|
||
- `--device` : `cuda` یا `cpu` (در صورت عدم تعیین، خودکار)
|
||
|
||
## خروجی
|
||
نتایج در ترمینال چاپ میشود. برای ذخیرهٔ JSON:
|
||
```bash
|
||
python hybrid_retrieval_reranker.py --query "..." --save-json output.json
|
||
```
|