antonio leandro

busca e recuperação

Near-duplicate Question Detection

paper · Preetam Dammu, Omar Alonso · · ~23 min de leitura do original

a tese

duas perguntas podem ser a mesma pergunta sem dividir uma palavra: quase-duplicata de pergunta se decide pela resposta que ela pede, não pelo texto que ela usa — e é por isso que hash de texto não resolve

o que fica

  1. Uma pergunta carrega informação em aberto que não está no enunciado, então medir similaridade entre perguntas é um problema diferente e mais difícil do que medir similaridade entre textos genéricos.
  2. Filtrar quase-duplicatas é o que impede que uma lista de perguntas sugeridas seja a mesma pergunta escrita de cinco maneiras.
  3. Com LLM na ponta, detectar pergunta repetida virou decisão de custo: uma resposta já computada pode ser servida de novo em vez de gerada outra vez.
  4. O trabalho entrega uma taxonomia antes de entregar um detector, o que é um sinal de que o problema estava mal definido e não apenas mal resolvido.
  5. Usar um modelo de linguagem como juiz de similaridade custa ordens de grandeza mais por comparação do que um hash, então ele só entra depois que algo barato já reduziu o conjunto de pares.

o problema

Sites de perguntas e respostas e páginas de produto sugerem perguntas relacionadas. É uma superfície discreta e cara de errar: quem chega numa página de fone de ouvido com “vem com case?” na cabeça deveria encontrar ali as outras cinco perguntas que ainda não fez. O jeito de estragar isso é redundância. Se a lista de candidatas traz “tem cancelamento de ruído?”, “esse fone cancela ruído?” e “o cancelamento de ruído é bom?”, o usuário recebeu uma pergunta ocupando três lugares e perdeu as duas que sobraram de fora.

Detectar essa redundância não é o mesmo trabalho que detectar página duplicada na web. O texto de duas perguntas equivalentes pode não ter sobreposição nenhuma — “cabe na mochila?” e “quais as dimensões?” pedem a mesma resposta e não dividem um token. O caminho inverso também acontece: “como devolvo?” e “como devolvo depois de 30 dias?” são quase idênticas na superfície e querem coisas distintas. Os autores colocam o dedo exatamente aqui: pergunta é um objeto que aponta para fora de si, para uma informação em aberto que não está contida nas palavras usadas. Comparar as palavras compara a casca. E o caso de uso ficou mais valioso com LLM: se você reconhece que a pergunta que chegou é a mesma de ontem, serve a resposta já computada em vez de pagar geração de novo.

a ideia

Antes de propor um detector, o trabalho propõe uma taxonomia. Esse é o movimento central e vale mais que o método: em vez de tratar “quase-duplicata” como um limiar único numa métrica de similaridade, os autores separam os tipos de proximidade que existem entre perguntas — as sutilezas que fazem duas formulações serem a mesma coisa ou não. Só depois disso um método de detecção baseado nas capacidades de LLMs faz sentido, porque o modelo passa a ter um critério para aplicar, e não uma noção difusa de “parecido”.

O que está publicado na página do trabalho é o resumo. Não descrevo aqui as categorias da taxonomia, o prompt, nem a tabela de resultados, porque não os vi. Quem precisa do detalhe operacional tem que ir ao texto apresentado na Web Conference 2024.

o que isso custou

O resumo não declara limitações, e essa ausência já é informação: não há número, baseline nem benchmark visível para conferir. Um verbete honesto sobre este trabalho é curto por causa disso.

Os custos que a proposta implica, por outro lado, são visíveis pela forma. Taxonomia é julgamento humano cristalizado: alguém decidiu onde cortar entre “mesma pergunta” e “pergunta vizinha”, e essa decisão não é universal — o que é duplicata num fórum de programação não é duplicata num catálogo de eletrodomésticos, onde a variação do modelo muda a resposta. A taxonomia vira, na prática, mais um artefato a manter.

E há o custo por comparação. Um modelo de linguagem julgando um par de perguntas é ordens de grandeza mais caro que uma comparação de assinaturas. Numa lista de candidatas, o número de pares cresce com o quadrado do tamanho. Isso empurra o método para o lugar onde ele cabe: reranqueamento e decisão final sobre poucos pares, depois que uma etapa barata já eliminou o óbvio. O trabalho resolve precisão, não escala.

onde isso aparece hoje

O trabalho é recente e pequeno demais para eu apontar uma linhagem que saiu dele. O que dá para situar é a vizinhança em que ele entra.

A tradição de deduplicação por assinatura, que Detecting Near-Duplicates for Web Crawling fixou, e a busca de pares similares em escala de Scaling Up All Pairs Similarity Search resolvem o lado barato do funil — e é justamente onde elas falham, no par sem sobreposição léxica, que este paper mira. Do lado semântico, os encoders de Sentence-BERT capturam paráfrase, mas com o mesmo ponto cego: aproximam texto de texto, não intenção de intenção.

O segundo caso de uso do resumo, reaproveitar resposta pré-computada, é a versão semântica do que Prompt caching faz por prefixo exato. Cache por prefixo exige que os bytes batam. Detecção de quase-duplicata é a aposta de que dá para acertar quando eles não batem e a resposta serve mesmo assim — e o preço de errar essa aposta é servir a resposta errada com cara de certa.

lido na íntegra por pipeline de llm, revisado por antonio leandro antes de publicar ·