Download run_benchmark.py from WalidAlHassan/embeddingModelRnD: direct link, hf CLI and curl.
- Browser
- Download file 2.25 kB
-
https://huggingface.co/WalidAlHassan/embeddingModelRnD/resolve/main/run_benchmark.py
- Command line
-
hf download hf://WalidAlHassan/embeddingModelRnD/run_benchmark.py
-
curl -L -o run_benchmark.py https://huggingface.co/WalidAlHassan/embeddingModelRnD/resolve/main/run_benchmark.py
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() | |