Pricing Intelligence
Sistema de consulta de preços com RAG otimizado, threshold adaptativo, request coalescing e cache multi-tier para respostas sub-segundo.
⚡ O Problema
Consultas de preço em clínicas são complexas: pacientes perguntam usando nomes diferentes ("raio-x", "radiografia", "rx dental"), com erros de digitação, e esperam respostas instantâneas. RAG tradicional falha em:
- ✗Matching fuzzy de nomes de procedimentos
- ✗Múltiplos itens na mesma pergunta ("quanto custa limpeza e clareamento?")
- ✗Latência aceitável sob carga (thundering herd)
✨ A Solução
Pricing Fast Lane
Bypass otimizado que detecta intenção de preço e executa busca direta, sem passar pelo loop completo do agent:
Adaptive Threshold v2
Threshold de similaridade dinâmico baseado nas características da query:
- →Query curta (<3 palavras): threshold mais baixo (0.75)
- →Query com números: threshold ajustado para abbreviations
- →Query multi-item: threshold relaxado + diversificação
- →LLM override: modelo pode sugerir threshold específico
Request Coalescing
Múltiplas requests para o mesmo procedimento são agrupadas em uma única busca:
Quando múltiplas requests chegam para a mesma query:
- 1. Primeira request adquire lock e computa resultado
- 2. Requests subsequentes aguardam (com timeout)
- 3. Resultado é compartilhado entre todas
- 4. Cache é populado para próximas requests
🏗️ Arquitetura de Cache
┌─────────────────────────────────────────────────────────────┐
│ PRICING QUERY │
└─────────────────────────┬───────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ L1: In-Memory Cache (per-instance) │
│ TTL: 60s | Key: normalized_query_hash │
└─────────────────────────┬───────────────────────────────────┘
│ MISS
▼
┌─────────────────────────────────────────────────────────────┐
│ L2: Redis Intelligent Cache (shared) │
│ TTL: 300s | Key: exam_names_signature │
│ + Request Coalescing Lock │
└─────────────────────────┬───────────────────────────────────┘
│ MISS
▼
┌─────────────────────────────────────────────────────────────┐
│ Semantic Search (pgvector + HNSW) │
│ - Embeddings: text-embedding-3-large (3072d) │
│ - Reranking: BM25 + semantic score fusion │
│ - Alias map: fuzzy match recovery │
└─────────────────────────────────────────────────────────────┘🔑 Cache Key Inteligente
Em vez de hash da query bruta (que falha com variações), usamos assinatura semântica baseada nos itens detectados:
hash("price of dental cleaning")
signature(["cleaning"])