Skip to content

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

  1. Buscar top 10 similares
  2. Remover os positivos
  3. 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.