Resumo do Webinar: Técnicas de Recuperação para Acessar o Contexto Mais Relevante para Aplicações de LLM
Conectar grandes modelos de linguagem (LLMs) a fontes de dados externas é crucial para melhorar o desempenho de muitas aplicações de IA. Essas conexões envolvem a ligação com coleções de dados preexistentes, a recuperação de conversas de usuários ou a geração de "novas memórias" por meio de reflexão. Recuperação é extrair informações relevantes de fontes externas conectadas e incorporá-las à consulta para fornecer contexto.
Em nosso webinar recente, Harrison Chase, cofundador e CEO da LangChain, e Filip Haltmayer, engenheiro de software na Zilliz, discutiram recuperação com LangChain e bancos de dados vetoriais, busca semântica e seus casos extremos. Neste post, exploraremos os principais aprendizados do webinar e responderemos a algumas das perguntas não respondidas do público.
O que é recuperação e por que ela é importante?
Em geral, recuperação refere-se ao acesso a informações da memória ou de outros dispositivos de armazenamento. Durante o webinar, Harrison explicou como poderíamos aproveitar técnicas de recuperação para trazer conhecimento externo aos LLMs usando um banco de dados vetorial como o Milvus e um agente de IA como o LangChain.
Embora os LLMs sejam muito poderosos, eles têm limitações, pois só conhecem as informações pré-treinadas, que podem precisar de atualização. Por exemplo, os dados do ChatGPT cobrem apenas até o ano de 2021, então eles não sabem o que aconteceu depois. Os LLMs também não possuem dados sobre informações específicas de domínio ou proprietárias, nem dados sobre sua empresa e seu projeto. Além disso, mesmo que a informação esteja presente dentro do LLM, reconhecê-la pode ser desafiador. Nesses casos, a recuperação pode ser um ótimo complemento para dar aos LLMs mais contexto para respostas mais precisas ou trazer para primeiro plano a informação-alvo que já está no LLM.
Visão geral da busca semântica
A recuperação por meio de busca semântica é um dos casos de uso mais críticos. Durante o webinar recente, Harrison forneceu uma visão geral de como a busca semântica funciona dentro de uma arquitetura CVP típica (ChatGPT+Vector store+Prompt as code).
O diagrama a seguir explica como a busca semântica funciona em uma pilha CVP. Se um usuário faz uma pergunta geral que o LLM pode responder, o LLM responde diretamente à pergunta. No entanto, se a pergunta for específica de domínio, ela é transformada em vetores e enviada a um banco de dados vetorial, como o Milvus, que já contém documentos relevantes. O banco de dados vetorial divide os registros pré-armazenados em chunks e embeddings, realiza buscas semânticas para encontrar os resultados top-k mais relevantes para a consulta do usuário e, em seguida, envia esses resultados a um agente de IA, como o LangChain, juntamente com a consulta do usuário. O LangChain combina os resultados com a pergunta do usuário e os envia ao LLM. O LLM então fornece uma resposta satisfatória.
Como a busca semântica funciona em uma pilha CVP típica
Casos extremos da busca semântica
A busca semântica vem sendo usada há algum tempo e provou ser útil para enfrentar muitos desafios. Harrison demonstrou cinco casos extremos de buscas semânticas durante o webinar e analisou minuciosamente cada caso.
Informações repetidas
Ao lidar com numerosos documentos semelhantes ou copiados, recuperar informações relevantes pode ser desafiador. Esse tipo de conteúdo não é adequado para LLMs e pode criar contexto desnecessário. Harrison propôs três soluções para superar esse problema:
Filtre documentos semelhantes por meio de buscas semânticas antes de enviá-los ao LLM. Por exemplo, antes que o LangChain envie os prompts para o ChatGPT, ele recupera 20-30 documentos e elimina os semelhantes por meio de embeddings ou os ignora para o LLM.
Aproveite a relevância marginal máxima para otimizar a diversidade. Essa busca se concentra na similaridade e na diversidade em relação a outros vetores recuperados.
Remova documentos duplicados antes de armazená-los no banco de dados vetorial. No entanto, essa abordagem pode ser desafiadora, pois determinar a pontuação de similaridade que equivale a uma duplicata dá muito trabalho. Um elemento vetorial poderia ser muito diferente, resultando em diferenças significativas.
Informações conflitantes
Informações conflitantes ocorrem quando várias fontes fornecem respostas diferentes para uma pergunta, o que pode ser muito confuso se você apresentar todos os dados a um LLM. Por exemplo, se você perguntar sobre a política de férias da sua empresa, poderá receber respostas diferentes de fontes como o documento de RH e algumas anotações aleatórias de reunião.
Harrison propôs duas soluções para esse problema:
Priorizar fontes e incorporar essa classificação à recuperação.
Passar as informações da fonte para a etapa de geração, permitindo que o LLM decida qual fonte é mais confiável.
Temporalidade
Quando as informações mudam ao longo do tempo, isso é chamado de temporalidade. Por exemplo, a política de férias da sua empresa pode mudar ocasionalmente.
Para lidar com esse problema, Harrison propõe três soluções:
Ponderação por recência na recuperação: filtrar completamente informações desatualizadas.
Incluir carimbos de data/hora ao gerar informações: pedir ao LLM que se baseie em informações mais recentes.
Reflexão: revisar a compreensão de um tópico ao longo do tempo.
Consulta de metadados
Às vezes, os usuários fazem perguntas que são mais sobre metadados do que sobre conteúdo. Por exemplo, um usuário pode consultar filmes com alienígenas em 1980. Embora "filmes sobre alienígenas" possa ser pesquisado semanticamente, 1980 é mais uma correspondência exata.
Então, como podemos resolver esse problema? Harrison sugere gerar um filtro de metadados antes de realizar uma recuperação por busca semântica. Essa abordagem envolve dividir a pergunta em duas partes: o filtro de metadados (que é uma correspondência exata, como "ano igual a 1980") e a consulta (como "alienígenas ou algo assim", neste caso).
Mas como aplicamos o filtro de metadados? Muitos armazenamentos vetoriais permitem a inclusão direta de filtros de metadados na consulta. Se isso não for possível, ainda é possível filtrar os resultados após a recuperação.
Perguntas de múltiplos saltos
Às vezes, os usuários podem fazer várias perguntas de uma só vez, dificultando que a busca semântica recupere todas as informações necessárias a partir da pergunta original.
Harrison sugeriu que usemos agentes de IA como o LangChain para enfrentar esse desafio. O LangChain pode decompor a pergunta em várias etapas e usar o modelo de linguagem como um mecanismo de raciocínio para recuperar as informações necessárias. No entanto, essa abordagem atraente pode gerar muitas chamadas ao LLM, levando a custos mais altos.
Filip recomendou integrar GPTCache com LangChain porque o GPTCache pode armazenar perguntas e respostas geradas pelo LLM. Quando os usuários fizerem consultas semelhantes da próxima vez, o GPTCache realiza buscas semânticas e fornece respostas antes de consultar o LLM, economizando assim dinheiro dos usuários em chamadas ao LLM.
Perguntas e respostas
Recebemos muitas perguntas do nosso público durante o webinar e agradecemos sua participação. Harrison e Filip responderam a algumas das perguntas durante a sessão de perguntas e respostas, mas, devido a restrições de tempo, algumas ficaram sem resposta. Abaixo, compilamos uma lista das perguntas e respostas.
P: Você pode falar mais sobre a geração de prompts usando fontes externas de conhecimento? Quais são alguns exemplos ou truques que você usou? O LangChain planeja adicionar recursos que criem prompts otimizados?
A chave para prompts é ser claro sobre o que você quer. Se você não expressar claramente todas as suas intenções e as informações relevantes, o LLM não saberá o que fazer, assim como um humano não saberia o que fazer. Sim, adicionaremos alguns recursos relacionados à otimização de prompts.
Q: Como você vê o cenário atual da geração aumentada por recuperação? Existem muitas soluções como Langchain, Llama Index, Vectara e outras. Qual é a melhor solução para ajustar as etapas de recuperação, incluindo mecanismos de consulta de roteador e outros? Você mencionou que a recuperação poderia diferenciar a importância dos documentos, e isso já está disponível por meio do LangChain?
Todo esse espaço ainda está em um estágio inicial e se movendo super rápido. Vou distinguir a etapa de recuperação e a etapa de geração. Em recuperação, eu diria que o LangChain oferece a maior flexibilidade e modularidade para personalizar um sistema de recuperação baseado em vetores. O Vectara é uma excelente solução completa totalmente gerenciada para recuperação, que abstrai muitos dos detalhes. O LlamaIndex fornece algumas estruturas de dados mais interessantes, como árvores, para experimentar. Independentemente da etapa de recuperação que você escolher, todos estão usando o LangChain durante a etapa de geração — temos integrações com os três. Você pode realizar essa diferenciação com prompts personalizados.
Q: Como você espera que os casos de uso para recuperação e as compensações associadas sejam afetados à medida que os limites de contexto dos LLMs aumentam ao longo do tempo?
Por que ainda é necessário ter um banco de dados vetorial para transformers de contexto estendido, como o LLM de comprimento de contexto de 100 mil da Anthropic? Bem, bancos de dados vetoriais oferecem uma solução muito mais econômica. Quando se trata desses LLMs, eles fazem todo o trabalho pesado de computação, enquanto o banco de dados vetorial cuida do armazenamento. Esteja ciente de que as despesas de computação podem aumentar rapidamente. Então, se você quiser inserir mais contexto nos seus LLMs, deve lidar com esses custos maiores. É aí que entra a beleza de um banco de dados vetorial. É uma alternativa econômica porque a maioria das despesas está relacionada à computação, que é sempre 100 vezes mais cara.
Dependências de longo alcance — LLMs ainda podem esquecer coisas do "início" da conversa, mesmo com a arquitetura transformer.
Q: Quais são seus pensamentos sobre projetos open-source para disponibilizar conteúdo pré-vetorizado? A Cohere disponibilizou a Wikipedia, e outro projeto disponibilizou resumos do arXiv. Qual é o melhor modelo para disponibilizar conteúdo vetorial open-source?
É uma ótima ideia para aprender sobre busca semântica e evitar o tempo e o custo extras de gerar os vetores. Fora isso, ter os vetores pré-computados limita você severamente, pois não permite modificar como ou o que está sendo incorporado. Em relação ao melhor modelo, não há um que dê os melhores resultados para os dados que você está usando — quanto mais popular for o modelo que você usa, maior a chance de seu conjunto de dados ser usado.
Q: Como funciona o subpacote de memória no LangChain? Por que o histórico de mensagens de chat é separado da memória? Por que vocês o projetaram dessa forma?
Estamos trabalhando em uma reformulação da memória para tornar isso mais claro.
Assista à gravação completa do webinar!
Assista à gravação do webinar para obter mais informações sobre o LangChain e a discussão entre Filip e Harrison.
Continue lendo

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.

Why Not All VectorDBs Are Agent-Ready
Explore why choosing the right vector database is critical for scaling AI agents, and why traditional solutions fall short in production.

Vector Databases vs. Time Series Databases
Use a vector database for similarity search and semantic relationships; use a time series database for tracking value changes over time.



