# 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 ```