embeddingModelRnD / run_benchmark.py
WalidAlHassan's picture
initial
6ced533
Raw History Blame Contribute Delete
2.25 kB
#!/usr/bin/env python3
"""CLI entry point for the embedding-model retrieval benchmark.
Usage:
python run_benchmark.py # run the full model set from benchmark/config.py
python run_benchmark.py --models kazalbrur/bangla-embed-e5-small-banglish
python run_benchmark.py --query-modes raw # skip the normalized-query experiment
"""
import argparse
from benchmark import config, report
from benchmark.runner import run_benchmark
def parse_args():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument(
"--models",
nargs="+",
default=None,
help="HF model names to benchmark (default: full set in benchmark/config.py)",
)
parser.add_argument(
"--query-modes",
nargs="+",
choices=["raw", "normalized"],
default=None,
help="Which query variants to evaluate (default: both)",
)
parser.add_argument(
"--retrieval-modes",
nargs="+",
choices=["dense", "hybrid"],
default=None,
help="dense (embedding-only) and/or hybrid (BM25 + dense RRF) (default: both)",
)
parser.add_argument("--top-k", type=int, default=None)
parser.add_argument("--results-dir", default=config.RESULTS_DIR)
return parser.parse_args()
def main():
args = parse_args()
models = None
if args.models:
by_name = {m["name"]: m for m in config.MODELS}
models = []
for name in args.models:
if name not in by_name:
raise SystemExit(
f"Unknown model '{name}'. Add it to benchmark/config.py MODELS first "
f"(with its query/passage prefix)."
)
models.append(by_name[name])
results = run_benchmark(
models=models,
query_modes=args.query_modes,
retrieval_modes=args.retrieval_modes,
top_k=args.top_k,
)
paths = report.save_results(results, args.results_dir)
print("\n" + "=" * 100)
print("SUMMARY")
print("=" * 100)
report.print_summary_table(results)
print("\nSaved:")
for label, path in paths.items():
print(f" {label}: {path}")
if __name__ == "__main__":
main()