Clean up RAG evaluator logging and remove excessive separator lines
• Remove excessive separator lines • Add RAGAS concurrency comment • Fix output buffer timing
This commit is contained in:
parent
4e4b8d7e25
commit
6d61f70b92
1 changed files with 8 additions and 29 deletions
|
|
@ -185,13 +185,9 @@ class RAGEvaluator:
|
||||||
|
|
||||||
def _display_configuration(self):
|
def _display_configuration(self):
|
||||||
"""Display all evaluation configuration settings"""
|
"""Display all evaluation configuration settings"""
|
||||||
logger.info("")
|
logger.info("EVALUATION CONFIGURATION")
|
||||||
logger.info("%s", "=" * 70)
|
|
||||||
logger.info("🔧 EVALUATION CONFIGURATION")
|
|
||||||
logger.info("%s", "=" * 70)
|
|
||||||
|
|
||||||
logger.info("")
|
logger.info(" Evaluation Models:")
|
||||||
logger.info("Evaluation Models:")
|
|
||||||
logger.info(" • LLM Model: %s", self.eval_model)
|
logger.info(" • LLM Model: %s", self.eval_model)
|
||||||
logger.info(" • Embedding Model: %s", self.eval_embedding_model)
|
logger.info(" • Embedding Model: %s", self.eval_embedding_model)
|
||||||
if self.eval_base_url:
|
if self.eval_base_url:
|
||||||
|
|
@ -200,29 +196,18 @@ class RAGEvaluator:
|
||||||
else:
|
else:
|
||||||
logger.info(" • Endpoint: OpenAI Official API")
|
logger.info(" • Endpoint: OpenAI Official API")
|
||||||
|
|
||||||
logger.info("")
|
logger.info(" Concurrency & Rate Limiting:")
|
||||||
logger.info("Concurrency & Rate Limiting:")
|
|
||||||
max_concurrent = int(os.getenv("EVAL_MAX_CONCURRENT", "1"))
|
|
||||||
query_top_k = int(os.getenv("EVAL_QUERY_TOP_K", "10"))
|
query_top_k = int(os.getenv("EVAL_QUERY_TOP_K", "10"))
|
||||||
logger.info(
|
|
||||||
" • Max Concurrent: %s %s",
|
|
||||||
max_concurrent,
|
|
||||||
"(serial evaluation)" if max_concurrent == 1 else "parallel evaluations",
|
|
||||||
)
|
|
||||||
logger.info(" • Query Top-K: %s Entities/Relations", query_top_k)
|
logger.info(" • Query Top-K: %s Entities/Relations", query_top_k)
|
||||||
logger.info(" • LLM Max Retries: %s", self.eval_max_retries)
|
logger.info(" • LLM Max Retries: %s", self.eval_max_retries)
|
||||||
logger.info(" • LLM Timeout: %s seconds", self.eval_timeout)
|
logger.info(" • LLM Timeout: %s seconds", self.eval_timeout)
|
||||||
|
|
||||||
logger.info("")
|
logger.info(" Test Configuration:")
|
||||||
logger.info("Test Configuration:")
|
|
||||||
logger.info(" • Total Test Cases: %s", len(self.test_cases))
|
logger.info(" • Total Test Cases: %s", len(self.test_cases))
|
||||||
logger.info(" • Test Dataset: %s", self.test_dataset_path.name)
|
logger.info(" • Test Dataset: %s", self.test_dataset_path.name)
|
||||||
logger.info(" • LightRAG API: %s", self.rag_api_url)
|
logger.info(" • LightRAG API: %s", self.rag_api_url)
|
||||||
logger.info(" • Results Directory: %s", self.results_dir.name)
|
logger.info(" • Results Directory: %s", self.results_dir.name)
|
||||||
|
|
||||||
logger.info("%s", "=" * 70)
|
|
||||||
logger.info("")
|
|
||||||
|
|
||||||
def _load_test_dataset(self) -> List[Dict[str, str]]:
|
def _load_test_dataset(self) -> List[Dict[str, str]]:
|
||||||
"""Load test cases from JSON file"""
|
"""Load test cases from JSON file"""
|
||||||
if not self.test_dataset_path.exists():
|
if not self.test_dataset_path.exists():
|
||||||
|
|
@ -395,6 +380,8 @@ class RAGEvaluator:
|
||||||
)
|
)
|
||||||
|
|
||||||
# Run RAGAS evaluation
|
# Run RAGAS evaluation
|
||||||
|
# IMPORTANT: Create fresh metric instances for each evaluation to avoid
|
||||||
|
# concurrent state conflicts when multiple tasks run in parallel
|
||||||
try:
|
try:
|
||||||
eval_results = evaluate(
|
eval_results = evaluate(
|
||||||
dataset=eval_dataset,
|
dataset=eval_dataset,
|
||||||
|
|
@ -478,7 +465,6 @@ class RAGEvaluator:
|
||||||
logger.info("🚀 Starting RAGAS Evaluation of Portfolio RAG System")
|
logger.info("🚀 Starting RAGAS Evaluation of Portfolio RAG System")
|
||||||
logger.info("🔧 Concurrent evaluations: %s", max_async)
|
logger.info("🔧 Concurrent evaluations: %s", max_async)
|
||||||
logger.info("%s", "=" * 70)
|
logger.info("%s", "=" * 70)
|
||||||
logger.info("")
|
|
||||||
|
|
||||||
# Create semaphore to limit concurrent evaluations
|
# Create semaphore to limit concurrent evaluations
|
||||||
semaphore = asyncio.Semaphore(max_async)
|
semaphore = asyncio.Semaphore(max_async)
|
||||||
|
|
@ -770,12 +756,11 @@ class RAGEvaluator:
|
||||||
|
|
||||||
# Add a small delay to ensure all buffered output is completely written
|
# Add a small delay to ensure all buffered output is completely written
|
||||||
await asyncio.sleep(0.2)
|
await asyncio.sleep(0.2)
|
||||||
|
|
||||||
# Flush all output buffers to ensure RAGAS progress bars are fully displayed
|
# Flush all output buffers to ensure RAGAS progress bars are fully displayed
|
||||||
# before showing our results table
|
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
sys.stderr.flush()
|
sys.stderr.flush()
|
||||||
# Make sure the progress bar line ends before logging summary output
|
|
||||||
|
await asyncio.sleep(0.2)
|
||||||
sys.stderr.write("\n")
|
sys.stderr.write("\n")
|
||||||
sys.stderr.flush()
|
sys.stderr.flush()
|
||||||
|
|
||||||
|
|
@ -867,15 +852,9 @@ async def main():
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
rag_api_url = sys.argv[1]
|
rag_api_url = sys.argv[1]
|
||||||
|
|
||||||
logger.info("")
|
|
||||||
logger.info("%s", "=" * 70)
|
logger.info("%s", "=" * 70)
|
||||||
logger.info("🔍 RAGAS Evaluation - Using Real LightRAG API")
|
logger.info("🔍 RAGAS Evaluation - Using Real LightRAG API")
|
||||||
logger.info("%s", "=" * 70)
|
logger.info("%s", "=" * 70)
|
||||||
if rag_api_url:
|
|
||||||
logger.info("📡 RAG API URL: %s", rag_api_url)
|
|
||||||
else:
|
|
||||||
logger.info("📡 RAG API URL: http://localhost:9621 (default)")
|
|
||||||
logger.info("%s", "=" * 70)
|
|
||||||
|
|
||||||
evaluator = RAGEvaluator(rag_api_url=rag_api_url)
|
evaluator = RAGEvaluator(rag_api_url=rag_api_url)
|
||||||
await evaluator.run()
|
await evaluator.run()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue