Roadmap — Fine-tuning de Embeddings para Agente de Turismo¶
Objetivo¶
Melhorar a precisão semântica do agente de turismo utilizando:
- Fine-tuning de embeddings
- Retrieval híbrido
- Hard negatives
- Reranking
- Benchmarks de avaliação
- Feedback real dos usuários
Arquitetura Recomendada¶
Pipeline Atual¶
Usuário -> embedding(query) -> busca vetorial -> produtos -> LLM gera roteiro
Pipeline Recomendado¶
Usuário
-> query rewriting
-> retrieval híbrido
-> embedding tuned
-> reranker
-> contexto final
-> LLM gera roteiro
Principais Problemas em Turismo¶
Turismo possui:
- Linguagem vaga
- Intenção implícita
- Preferências emocionais
- Equivalência entre destinos
- Sazonalidade
- Busca subjetiva
Exemplos:
"quero um lugar frio romântico"
"praia tranquila sem muvuca"
"algo parecido com Gramado mas mais barato"
"viagem espiritual"
"ecoturismo com cachoeira"
Embeddings genéricos normalmente não entendem:
- Perfil do viajante
- Similaridade experiencial
- Contexto econômico
- Tipo de viagem
Estratégia Recomendada¶
Fine-tuning Contrastivo¶
Treinar embeddings utilizando:
(query, documento_relevante)
(query, documento_irrelevante)
Objetivo:
- Aproximar documentos corretos
- Afastar documentos incorretos
Estrutura do Dataset¶
Exemplo simples¶
{
"query": "praia calma para casal no nordeste",
"positive": "Pacote 5 dias em Porto de Galinhas com resort beira-mar",
"negative": "Excursão de aventura em Brotas com rafting"
}
Exemplo com múltiplos positivos¶
{
"query": "ecoturismo barato",
"positives": [
"Chapada dos Veadeiros econômica",
"Camping em São Thomé"
],
"negatives": [
"Cruzeiro de luxo Caribe",
"Resort all inclusive Cancún"
]
}
Como Gerar Dataset Automaticamente¶
Fase 1 — Queries Sintéticas¶
Usar os próprios produtos turísticos para gerar buscas realistas.
Dados disponíveis:
- Título
- Localidade
- Descrição
- O que inclui
Exemplo¶
Produto:
Resort em Gramado com café colonial e passeio de vinícola
Queries geradas:
viagem romântica serra gaúcha
lua de mel no frio
hotel com vinho e fondue
férias casal gramado
passeio gastronômico sul do brasil
Tipos de Intenção¶
Intenção Direta¶
hotel em gramado
Intenção Emocional¶
lugar aconchegante para casal
Intenção Econômica¶
viagem barata para o frio
Intenção Experiencial¶
destino gastronômico no brasil
Intenção Contextual¶
onde viajar em julho no brasil
Hard Negatives¶
O que são¶
Resultados semanticamente parecidos, porém incorretos.
Exemplo¶
Query:
ecoturismo barato
Positivo:
Chapada econômica
Hard negative:
resort ecológico de luxo amazônia
Como Gerar Hard Negatives¶
Estratégia 1 — Busca Vetorial Atual¶
- Buscar top 10 similares
- Remover os positivos
- Utilizar os restantes como negativos
Estratégia 2 — LLM¶
Prompt:
Dado este produto turístico, gere opções parecidas semanticamente porém inadequadas para esta busca.
Formato de Treino¶
SentenceTransformers¶
InputExample(
texts=[
query,
positive_doc,
negative_doc
]
)
Losses recomendadas¶
- MultipleNegativesRankingLoss
- TripletLoss
- ContrastiveLoss
Modelos Recomendados¶
Embeddings¶
Bons modelos multilíngues¶
- BAAI/bge-m3
- intfloat/multilingual-e5-large
- jina-embeddings-v3
- Qwen3-Embedding
- gte-modernbert
- NV-Embed
Retrieval Híbrido¶
Dense Retrieval¶
Embedding search.
Sparse Retrieval¶
BM25.
Recomendação¶
Usar combinação:
Dense + BM25 + score fusion
Reranking¶
Estratégia recomendada¶
Fluxo:
Busca 50 documentos
-> reranker escolhe top 5
-> LLM gera roteiro
Modelos recomendados¶
- bge-reranker-v2
- Qwen reranker
Benchmark de Avaliação¶
Estrutura¶
{
"query": "praia tranquila nordeste",
"expected_products": [
"Maragogi",
"Porto de Galinhas"
]
}
Métricas¶
Recall@K¶
Quantos documentos corretos aparecem nos primeiros resultados.
MRR¶
Mean Reciprocal Rank.
NDCG¶
Mede qualidade do ranking.
Captura de Feedback Real¶
Eventos importantes¶
Capturar:
- Query
- Produto clicado
- Produto expandido
- Roteiro aceito
- Pedido de orçamento
- Conversão
Feedback Implícito¶
Exemplo:
Usuário pesquisou
-> clicou
-> pediu orçamento
Transformar em:
query -> produto positivo
Query Rewriting¶
Exemplo¶
Usuário:
quero paz e natureza
LLM transforma:
ecoturismo tranquilo cachoeira pousada natureza
Perfil Semântico do Viajante¶
Criar embeddings para:
- Preferências
- Histórico
- Estilo de viagem
Exemplos:
aventura
luxo
família
natureza
gastronomia
espiritualidade
praia
Ferramentas Recomendadas¶
Dataset e Rotulação¶
- Label Studio
- Argilla
Fine-tuning¶
- Sentence Transformers
- FlagEmbedding
- HuggingFace Trainer
- LlamaIndex finetuning
Avaliação¶
- BEIR Benchmark
- Ranx
Roadmap de Implementação¶
Fase 1 — Dataset Sintético¶
Objetivo:
- 50k+ queries sintéticas
- positivos
- hard negatives
Fase 2 — Fine-tuning¶
Treinar:
- bge-m3 ou
- multilingual-e5-large
Fase 3 — Benchmark¶
Avaliar:
- Recall@5
- Recall@10
- MRR
- NDCG
Fase 4 — Reranker¶
Adicionar reranker após retrieval.
Fase 5 — Logs Reais¶
Capturar comportamento dos usuários.
Fase 6 — Treino Contínuo¶
Retreinar embeddings com:
- Logs reais
- Conversões
- Cliques
- Preferências
Resultado Esperado¶
Com:
- Hard negatives
- Retrieval híbrido
- Reranking
- Query rewriting
- Fine-tuning
É possível aumentar drasticamente a precisão semântica do agente.
Exemplo:
Recall@5
45% -> 80%+
Insight Principal¶
Em turismo, a relevância não é apenas:
query -> cidade
Mas sim:
query -> experiência turística
O embedding precisa aprender:
- Emoção
- Experiência
- Contexto
- Estilo de viagem
- Preferência implícita
- Intenção subjetiva
Esse é o principal diferencial competitivo para agentes de turismo baseados em IA.