Pressione Esc para fechar

Reranking - Cross Encoder

← Voltar para o Dia 6: RAG avançado

Cross Encoder

O que é

Cross Encoder é uma arquitetura de modelo usada para calcular a relevância entre uma consulta e um documento, analisando os dois textos conjuntamente.

No contexto de RAG, ele é frequentemente utilizado como Reranker. Depois que o Retrieval recupera um conjunto de candidatos, o Cross Encoder analisa cada par formado pela consulta e por um documento e atribui uma pontuação de relevância.

A principal diferença em relação ao modelo usado para gerar embeddings é a forma como os textos são processados.

Em um modelo de embeddings, a consulta e o documento são normalmente transformados em vetores separadamente:

Consulta ──────→ Embedding da consulta
                         ↓
                    Similaridade
                         ↑
Documento ─────→ Embedding do documento

No Cross Encoder, os dois são enviados juntos ao modelo:

Consulta + Documento
        ↓
   Cross Encoder
        ↓
Score de relevância

Isso permite que o modelo analise diretamente a relação entre os dois textos, considerando palavras, contexto e interações entre eles.

Como funciona

Imagine que o Retrieval inicial tenha encontrado 20 documentos para uma pergunta. Esses documentos são candidatos, mas ainda não estão necessariamente na melhor ordem.

O Cross Encoder recebe a consulta junto com cada candidato:

Consulta
   +
Documento 1
   ↓
Cross Encoder
   ↓
Score: 0.92

Consulta
   +
Documento 2
   ↓
Cross Encoder
   ↓
Score: 0.37

Consulta
   +
Documento 3
   ↓
Cross Encoder
   ↓
Score: 0.81

Depois, os documentos são reorganizados de acordo com seus scores:

Documentos recuperados
        ↓
Cross Encoder
        ↓
Cálculo de relevância
        ↓
Ranking atualizado
        ↓
Top-k final

O ponto importante é que o Cross Encoder não precisa simplesmente verificar se consulta e documento são semanticamente próximos. Ele pode analisar a relação entre os dois textos de maneira mais detalhada.

Por exemplo, considere a pergunta:

"Qual é o prazo para cancelar um contrato após a assinatura?"

E dois documentos:

Documento A:
"Contratos podem ser cancelados em até 7 dias após a assinatura."

Documento B:
"Contratos empresariais possuem prazo de renovação anual."

Ambos podem conter termos relacionados a contratos e prazos. Porém, o Cross Encoder consegue analisar a relação entre a pergunta e cada documento e tende a atribuir uma pontuação maior ao Documento A.

Isso torna o Cross Encoder especialmente útil depois do Retrieval inicial.

Consulta
   ↓
Retrieval
   ↓
Top-k candidatos
   ↓
Cross Encoder
   ↓
Reranking
   ↓
Top-k final
   ↓
Contexto
   ↓
LLM

Existe, porém, um custo computacional maior. Como cada consulta precisa ser analisada junto com cada documento candidato, executar o modelo sobre milhares ou milhões de documentos seria muito caro.

Por isso, a arquitetura normalmente utiliza um primeiro estágio mais rápido para reduzir o conjunto de candidatos. O Cross Encoder atua somente sobre esse conjunto menor.

Milhões de documentos
        ↓
Retrieval rápido
        ↓
50 candidatos
        ↓
Cross Encoder
        ↓
10 documentos mais relevantes
        ↓
LLM

Um exemplo

Imagine um assistente corporativo que responde perguntas sobre políticas internas.

O usuário pergunta:

"Funcionários podem trabalhar remotamente durante viagens internacionais?"

O Retrieval inicial encontra 5 documentos:

D1: Política de trabalho remoto
D2: Política de viagens internacionais
D3: Política de segurança da informação
D4: Benefícios para funcionários
D5: Política de trabalho híbrido

A primeira etapa pode recuperar todos esses documentos porque eles possuem alguma relação com os termos da consulta.

O Cross Encoder então analisa cada par:

Pergunta + D1 → Score 0.89
Pergunta + D2 → Score 0.94
Pergunta + D3 → Score 0.51
Pergunta + D4 → Score 0.22
Pergunta + D5 → Score 0.73

O ranking passa a ser:

D2 → 0.94
D1 → 0.89
D5 → 0.73
D3 → 0.51
D4 → 0.22

O sistema pode então selecionar os documentos mais relevantes:

Retrieval
   ↓
D1, D2, D3, D4, D5
   ↓
Cross Encoder
   ↓
D2, D1, D5
   ↓
Contexto
   ↓
LLM
   ↓
Resposta

O Cross Encoder, portanto, não substitui necessariamente o Retrieval. Ele melhora a ordenação dos resultados que já foram recuperados.

Por que é importante

Cross Encoder é importante porque existe uma diferença entre encontrar documentos potencialmente relevantes e determinar quais deles são realmente os mais relevantes para aquela consulta.

O Retrieval inicial precisa ser rápido e capaz de trabalhar com uma coleção grande. O Cross Encoder pode ser mais lento porque realiza uma análise mais detalhada da relação entre consulta e documento.

Isso cria uma arquitetura de dois estágios:

                 Consulta
                    ↓
             Retrieval inicial
                    ↓
             Muitos candidatos
                    ↓
              Cross Encoder
                    ↓
                Reranking
                    ↓
             Poucos resultados
                    ↓
                 Contexto
                    ↓
                   LLM

Essa separação é importante para sistemas RAG porque permite combinar velocidade na recuperação com maior precisão na ordenação.

Também ajuda a entender a relação entre os conceitos estudados:

Similarity Search
        ↓
Top-k inicial
        ↓
Reranker
        ↓
Cross Encoder
        ↓
Reranking
        ↓
Top-k final
        ↓
Contexto
        ↓
LLM

Aqui, Reranking é o processo de reorganizar os resultados, Reranker é o componente responsável por realizar esse processo, e Cross Encoder é uma das arquiteturas que pode ser utilizada para construir esse componente.

Essa distinção é importante porque nem todo Reranker precisa ser um Cross Encoder. O Cross Encoder é uma abordagem particularmente relevante quando o objetivo é obter uma avaliação mais detalhada da relevância entre uma consulta e cada documento candidato.

link de compartilhamento