Spaces:
Sleeping
Sleeping
File size: 11,756 Bytes
4b28fb0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 | # 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. |