nahj/README-hybrid-pipeline.md

42 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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