Spaces:
Sleeping
Sleeping
| """ | |
| Benchmark Retrieval — Measure retrieval recall and latency. | |
| Usage: python -m scripts.benchmark_retrieval | |
| """ | |
| import asyncio | |
| import time | |
| import os | |
| import sys | |
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| from app.core.retriever import retriever | |
| BENCHMARK_QUERIES = [ | |
| "transformer architecture attention mechanism", | |
| "federated learning privacy preserving", | |
| "graph neural networks molecular", | |
| "reinforcement learning robotics control", | |
| "natural language processing sentiment analysis", | |
| "computer vision object detection YOLO", | |
| "generative adversarial networks image synthesis", | |
| "knowledge graph embedding representation", | |
| "meta-learning few-shot classification", | |
| "neural architecture search automl", | |
| ] | |
| async def main(): | |
| print(f"Benchmarking retrieval with {len(BENCHMARK_QUERIES)} queries...\n") | |
| latencies = [] | |
| for query in BENCHMARK_QUERIES: | |
| # Without reranking | |
| start = time.time() | |
| results = await retriever.retrieve(query, top_k=10, rerank=False) | |
| latency_no_rerank = (time.time() - start) * 1000 | |
| # With reranking | |
| start = time.time() | |
| results_reranked = await retriever.retrieve(query, top_k=10, rerank=True) | |
| latency_reranked = (time.time() - start) * 1000 | |
| print(f" Query: {query[:50]}...") | |
| print(f" No rerank: {len(results)} results in {latency_no_rerank:.0f}ms") | |
| print( | |
| f" Reranked: {len(results_reranked)} results in {latency_reranked:.0f}ms" | |
| ) | |
| latencies.append( | |
| { | |
| "query": query, | |
| "no_rerank_ms": latency_no_rerank, | |
| "reranked_ms": latency_reranked, | |
| "results_count": len(results), | |
| } | |
| ) | |
| avg_no_rerank = sum(entry["no_rerank_ms"] for entry in latencies) / len(latencies) | |
| avg_reranked = sum(entry["reranked_ms"] for entry in latencies) / len(latencies) | |
| print("\n=== Benchmark Summary ===") | |
| print(f" Avg latency (no rerank): {avg_no_rerank:.0f}ms") | |
| print(f" Avg latency (reranked): {avg_reranked:.0f}ms") | |
| print(f" Reranker overhead: {avg_reranked - avg_no_rerank:.0f}ms") | |
| if __name__ == "__main__": | |
| asyncio.run(main()) | |