The AutoRAG pipeline now implements two complementary RAG approaches that are evaluated head-to-head to determine the optimal strategy for different use cases.
graph TD
A[Q&A Matrix Generation] --> B[Q&A Pair Selection]
B --> C[Dual Vector Store Builder]
C --> D1[Standard RAG<br/>Answer Embeddings Only]
C --> D2[Adaptive RAG<br/>Q+A Combined Embeddings]
D1 --> E1[Standard CPU Index]
D1 --> E2[Standard GPU Index]
D2 --> E3[Adaptive CPU Index]
D2 --> E4[Adaptive GPU Index]
E1 --> F1[Standard RAG Evaluation]
E2 --> F1
E3 --> F2[Adaptive RAG Evaluation]
E4 --> F2
F1 --> G[RAG Comparison Analysis]
F2 --> G
G --> H[Winner Selection for Training]
G --> I[Deployment Recommendations]
Embedding Strategy: Answer embeddings only
# Standard approach embeds only the answer text
embedding = model.encode([answer_text])Characteristics:
- Speed: Faster retrieval with single embedding lookup
- Simplicity: Proven approach, minimal complexity
- Memory: Lower memory usage
- Use Case: Direct factual questions, high-throughput scenarios
Best For:
- Simple Q&A lookup scenarios
- Resource-constrained environments
- High-volume, low-complexity queries
- When speed > quality trade-offs are acceptable
Embedding Strategy: Combined Question+Answer embeddings
# Adaptive approach combines Q&A for richer context
combined_text = f"Q: {question} A: {answer}"
embedding = model.encode([combined_text])Characteristics:
- Quality: Better semantic understanding of Q&A relationships
- Context: Captures question-answer context linkage
- Intelligence: Query-aware retrieval strategies
- Complexity: More sophisticated, higher computational cost
Best For:
- Complex conceptual questions
- Domain-specific queries requiring context understanding
- Quality-critical applications
- When accuracy > speed is the priority
The pipeline now generates 4 FAISS indices for comprehensive evaluation:
qa_faiss_index_standard_cpu.bin- CPU-optimized standard embeddingsqa_faiss_index_standard_gpu.bin- GPU-optimized standard embeddings
qa_faiss_index_adaptive_cpu.bin- CPU-optimized adaptive embeddingsqa_faiss_index_adaptive_gpu.bin- GPU-optimized adaptive embeddings
qa_faiss_index_cpu.binβ symlink to standard_cpu (backward compatibility)qa_faiss_index_gpu.binβ symlink to standard_gpu (backward compatibility)
Both approaches are evaluated simultaneously:
- Standard RAG: Uses answer-only embeddings for retrieval
- Adaptive RAG: Uses Q+A combined embeddings for retrieval
The rag_comparison_analyzer.py compares approaches across:
Quality Metrics:
- BERT F1 scores (semantic similarity)
- Context relevance scores
- Quality retention rates
- Answer accuracy
Performance Metrics:
- Retrieval speed (ms)
- Generation time (ms)
- Memory usage
- Computational overhead
Domain-Specific Metrics:
- Domain term coverage
- Uncertainty handling
- Out-of-domain detection
The pipeline automatically:
- Compares Performance: Evaluates both approaches on the same data
- Determines Winner: Selects best approach based on quality/speed trade-offs
- Generates Training Data: Uses winning approach's results for dataset generation
- Provides Recommendations: Suggests deployment strategy
The comparison generates a comprehensive report including:
{
"summary": {
"winner": "adaptive|standard|tie",
"key_finding": "Adaptive RAG shows significant improvements in...",
"recommendation_summary": "Recommend Adaptive RAG for quality-focused applications"
}
}{
"metrics_comparison": {
"differences": {
"avg_bert_score": {
"standard": 0.742,
"adaptive": 0.798,
"improvement_percent": +7.5,
"better_approach": "adaptive"
}
}
}
}{
"recommendations": {
"use_adaptive_when": [
"Quality is more important than speed",
"Handling complex domain-specific questions"
],
"use_standard_when": [
"Speed is critical and quality is acceptable",
"Processing high volumes of simple queries"
],
"hybrid_approach": "Use query complexity analysis to route..."
}
}# Build both standard and adaptive indices
python qa_faiss_builder.py \
--qa-pairs-file selected_qa_pairs.json \
--output-dir rag_store \
--embedding-model all-MiniLM-L6-v2
# Automatically builds all 4 indices# Standard RAG evaluation
python qa_autorag_evaluator.py \
--qa-faiss-index rag_store/qa_faiss_index_standard_gpu.bin \
--output-dir autorag_results/standard_rag
# Adaptive RAG evaluation
python qa_autorag_evaluator.py \
--qa-faiss-index rag_store/qa_faiss_index_adaptive_gpu.bin \
--output-dir autorag_results/adaptive_rag# Compare both approaches
python rag_comparison_analyzer.py \
--standard-results autorag_results/standard_rag \
--adaptive-results autorag_results/adaptive_rag \
--output-file rag_comparison_report.json- A/B Testing: Direct comparison on identical data
- Objective Metrics: Quantitative performance evaluation
- Evidence-Based: Data-driven approach selection
- Use Case Matching: Right approach for right scenario
- Performance Tuning: Optimize for speed vs quality trade-offs
- Resource Allocation: Efficient compute resource usage
- Deployment Flexibility: Choose approach per use case
- Scalability: Scale standard for volume, adaptive for quality
- Monitoring: Compare approaches in production
- Performance Tracking: Monitor both approaches over time
- Quality Degradation: Detect when to switch approaches
- Cost Analysis: Compute cost vs quality benefits
# Use standard RAG for speed
if query_volume > 1000_per_hour and complexity_score < 0.3:
use_standard_rag()# Use adaptive RAG for complex technical queries
if domain_specificity > 0.7 and accuracy_requirement > 0.9:
use_adaptive_rag()# Route based on query analysis
if query_complexity < 0.4:
return standard_rag_response(query)
else:
return adaptive_rag_response(query)- Query Complexity Analysis: Automatic approach selection
- Performance Monitoring: Real-time switching based on metrics
- Machine Learning: Learn optimal routing patterns
- Different Embeddings: Compare embedding model performance
- Hybrid Indices: Combine best of both approaches
- Ensemble Methods: Use both approaches for consensus
- Resource-Aware Routing: Choose based on available resources
- Quality Budgets: Dynamically adjust quality vs cost trade-offs
- Caching Strategies: Optimize for repeated queries
The Dual RAG Architecture provides:
- Scientific Evaluation of different RAG approaches
- Optimal Performance for different use cases
- Production Flexibility with evidence-based recommendations
- Continuous Improvement through comparative analysis
This architecture ensures that the AutoRAG pipeline delivers both the speed of Standard RAG and the quality of Adaptive RAG, automatically determining the best approach for each specific application context.