rag-hackathon-app / quick_integration_test.py
Navaneethakrishnan
Add RAG system without large files
09281fe
Raw
History Blame Contribute Delete
8.04 kB
"""
Quick Interactive Test for Integrated System
Test the complete workflow with user input
"""
def quick_test():
"""Quick interactive test of the integrated system"""
print("๐Ÿš€ Quick Integration Test")
print("="*40)
print("Testing: Query Parser โ†’ Vector Database โ†’ LLM Reasoning")
print("="*40)
try:
# Import components
print("๐Ÿ”„ Loading components...")
from query_parser import AdvancedQueryParser
from vector_database import VectorDatabase
from llm_reasoning import AdvancedLLMReasoning
print("โœ… Components loaded")
# Initialize components
print("๐Ÿ”„ Initializing...")
query_parser = AdvancedQueryParser(use_gpu=False)
vector_db = VectorDatabase(
collection_name="quick_test",
embedding_model="all-MiniLM-L6-v2",
persist_directory="./quick_test_db"
)
# Try to initialize LLM reasoning
try:
reasoning_engine = AdvancedLLMReasoning(use_gpu=False)
llm_available = True
print("โœ… LLM reasoning available")
except Exception as e:
print(f"โš ๏ธ LLM reasoning not available: {e}")
llm_available = False
# Add sample documents
print("๐Ÿ”„ Adding sample documents...")
sample_docs = [
{
'content': 'Heart surgery is covered up to $50,000 with 90-day waiting period.',
'metadata': {'source': 'policy.pdf', 'section': 'coverage'}
},
{
'content': 'Dental treatment is covered up to $2,000 annually with 6-month waiting period.',
'metadata': {'source': 'policy.pdf', 'section': 'dental'}
},
{
'content': 'To file a claim, you need: claim form, medical certificate, receipts, and bills.',
'metadata': {'source': 'claims.pdf', 'section': 'procedures'}
}
]
for doc in sample_docs:
vector_db.add_document(doc['content'], doc['metadata'])
print(f"โœ… Added {len(sample_docs)} documents")
# Interactive testing
print("\n๐ŸŽฏ Interactive Testing")
print("="*30)
print("Enter your queries (type 'quit' to exit):")
while True:
try:
query = input("\nโ“ Your query: ").strip()
if query.lower() in ['quit', 'exit', 'q']:
break
if not query:
continue
print(f"\n๐Ÿ”„ Processing: {query}")
print("-" * 40)
# Step 1: Parse query
print("๐Ÿ“ Step 1: Parsing query...")
parsed = query_parser.parse_query(query)
print(f" Type: {parsed.query_type}")
print(f" Intent: {parsed.intent}")
print(f" Confidence: {parsed.confidence:.2f}")
if parsed.entities:
print(f" Entities: {list(parsed.entities.keys())}")
# Step 2: Search vector database
print("\n๐Ÿ” Step 2: Searching documents...")
results = vector_db.search_documents(query, n_results=2, similarity_threshold=0.3)
print(f" Found {len(results)} relevant documents")
for i, result in enumerate(results, 1):
print(f" {i}. Similarity: {result.get('similarity_score', 0):.2f}")
print(f" Source: {result.get('source_file', 'Unknown')}")
print(f" Content: {result.get('content', '')[:100]}...")
# Step 3: LLM reasoning
if llm_available and results:
print("\n๐Ÿง  Step 3: LLM reasoning...")
reasoning_result = reasoning_engine.analyze_query(
query=query,
context=results,
query_type=parsed.query_type
)
print(f" Decision: {reasoning_result.decision.upper()}")
print(f" Confidence: {reasoning_result.confidence_score:.2f}")
print(f" Justification: {reasoning_result.justification[:150]}...")
if reasoning_result.amount:
print(f" Amount: ${reasoning_result.amount:,.2f}")
if reasoning_result.waiting_period:
print(f" Waiting Period: {reasoning_result.waiting_period}")
# Show explanation
print(f"\n๐Ÿ“‹ Explanation:")
explanation = reasoning_engine.explain_decision(reasoning_result)
print(explanation)
else:
print("\n๐Ÿง  Step 3: LLM reasoning (not available)")
print(" Query parsing and document search completed successfully")
print("\n" + "="*50)
except KeyboardInterrupt:
print("\n\n๐Ÿ‘‹ Goodbye!")
break
except Exception as e:
print(f"\nโŒ Error processing query: {e}")
# Cleanup
print("\n๐Ÿงน Cleaning up...")
import shutil
if os.path.exists("./quick_test_db"):
shutil.rmtree("./quick_test_db")
print("โœ… Cleanup completed")
print("\n๐ŸŽ‰ Quick test completed!")
except Exception as e:
print(f"โŒ Quick test failed: {e}")
import traceback
traceback.print_exc()
def test_specific_query(query_text):
"""Test a specific query"""
print(f"๐Ÿงช Testing specific query: {query_text}")
print("="*50)
try:
from query_parser import AdvancedQueryParser
from vector_database import VectorDatabase
from llm_reasoning import AdvancedLLMReasoning
# Initialize
query_parser = AdvancedQueryParser(use_gpu=False)
vector_db = VectorDatabase(
collection_name="specific_test",
embedding_model="all-MiniLM-L6-v2",
persist_directory="./specific_test_db"
)
# Add test document
vector_db.add_document(
"Heart surgery is covered up to $50,000 with 90-day waiting period.",
{'source': 'test.pdf', 'type': 'coverage'}
)
# Process query
parsed = query_parser.parse_query(query_text)
results = vector_db.search_documents(query_text, n_results=1)
print(f"Query Type: {parsed.query_type}")
print(f"Confidence: {parsed.confidence:.2f}")
print(f"Search Results: {len(results)}")
if results:
print(f"Best Match: {results[0].get('content', '')[:100]}...")
# Try LLM reasoning
try:
reasoning_engine = AdvancedLLMReasoning(use_gpu=False)
reasoning_result = reasoning_engine.analyze_query(
query_text, results, parsed.query_type
)
print(f"LLM Decision: {reasoning_result.decision}")
print(f"LLM Confidence: {reasoning_result.confidence_score:.2f}")
except Exception as e:
print(f"LLM Reasoning failed: {e}")
# Cleanup
import shutil
if os.path.exists("./specific_test_db"):
shutil.rmtree("./specific_test_db")
except Exception as e:
print(f"โŒ Test failed: {e}")
if __name__ == "__main__":
import os
import sys
# Check if specific query provided
if len(sys.argv) > 1:
query = " ".join(sys.argv[1:])
test_specific_query(query)
else:
quick_test()