nahj/README-hybrid-pipeline.md

1.7 KiB
Raw Blame History

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 با ساختار زیر:

[
  {"sentence": "متن جمله ۱", "embedding": [0.1, -0.2, ...]},
  {"sentence": "متن جمله ۲", "embedding": [0.05, 0.33, ...]}
]

نصب

pip install -U sentence-transformers transformers scikit-learn numpy torch

اجرا

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:

python hybrid_retrieval_reranker.py --query "..." --save-json output.json