Apesar do lançamento contínuo de modelos cada vez maiores e mais inteligentes, os modelos de linguagem grande (LLMs) generativos de última geração ainda sofrem de um grande problema: eles têm um desempenho ruim ao lidar com tarefas que exigem conhecimento especializado. Essa falta de especialização pode levar a problemas como fenômenos fantasmas, em que os modelos geram informações imprecisas ou fabricadas.Geração de aumento de recuperação (RAG)Isso é atenuado ao fornecer ao modelo acesso em tempo real a dados específicos do domínio de fontes externas, aumentando assim sua capacidade de fornecer respostas precisas e detalhadas.
Apesar dessas limitações, os modelos generativos ainda são ferramentas muito influentes que podem automatizar tarefas cotidianas, auxiliar em nosso trabalho diário e nos ajudar a interagir com os dados de novas maneiras. Então, como podemos aproveitar seu amplo conhecimento e, ao mesmo tempo, fazer com que eles atendam aos nossos cenários de uso específicos? A resposta está no fornecimento de dados relevantes à tarefa para a modelagem generativa.
Neste artigo, daremos uma olhada detalhada no Retrieval Augmented Generation (RAG), uma estrutura que aprimora os recursos dos modelos, permitindo que eles façam referência a dados externos. Exploraremos as limitações da modelagem generativa que contribuem para a RAG Explicaremos como o RAG funciona e analisaremos em detalhes a arquitetura do pipeline do RAG. Além disso, forneceremos alguns casos práticos de uso do RAG, proporemos métodos específicos de implementação do RAG, apresentaremos algumas técnicas avançadas do RAG e discutiremos os métodos de avaliação do RAG.
LLM é um termo amplo para modelos de linguagem treinados em grandes conjuntos de dados que são capazes de executar uma variedade de tarefas relacionadas a texto e linguagem. Os LLMs generativos são modelos capazes de gerar novos textos em resposta a solicitações do usuário, como os usados em chatbots, geralmente chamados demodelo generativo. Os LLMs que codificam dados textuais em um espaço semântico são então chamados deModelos de incorporação. Portanto, neste documento, usamos os termos modelos generativos e incorporados para distinguir entre esses dois tipos de modelos.
Limitações da modelagem generativa
Os modelos generativos são treinados para adquirir algum conhecimento geral por meio de treinamento em um grande número de conjuntos de dados, incluindo (mas não se limitando a) publicações em mídias sociais, livros, artigos acadêmicos e páginas da Web rastreadas. Como resultado, esses modelos podem gerar textos semelhantes aos humanos, responder a uma variedade de perguntas e auxiliar em tarefas como respostas, resumos e redação criativa.
No entanto, os conjuntos de dados de treinamento para os modelos generativos são inevitavelmente incompletos, pois carecem de informações sobre tópicos de nicho e novos desenvolvimentos após a data de corte do conjunto de dados. Os modelos generativos também não têm acesso a dados proprietários em bancos de dados ou repositórios internos. Além disso, quando esses modelos não sabem a resposta para uma pergunta, eles tendem a adivinhar e, às vezes, essa adivinhação é imprecisa. Esse fenômeno de geração de informações incorretas ou fictícias é conhecido como alucinação e pode levar a danos reais à reputação em aplicativos de IA voltados para o cliente.
A chave para melhorar o desempenho dos modelos generativos em tarefas especializadas e reduzir as ilusões é fornecer informações adicionais que não estão presentes nos dados de treinamento. É aí que entra o RAG.
O que é Retrieval Augmented Generation (RAG)?
Geração de aumento de recuperação (RAG) é uma maneira de recuperar dados adicionais relevantes para a tarefa atual, recuperando-os de uma fonte de dados externa parareforçarUma estrutura para modelagem generativa de macrolinguagem de conhecimento generalista.
As fontes de dados externas podem incluir bancos de dados, arquivos e repositórios internos, bem como dados disponíveis publicamente, como artigos de notícias, sites ou outros conteúdos on-line. O acesso a esses dados permite que os modelos forneçam respostas mais baseadas em fatos e citem fontes em suas respostas, evitando "adivinhações" quando as informações não podem ser encontradas no conjunto de dados de treinamento original do modelo.
Os casos de uso comuns do RAG incluem a recuperação de informações atualizadas, o acesso ao conhecimento especializado do domínio e a resposta a perguntas complexas e orientadas por dados.
Arquitetura RAG
Os componentes básicos do pipeline do RAG podem ser divididos emtrês componentesO componente de conhecimento é o mais importante: fontes de conhecimento externas, modelos de prompt e modelos generativos. Com esses componentes, grandes aplicativos orientados por modelos de linguagem podem gerar respostas mais precisas usando dados valiosos específicos da tarefa.
Fontes externas de conhecimento
Sem o apoio do conhecimento externo, os modelos generativos só podem se basear em seus própriosConhecimento paramétricogerando respostas, que são aprendidas durante a fase de treinamento do modelo. Com o RAG, podemos integrar no pipeline oFontes externas de conhecimentotambém conhecido comoConhecimento não paramétrico.
As fontes de dados externas geralmente são específicas da tarefa e, muitas vezes, estão além do escopo dos dados de treinamento originais do modelo ou de seu conhecimento parametrizado. Além disso, elas geralmente são armazenadas em bancos de dados vetoriais, que podem variar em termos de assunto e formato.
As fontes de dados externas comuns incluem bancos de dados internos da empresa, leis, regulamentos e documentos, literatura médica e científica e páginas da Web rastreadas. Os assistentes pessoais de IA, como o Copilot da Microsoft, utilizam uma ampla variedade de fontes de dados pessoais, incluindo e-mails, documentos e mensagens instantâneas, para fornecer respostas personalizadas e automatizar tarefas com mais eficiência.
Modelos de dicas
Os prompts são as ferramentas que usamos para comunicar solicitações ao modelo de geração. Os prompts podem conter vários elementos, mas normalmente incluem consultas, diretivas e contexto para orientar o modelo na geração de respostas relevantes.
Modelos de dicas Uma forma estruturada de gerar prompts padronizados é fornecida, na qual várias consultas e contextos podem ser inseridos. No processo RAG (Retrieval Augmented Generation), os dados relevantes são recuperados de fontes de dados externas e inseridos nos modelos de dicas para aumentá-las. Basicamente, o modelo de prompt funciona como uma ponte entre os dados externos e o modelo, fornecendo informações contextualmente relevantes para o modelo usar em seu raciocínio para gerar respostas precisas.
prompt_template = "As informações contextuais são as seguintes.\n"
"---------------------\n"
"{context_str}\n"
"---------------------\n"
"Responda às perguntas com base em informações contextuais e não em conhecimento prévio.\n"
"Pergunta: {query_str}\n"
"Resposta:"
Modelagem generativa de linguagem grande (LLM)
O componente final do RAG é o modelo generativo de linguagem grande (LLM), também conhecido como modelo generativo, que é usado para gerar a resposta final à consulta do usuário. Em seguida, prompts aprimorados, enriquecidos com informações fornecidas por uma base de conhecimento externa, são enviados ao modelo, que gera respostas combinando conhecimento interno e dados recém-recuperados.
Agora que já discutimos a arquitetura do RAG e seus principais componentes, vamos ver como eles se encaixam em um fluxo de trabalho do RAG.
Como funciona o RAG?
O RAG é uma estrutura de várias etapas com duas fases. Primeiro, na fase de ingestão, o conhecimento externo é pré-processado e preparado para recuperação. Em seguida, na fase de inferência, o modelo recupera dados relevantes da base de conhecimento externa, aumenta esses dados com solicitações do usuário e gera respostas. Agora, vamos examinar cada fase em mais detalhes.
Estágio 1: Ingestão
Em primeiro lugar, as fontes externas de conhecimento precisam ser preparadas. Em termos simples, os dados externos precisam ser limpos e transformados em um formato que o modelo possa entender. Isso é chamado de fase de absorção. Durante o processo de ingestão, os dados de texto ou imagem passam por um processo conhecido como quantitativo de seu formato original para incorporação. Uma vez gerados os embeddings, eles precisam ser armazenados de forma a facilitar a recuperação em uma data posterior. Geralmente, esses embeddings são armazenados em bancos de dados vetoriais para que as informações possam ser recuperadas de forma rápida e eficiente para tarefas posteriores.
Estágio 2: Raciocínio
Depois que os dados externos são codificados e armazenados no inferência estágio de recuperação, em que o modelo gera respostas ou responde a perguntas. O raciocínio é dividido em três etapas: recuperação, aprimoramento e geração.
recuperar (dados)
A fase de raciocínio começa com a recuperação, em que os dados são recuperados de uma fonte de conhecimento externa em resposta a uma consulta do usuário. Os métodos de recuperação variam em formato e complexidade; entretanto, no modelo RAG simples, em que o conhecimento externo é incorporado e armazenado em um banco de dados vetorial, oPesquisa de similaridade é a forma mais simples de pesquisa.
Para realizar uma pesquisa de similaridade, primeiro é necessário incorporar a consulta do usuário no mesmo espaço multidimensional que os dados externos, de modo que a consulta possa ser comparada diretamente com os dados externos incorporados. No Pesquisa de similaridade no qual a distância entre a consulta e os pontos de dados externos é calculada e o ponto com a menor distância é retornado, concluindo assim o processo de recuperação.
Aumento
Depois que os pontos de dados mais relevantes são recuperados de fontes de dados externas, o processo de aprimoramento os integra inserindo essas informações externas em modelos de prompt predefinidos.
Geração
Depois que os prompts aumentados são injetados na janela de contexto do modelo, o modelo prossegue para gerar a resposta final à entrada do usuário. Na fase de geração, o modelo combina sua compreensão linguística interna com os dados externos aprimorados para gerar respostas coerentes e contextualizadas.
Essa etapa envolve a geração de respostas de forma fluida e natural, ao mesmo tempo em que utiliza informações ricas para garantir que o resultado seja preciso e relevante para a consulta do usuário. O aprimoramento visa a integrar fatos externos, enquanto a geração traduz esse conhecimento combinado em uma saída bem estruturada e semelhante à humana para uma solicitação específica.
Exemplos de aplicativos RAG
Agora que já abordamos a definição do RAG, como ele funciona e sua arquitetura, exploraremos alguns cenários de aplicação prática para ver como essa estrutura pode ser usada no mundo real. Ao aumentar os modelos generativos de linguagem de grande porte com dados atualizados e específicos da tarefa, sua precisão, relevância e capacidade de lidar com tarefas especializadas podem ser aprimoradas. Como resultado, o RAG é amplamente usado na recuperação de informações em tempo real, em sistemas de recomendação de conteúdo e na construção de assistentes pessoais de IA.
Recuperação de informações em tempo real
Quando os modelos generativos são usados isoladamente, eles só podem recuperar informações existentes em seu conjunto de dados de treinamento. Na estrutura do RAG, entretanto, os modelos podem recuperar dados e informações de fontes externas, garantindo assim uma resposta mais precisa e atualizada. Um exemplo disso é a capacidade do ChatGPT-4o de acessar e recuperar informações diretamente de páginas da Web em tempo real. Esse é um caso de uso do RAG que faz uso de fontes de dados externas que não estão incorporadas em um banco de dados vetorial e é particularmente útil para responder a consultas de usuários sobre notícias ou outros eventos sensíveis ao tempo, como preços de ações, conselhos de viagem e atualizações meteorológicas.
Sistema de recomendação de conteúdo
Os sistemas de recomendação de conteúdo analisam os dados e as preferências do usuário para recomendar produtos ou conteúdos relevantes aos usuários. Tradicionalmente, esses sistemas exigem modelos de integração complexos e grandes conjuntos de dados de preferências do usuário. O RAG simplifica a construção de sistemas de recomendação integrando diretamente dados de usuários externos e contextualmente relevantes com o conhecimento genérico do modelo, o que permite gerar recomendações personalizadas.
Assistente pessoal de IA
Nossos dados pessoais, incluindo documentos, e-mails, mensagens do Slack e anotações, são uma fonte de dados importante para a geração de modelos. Ao executar o RAG em dados pessoais, podemos interagir com eles de forma conversacional, aumentando a eficiência e automatizando tarefas rotineiras. Com a ajuda de assistentes de IA, como o Copiloto responder cantando Noção (Ask AI), podemos usar avisos simples para pesquisar documentos relevantes, escrever e-mails personalizados, resumir documentos e atas, agendar reuniões e muito mais.
Como implementar o RAG
O RAG pode ser implementado por meio de várias estruturas diferentes que simplificam o processo de criação, fornecendo ferramentas e módulos pré-criados que permitem a integração de componentes individuais do RAG, bem como de serviços externos, como bancos de dados de vetores, ferramentas de geração de incorporação e outras APIs.
LangChain, LlamaIndex e DSPy são bibliotecas Python de código aberto poderosas com comunidades ativas que fornecem ferramentas e integrações poderosas para criar e otimizar pipelines RAG e aplicativos de Modelo de Linguagem Grande (LLM).
- LangChain Fornece blocos de construção, componentes e integrações de terceiros para ajudar a desenvolver aplicativos baseados em LLM. Ele pode ser usado em conjunto com LangGraph são usados juntos para criar um pipeline RAG no estilo proxy e, por meio do LangSmith Conduzir uma avaliação RAG.
- LlamaIndex é uma estrutura que fornece ferramentas para a criação de aplicativos LLM que integram fontes de dados externas. LlamaHubEssa é uma biblioteca avançada de carregadores de dados, proxies, conjuntos de dados e outros componentes que simplificam a criação de pipelines RAG.
- DSPy é uma estrutura modular para otimizar os pipelines do LLM. O LLM e o RM (Retrieval Model) podem ser configurados no DSPy para otimização contínua de pipelines RAG.
A Weaviate fornece integrado (como em um circuito integrado) responder cantando fórmulas A Weaviate pode ser usada com cada um desses frameworks. Para obter exemplos específicos, confira nosso notebook que mostra como usar a Weaviate com o LlamaIndex responder cantando DSPy Criar o pipeline do RAG.
Se você quiser colocar o RAG em funcionamento rapidamente, confira o VerbaO Verba é um aplicativo RAG de código aberto pronto para uso com um front-end brilhante pré-construído, que permite explorar visualmente conjuntos de dados, extrair insights e criar pipelines RAG personalizáveis em algumas etapas simples, sem precisar aprender uma estrutura totalmente nova. tarefas pessoais, como auxílio à pesquisa, análise de documentação interna e simplificação de várias tarefas relacionadas ao RAG.
Implementação de um RAG pronto para uso com o Verba
Tecnologia RAG
Os fluxos de trabalho tradicionais do RAG geralmente consistem em uma fonte de dados externa incorporada em um banco de dados vetorial que é recuperado por meio de pesquisas de similaridade. No entanto, há várias maneiras de aprimorar o fluxo de trabalho do RAG para obter resultados mais precisos e robustos, coletivamente chamados de RAG avançado.
A funcionalidade do pipeline RAG pode ser ampliada com a introdução de bancos de dados de gráficos e agentes que permitem raciocínio mais avançado e recuperação dinâmica de dados. Nas próximas seções, apresentamos algumas técnicas avançadas comuns de RAG e fornecemos uma visão geral do RAG baseado em agentes e do RAG de gráficos.
RAG avançado
As técnicas avançadas de RAG podem ser implementadas em todos os estágios do pipeline. Estratégias de pré-recuperação, como Filtragem de metadados e texto pedaço A eficiência e a relevância da pesquisa podem ser aprimoradas restringindo a pesquisa e garantindo que apenas as partes mais relevantes dos dados sejam consideradas. O uso de técnicas de pesquisa mais avançadas, como Pesquisa híbridaque combina as vantagens da pesquisa por similaridade e da pesquisa por palavra-chave, também pode produzir resultados de recuperação mais robustos. Por fim, ao usar um modelo de classificação para os resultados da recuperação reordenar e gerados usando um Modelo de Linguagem Grande (LLM) ajustado com base em dados específicos do domínio podem melhorar a qualidade dos resultados gerados.
Se você quiser se aprofundar nesse tópico, confira nosso artigo sobre Tecnologia RAG avançada A postagem no blog.
RAG de proxy
Agente de IA são sistemas autônomos que podem interpretar informações, fazer planos e tomar decisões. Quando adicionados a um pipeline de RAG, os agentes podem reformular as consultas dos usuários e recuperar informações mais relevantes quando os resultados iniciais são imprecisos ou irrelevantes. Os RAGs baseados em agentes também podem lidar com consultas mais complexas que exigem raciocínio em várias etapas, como comparar informações em vários documentos, fazer perguntas de acompanhamento e ajustar iterativamente as estratégias de recuperação e geração.
Se você quiser se aprofundar em um pipeline RAG que inclui proxies e aproveita as vantagens de técnicas avançadas, como fragmentação e reordenação de texto, confira esta publicação no blog da LlamaIndex escritos correspondência cadernos.
Gráficos RAG
O RAG tradicional é excelente para resolver tarefas de perguntas e respostas por meio de recuperação simples, mas não consegue responder a perguntas que precisam ser respondidas a partir dototalO problema de derivar conclusões de uma base de conhecimento externa. O RAG gráfico visa solucionar esse problema usando um modelo generativo para criar um gráfico de conhecimento que extrai e armazena relacionamentos entre entidades importantes, que são então adicionadas como fontes de dados ao processo RAG. Isso permite que o sistema RAG responda a consultas que precisam comparar e resumir vários documentos e fontes de dados.
Para obter mais informações sobre o processo de criação de um RAG gráfico, consulte GraphRAG da Microsoft pacote de softwareresponder cantandoArquivo (de computador).
Como avaliar o RAG
O RAG é uma estrutura multifásica e de várias etapas que requer uma abordagem global e refinada.avaliação. Essa abordagem de avaliação garante a confiabilidade em nível de componente e a precisão geral. Nesta seção, exploramos esses dois métodos de avaliação e apresentamos o RAGAS, uma estrutura de avaliação popular.
Avaliação em nível de componente
Em nível de componente, as avaliações RAG geralmente se concentram na avaliação da qualidade dos recuperadores e geradores, pois eles desempenham um papel fundamental na geração de respostas precisas e relevantes.
A avaliação dos pesquisadores se concentra principalmente na precisão e na relevância. Nesse contexto, aprecisão mede a precisão com que o recuperador seleciona as informações que abordam diretamente a consulta, e o relevância Em seguida, ele avalia a adequação dos dados recuperados às necessidades específicas e ao contexto da consulta.
Por outro lado, a avaliação do gerador está relacionada à veracidade e à correção.validade Avalie se a resposta gerada pelo modelo reflete com precisão as informações dos documentos relevantes e verifique a consistência da resposta com a fonte original.correção Em seguida, a resposta gerada é avaliada para ver se é autêntica e consistente com a situação real ou com a resposta esperada no contexto da consulta.
Avaliação de ponta a ponta
Embora o Retriever e o Generator sejam dois componentes separados, eles dependem um do outro para gerar respostas consistentes às consultas do usuário.
A computação da similaridade semântica das respostas é um método simples e eficiente para avaliar como os recuperadores e geradores trabalham juntos.Similaridade semântica das respostas A similaridade semântica entre a resposta gerada e a amostra de resposta real é calculada. Uma alta similaridade entre a resposta gerada e as amostras de respostas reais indica que o processo é capaz de recuperar informações relevantes e gerar respostas contextualmente adequadas.
A estrutura de avaliação do RAG fornece uma metodologia, ferramenta ou plataforma estruturada para avaliar os processos do RAG.RAGAS(Retrieval Augmented Generation Assessment) é uma estrutura particularmente popular que fornece um conjunto de métricas para avaliar a relevância da recuperação, a qualidade da geração e a autenticidade sem a necessidade de anotar manualmente os dados. Ouça este podcast da Weaviate para saber em primeira mão, com os criadores do RAGAS, como o RAGAS funciona e as técnicas avançadas para otimizar as pontuações do RAGAS.
RAG vs. ajuste fino
O RAG é uma das maneiras de ampliar os recursos e atenuar as limitações dos modelos de linguagem grandes e generativos. O ajuste fino de modelos de linguagem grandes é uma técnica particularmente popular que permite que os modelos executem tarefas altamente especializadas, treinando-os em dados específicos do domínio. Embora o ajuste fino possa ser adequado a determinados casos de uso específicos, como o treinamento de um modelo de biglang para adotar um determinado tom ou estilo de escrita, o RAG costuma ser a maneira mais direta de melhorar a precisão do modelo, reduzir ilusões e personalizar um modelo de biglang para uma tarefa específica.
A vantagem do RAG é que ele elimina a necessidade de atualizar os pesos do modelo generativo subjacente, o que geralmente é um processo caro e demorado. O RAG permite que o modelo acesse dinamicamente os dados externos, melhorando assim a precisão sem um retreinamento caro. Isso o torna uma solução prática para aplicativos que exigem informações em tempo real. Na próxima seção, vamos nos aprofundar na arquitetura do RAG e em como seus componentes trabalham juntos para criar um sistema avançado de aprimoramento de recuperação.
resumos
Neste documento, apresentamos o RAG como uma estrutura que aproveita o conhecimento externo específico da tarefa para melhorar o desempenho de aplicativos orientados por modelos generativos. Aprendemos sobre os diferentes componentes do processo RAG, incluindo fontes de conhecimento externo, modelos de dicas e modelos generativos, e como eles trabalham juntos para permitir a recuperação, o aprimoramento e a geração. Também discutimos alguns casos de uso e estruturas de implementação populares para RAG, como LangChain, LlamaIndex e DSPy. Por fim, mencionamos algumas das técnicas especializadas para RAG, incluindo métodos RAG de alto nível, RAG baseado em agentes e RAG gráfico, bem como métodos para avaliar processos RAG.
No mínimo, cada seção deste artigo poderia ser considerada uma postagem de blog ou até mesmo um capítulo de um livro. Portanto, elaboramos um guia de recursos com artigos acadêmicos, publicações em blogs, vídeos do YouTube, tutoriais, notebooks e receitas para ajudá-lo a saber mais sobre os tópicos, estruturas e métodos apresentados neste artigo.
Guia de recursos
📄 Geração aprimorada de recuperação para tarefas de PNL com uso intenso de conhecimento (Documento original do RAG)
👩🍳 Primeiros passos com o RAG no DSPy(Formulação)
👩🍳 RAG simples no LlamaIndex(Formulação)
📝 Tecnologia RAG avançada(postagem no blog)
📒 RAG baseado em agente com vários agentes de documentos(Caderno de anotações)
📝 Visão geral da avaliação RAG(postagem no blog)
📄 Avaliação da geração de aprimoramento da recuperação: uma visão geral(Artigos acadêmicos)