Spaces:
Sleeping
Sleeping
| # Search Optimization Features | |
| ## Overview | |
| Atlas includes an intelligent search optimization system that automatically determines when web searches are necessary, reducing unnecessary searches by 40-60% while maintaining high response quality. This results in faster responses, lower costs, and better conversation flow. | |
| ## How It Works | |
| ### Smart Decision Engine | |
| Atlas uses a sophisticated hybrid system to decide when to search: | |
| ``` | |
| User Question → Analyze Context → Make Decision → Respond | |
| ↓ ↓ ↓ ↓ | |
| "Tell me more" → Has history? → Skip search → Use history | |
| "Latest news" → No context → Perform search → Web + AI | |
| ``` | |
| ### Two-Phase Analysis | |
| 1. **Fast Rule-Based Patterns** (< 1ms) | |
| - Detects follow-up questions ("tell me more", "elaborate") | |
| - Identifies referential questions ("what about that?") | |
| - Recognizes clarification requests ("what do you mean?") | |
| 2. **AI-Powered Analysis** (for ambiguous cases) | |
| - Deep semantic understanding using Google Gemini | |
| - Context sufficiency assessment | |
| - Information recency requirements | |
| ## Key Features | |
| ### 🧠 Intelligent Pattern Recognition | |
| **Follow-up Questions**: Automatically detected | |
| - "Tell me more about that" | |
| - "Can you elaborate?" | |
| - "Explain that better" | |
| - "What else should I know?" | |
| **Referential Questions**: Context-aware | |
| - "How does this work?" | |
| - "What about the previous point?" | |
| - "Can you expand on it?" | |
| **New Information Requests**: Always searched | |
| - "Latest news about AI" | |
| - "Current stock prices" | |
| - "What happened today?" | |
| ### ⚡ Context-Aware Request Flow | |
| **First Message (No History)**: | |
| - Cache-first approach for performance | |
| - Check vector database for similar queries | |
| - Search only if no relevant cached results | |
| **Follow-up Messages (Has History)**: | |
| - Analyze conversation context first | |
| - Search only when new information needed | |
| - Leverage existing conversation knowledge | |
| ### 🗄️ ChromaDB Vector Caching | |
| **Semantic Similarity Matching**: | |
| - Finds similar queries even with different wording | |
| - "machine learning basics" matches "intro to ML" | |
| - Persistent storage across server restarts | |
| **Performance Benefits**: | |
| - Instant responses for cached queries | |
| - Reduced API costs and latency | |
| - Automatic cache cleanup and management | |
| ## Configuration Options | |
| ### Search Decision Modes | |
| Control how aggressively the system searches: | |
| #### Conservative Mode | |
| ```json | |
| { | |
| "prompt": "Tell me about AI", | |
| "search_decision_mode": "conservative" | |
| } | |
| ``` | |
| - **Behavior**: Strongly prefers conversation history | |
| - **Use Case**: Follow-up heavy conversations, cost optimization | |
| - **Search Reduction**: ~60-70% | |
| #### Balanced Mode (Default) | |
| ```json | |
| { | |
| "prompt": "Tell me about AI", | |
| "search_decision_mode": "balanced" | |
| } | |
| ``` | |
| - **Behavior**: Smart balance between search and history | |
| - **Use Case**: General purpose usage | |
| - **Search Reduction**: ~40-50% | |
| #### Aggressive Mode | |
| ```json | |
| { | |
| "prompt": "Tell me about AI", | |
| "search_decision_mode": "aggressive" | |
| } | |
| ``` | |
| - **Behavior**: Prefers fresh web search results | |
| - **Use Case**: News, current events, frequently changing topics | |
| - **Search Reduction**: ~20-30% | |
| ### Force Search Override | |
| Complete control over search behavior: | |
| ```json | |
| { | |
| "prompt": "What is 2+2?", | |
| "force_search": true | |
| } | |
| ``` | |
| **Values**: | |
| - `true`: Always search, ignore optimization | |
| - `false`: Never search, use only conversation history | |
| - `null` (default): Use intelligent optimization | |
| ## Usage Examples | |
| ### Basic Usage | |
| **Let the system optimize automatically:** | |
| ```bash | |
| curl -X POST /chat -d '{ | |
| "prompt": "What is machine learning?" | |
| }' | |
| # System will search (no conversation history) | |
| ``` | |
| ```bash | |
| curl -X POST /chat -d '{ | |
| "prompt": "Tell me more about neural networks", | |
| "history": [ | |
| {"role": "user", "content": "What is machine learning?"}, | |
| {"role": "assistant", "content": "Machine learning is..."} | |
| ] | |
| }' | |
| # System will likely skip search (elaboration request) | |
| ``` | |
| ### Advanced Configuration | |
| **Conservative approach for cost optimization:** | |
| ```javascript | |
| const response = await fetch('/chat', { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ | |
| prompt: "Can you explain that concept better?", | |
| search_decision_mode: "conservative", | |
| history: conversationHistory | |
| }) | |
| }); | |
| ``` | |
| **Aggressive approach for current events:** | |
| ```javascript | |
| const response = await fetch('/chat', { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ | |
| prompt: "What are today's tech headlines?", | |
| search_decision_mode: "aggressive" | |
| }) | |
| }); | |
| ``` | |
| **Force search for specific needs:** | |
| ```javascript | |
| const response = await fetch('/chat', { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ | |
| prompt: "Company internal policy on remote work", | |
| force_search: true // Ensure fresh search | |
| }) | |
| }); | |
| ``` | |
| ## Response Information | |
| ### Search Decision Details | |
| Every response includes detailed search decision information: | |
| ```json | |
| { | |
| "response": "Neural networks are...", | |
| "search_decision": { | |
| "should_search": false, | |
| "reason": "Elaboration request with sufficient context", | |
| "confidence": 0.85, | |
| "decision_method": "rule_based" | |
| }, | |
| "cache_info": { | |
| "cache_hit": false, | |
| "flow_type": "search_decision_skip" | |
| } | |
| } | |
| ``` | |
| **search_decision fields**: | |
| - `should_search`: Final decision made | |
| - `reason`: Human-readable explanation | |
| - `confidence`: Decision confidence (0.0-1.0) | |
| - `decision_method`: "rule_based", "hybrid", or "fallback" | |
| **cache_info fields**: | |
| - `cache_hit`: Whether results came from cache | |
| - `flow_type`: Request processing flow used | |
| - `cache_type`: Caching system used (e.g., "chromadb_vector") | |
| ### Flow Types | |
| **Cache-First Flows** (No conversation history): | |
| - `cache_first_hit`: Found cached results | |
| - `cache_first_miss`: No cache, performed search | |
| **Search-Decision-First Flows** (Has conversation history): | |
| - `search_decision_skip`: Smart system skipped search | |
| - `search_decision_cache_hit`: Decided to search, found in cache | |
| - `search_decision_cache_miss`: Decided to search, performed web search | |
| ## Performance Benefits | |
| ### Response Time Improvements | |
| **Cached Responses**: < 200ms | |
| - Instant retrieval from ChromaDB | |
| - No web search delays | |
| - No API rate limiting | |
| **Skipped Searches**: < 500ms | |
| - Fast rule-based decisions (< 1ms) | |
| - Direct conversation history usage | |
| - No external API calls | |
| **Regular Searches**: 2-5 seconds | |
| - Only when truly needed | |
| - Fresh information guaranteed | |
| - Full web search capabilities | |
| ### Cost Optimization | |
| **API Call Reduction**: | |
| - Search API calls: -40 to -60% | |
| - AI model calls: Optimized caching | |
| - Rate limit utilization: More efficient | |
| **Resource Usage**: | |
| - Server CPU: Reduced search processing | |
| - Network bandwidth: Fewer external requests | |
| - Storage: Efficient vector caching | |
| ## Best Practices | |
| ### For Different Use Cases | |
| **Customer Support Chatbots**: | |
| ```json | |
| { | |
| "search_decision_mode": "conservative", | |
| "force_search": false | |
| } | |
| ``` | |
| - Rely heavily on conversation context | |
| - Minimize external searches for common questions | |
| - Use aggressive mode only for account-specific queries | |
| **News and Information Services**: | |
| ```json | |
| { | |
| "search_decision_mode": "aggressive", | |
| "force_search": null | |
| } | |
| ``` | |
| - Prioritize fresh information | |
| - Let system decide on follow-up questions | |
| - Cache recent searches for popular topics | |
| **Educational Applications**: | |
| ```json | |
| { | |
| "search_decision_mode": "balanced", | |
| "force_search": null | |
| } | |
| ``` | |
| - Balance between comprehensive info and follow-ups | |
| - Trust the system's optimization | |
| - Use force_search for specific research needs | |
| ### Conversation Design | |
| **Effective Follow-ups** (will skip search): | |
| - "Can you explain that in simpler terms?" | |
| - "What are some examples of this?" | |
| - "How does this relate to what we discussed?" | |
| **New Topic Indicators** (will trigger search): | |
| - "Now tell me about [different topic]" | |
| - "What's the latest on [topic]?" | |
| - "I have a question about [new subject]" | |
| ## Monitoring and Analytics | |
| ### Cache Performance | |
| Check cache effectiveness at `/analytics/cache`: | |
| ```json | |
| { | |
| "cache_statistics": { | |
| "hit_rate_percentage": 65.4, | |
| "cache_size": 1250, | |
| "memory_usage_mb": 45.2 | |
| }, | |
| "cache_effectiveness": "High" | |
| } | |
| ``` | |
| ### Search Decision Analytics | |
| View optimization impact at `/analytics/dashboard`: | |
| - **Search reduction percentage** | |
| - **Response time improvements** | |
| - **Decision accuracy metrics** | |
| - **Cache hit rates over time** | |
| ### Individual Query Analysis | |
| Each response includes optimization details for monitoring: | |
| ```javascript | |
| // Log search decisions for analysis | |
| console.log(`Decision: ${response.search_decision.should_search}`); | |
| console.log(`Reason: ${response.search_decision.reason}`); | |
| console.log(`Confidence: ${response.search_decision.confidence}`); | |
| console.log(`Cache hit: ${response.cache_info.cache_hit}`); | |
| ``` | |
| ## Troubleshooting | |
| ### Common Issues | |
| **Too Many Searches**: | |
| - Use "conservative" mode | |
| - Check conversation history format | |
| - Verify follow-up question patterns | |
| **Missing Information**: | |
| - Use "aggressive" mode for current events | |
| - Check cache expiration settings | |
| - Use force_search for critical updates | |
| **Slow Responses**: | |
| - Monitor cache hit rates | |
| - Check ChromaDB performance | |
| - Verify conversation history size | |
| ### Performance Optimization | |
| **For High Traffic**: | |
| - Use conservative mode to maximize cache hits | |
| - Implement client-side conversation management | |
| - Monitor cache performance metrics | |
| **For Accuracy**: | |
| - Use aggressive mode for dynamic content | |
| - Implement domain-specific force_search logic | |
| - Monitor false negative rates | |
| ## Advanced Features | |
| ### Custom Integration Patterns | |
| **Progressive Enhancement**: | |
| ```javascript | |
| class SmartChatClient { | |
| constructor() { | |
| this.mode = "balanced"; // Start balanced | |
| } | |
| // Adapt based on conversation type | |
| setContextMode(conversationType) { | |
| switch(conversationType) { | |
| case "support": this.mode = "conservative"; break; | |
| case "news": this.mode = "aggressive"; break; | |
| default: this.mode = "balanced"; | |
| } | |
| } | |
| } | |
| ``` | |
| **Domain-Specific Rules**: | |
| ```javascript | |
| function getSearchMode(prompt) { | |
| if (prompt.includes("latest") || prompt.includes("current")) { | |
| return "aggressive"; | |
| } | |
| if (prompt.includes("explain") || prompt.includes("clarify")) { | |
| return "conservative"; | |
| } | |
| return "balanced"; | |
| } | |
| ``` | |
| ### Integration with Analytics | |
| **Track Optimization Impact**: | |
| ```javascript | |
| // Monitor search reduction | |
| const searchReduction = (totalRequests - actualSearches) / totalRequests; | |
| // Track response time improvements | |
| const avgResponseTime = responseTimes.reduce((a, b) => a + b) / responseTimes.length; | |
| // Measure user satisfaction | |
| const satisfactionScore = positiveResponses / totalResponses; | |
| ``` | |
| ## Future Enhancements | |
| ### Planned Features | |
| - **User Learning**: Personalized optimization based on usage patterns | |
| - **Domain Adaptation**: Industry-specific optimization rules | |
| - **Multimodal Context**: Support for image and document context | |
| - **Real-time Adaptation**: Dynamic threshold adjustment based on performance | |
| ### Feedback and Improvement | |
| The search optimization system continuously improves based on: | |
| - **Usage patterns**: Common conversation flows | |
| - **Performance metrics**: Response times and accuracy | |
| - **User feedback**: Explicit and implicit satisfaction signals | |
| - **Cache effectiveness**: Hit rates and relevance scoring | |
| --- | |
| The search optimization system makes Atlas smarter, faster, and more cost-effective while maintaining the high-quality responses users expect. By intelligently determining when fresh information is needed versus when conversation history suffices, Atlas provides an optimal balance of performance and accuracy. |