""" Quick test script for the enhanced dual RAG pipeline Run this to verify everything works before starting the full app """ import sys from pathlib import Path # Add src to path sys.path.insert(0, str(Path(__file__).parent)) from src.core.dual_rag_pipeline import DualStoreRAGPipeline from src.utils.logger import get_logger logger = get_logger(__name__) def main(): print("="*70) print("๐Ÿงช TESTING ENHANCED RAG PIPELINE") print("="*70) print() # Initialize pipeline print("๐Ÿ“ฆ Initializing pipeline...") pipeline = DualStoreRAGPipeline() print("โœ… Pipeline initialized\n") # Build vector stores print("๐Ÿ—๏ธ Building vector stores...") print(" - Loading support_faqs.csv") print(" - Loading HuggingFace dataset (this may take a minute...)") print(" - Loading support_tickets.csv") print() try: pipeline.build_vector_stores() print("โœ… Vector stores built successfully\n") except Exception as e: print(f"โŒ Error building stores: {e}") return # Save stores print("๐Ÿ’พ Saving vector stores to disk...") pipeline.save_vector_stores() print("โœ… Stores saved to data/vector_stores/\n") # Test queries test_queries = [ ("How do I track my order?", "FAQ"), ("My refund hasn't arrived after 12 days", "Ticket"), ("I can't log into my account", "Ticket/FAQ"), ] print("="*70) print("๐Ÿ” RUNNING TEST QUERIES") print("="*70) print() for i, (query, expected_source) in enumerate(test_queries, 1): print(f"\n{'โ”€'*70}") print(f"Test {i}/3: {query}") print(f"Expected Source: {expected_source}") print(f"{'โ”€'*70}") try: result = pipeline.query(query, top_k=3) # Display results print(f"\n๐Ÿ“ Answer:") print(f" {result['answer'][:200]}{'...' if len(result['answer']) > 200 else ''}") print(f"\n๐Ÿ“Š Metadata:") print(f" Source: {result['source']}") print(f" Confidence: {result['confidence']:.2%}") print(f" Latency: {result['latency_ms']:.0f}ms") print(f"\n๐Ÿ“š Top Citation:") if result['citations']: top = result['citations'][0] print(f" [{top['source']}] {top['category']}") print(f" Similarity: {top['similarity']:.2%}") if 'resolution_status' in top: print(f" Status: {top['resolution_status']}") # Verify if result['source'] in expected_source: print(f"\nโœ… PASS: Correct source ({result['source']})") else: print(f"\nโš ๏ธ NOTE: Got {result['source']}, expected {expected_source}") print(f" (This is OK if confidence was close to threshold)") except Exception as e: print(f"\nโŒ ERROR: {e}") import traceback traceback.print_exc() print(f"\n{'='*70}") print("โœ… ALL TESTS COMPLETED!") print("="*70) print() print("๐Ÿ“ Files created:") print(" โœ… data/vector_stores/faq_store/") print(" โœ… data/vector_stores/ticket_store/") print(" โœ… logs/query_logs.jsonl") print() print("๐Ÿš€ Ready to start the application:") print(" 1. Terminal 1: .\\start_api_enhanced.ps1") print(" 2. Terminal 2: .\\start_frontend_enhanced.ps1") print(" 3. Browser: http://localhost:8501") print() if __name__ == "__main__": main()