Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Duplicidade dos trechos

No final do vídeo, mostrou que o RAG trouxe 4 trechos como resposta. Entretanto, os trechos 1 e 2 são iguais, e o 3 e 4 também são. Ou seja, trouxe apenas 2 trechos, e duplicou ambos. Por que aconteceu? Aparece aproximadamente aos 10 minutos e 25 segundos de vídeo

1 resposta
solução!

Oii, Marcos! Tudo bem?

É muito legal ver sua atenção aos detalhes durante o vídeo. Essa percepção sobre a repetição dos trechos é um excelente ponto de partida para entendermos melhor como os bancos vetoriais e as buscas semânticas funcionam na prática.

Por que os trechos apareceram duplicados?

A causa mais comum para esse comportamento é a persistência de dados no banco vetorial (ChromaDB). No código do projeto, utilizamos um diretório específico para salvar os dados:

PERSIST_DIRECTORY = "./chroma_rh"

O que acontece é o seguinte:

  • Acúmulo de inserções: Se a função que carrega os documentos e cria a Vector Store for executada mais de uma vez sem limpar o banco anterior, o Chroma adiciona os novos embeddings aos que já existiam lá. Como os documentos são os mesmos, ele acaba tendo "cópias" idênticas do mesmo texto com vetores de busca iguais.
  • Recuperação (Retrieval): Quando você faz a pergunta, o sistema busca os 8 pedaços mais próximos (conforme definido no parâmetro k=8 da função similarity_search). Se o banco tem duplicatas, os resultados mais relevantes serão justamente essas cópias idênticas.
  • Reranking: Mesmo com a etapa de reordenação pelo LLM, ele analisa a relevância de cada pedaço individualmente. Se os textos são iguais, ambos recebem notas altas e acabam figurando entre os 4 melhores que são exibidos na interface.

Como evitar isso no seu projeto?

Pra garantir que sua aplicação não exiba informações repetidas, você pode adotar duas estratégias simples:

  1. Limpeza do banco: Antes de iniciar um novo carregamento de dados, você pode deletar a pasta ./chroma_rh. Assim, o banco será criado do zero apenas com uma cópia de cada trecho.
  2. Tratamento de duplicatas no código: Você pode implementar uma lógica na função responder_pergunta pra filtrar documentos que possuam o mesmo conteúdo (page_content) antes de exibi-los ao usuário.

Isso é muito comum em ambientes de desenvolvimento onde testamos o código várias vezes. Na prática, garantir a "unicidade" dos dados no banco de vetores ajuda muito na qualidade da resposta final e economiza processamento do modelo de linguagem.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!