Geração Aumentada de Recuperação (RAG) em Databricks
Este artigo fornece uma visão geral da geração aumentada de recuperação (RAG) e descreve o suporte ao aplicativo RAG no Databricks.
O que é geração aumentada de recuperação?
RAG é um padrão de design generativo de IA que envolve a combinação de um grande modelo de linguagem (LLM) com recuperação de conhecimento externo. O RAG é necessário para conectar dados tempo-real às suas aplicações generativas de IA. Isso melhora a precisão e a qualidade da aplicação, fornecendo seus dados como contexto para o LLM no momento da inferência.
A plataforma Databricks fornece um conjunto integrado de ferramentas que suporta os seguintes cenários RAG.
Tipo de RAG |
Descrição |
Exemplo de caso de uso |
---|---|---|
Dados não estruturados |
Uso de documentos – PDFs, wikis, conteúdos de sites, documentos do Google ou Microsoft Office e assim por diante. |
Chatbot sobre documentação do produto |
Dados estruturados |
Uso de dados tabulares - Tabelas Delta, dados de APIs de aplicativos existentes. |
Chatbot para verificar o status do pedido |
Ferramentas e chamadas de funções |
Chame APIs internas ou de terceiros para realizar tarefas específicas ou atualizar status. Por exemplo, realizar cálculos ou acionar um fluxo de trabalho comercial. |
Chatbot para fazer um pedido |
Agentes |
Decida dinamicamente como responder à query de um usuário usando um LLM para escolher uma sequência de ações. |
Chatbot que substitui um agente de atendimento ao cliente |
Arquitetura de aplicativo RAG
A seguir ilustramos os componentes que compõem um aplicativo RAG.
Os aplicativos RAG requerem um pipeline e um componente de cadeia para executar o seguinte:
Indexação Um pipeline que ingere dados de uma origem e os indexa. Esses dados podem ser estruturados ou não estruturados.
Recuperação e geração Esta é a cadeia RAG real. Ele pega a query do usuário e recupera dados semelhantes do índice e, em seguida, passa os dados, junto com a query, para o modelo LLM.
O diagrama abaixo demonstra esses componentes principais:
Exemplo de RAG de dados não estruturados
As seções a seguir descrevem os detalhes do pipeline de indexação e da cadeia RAG no contexto de um exemplo de RAG de dados não estruturados.
Pipeline de indexação em um aplicativo RAG
As etapas a seguir descrevem o pipeline de indexação:
Ingira dados de sua fonte de dados proprietária.
Divida os dados em partes que possam caber na janela de contexto do LLM fundamental. Este passo também inclui a análise dos dados e a extração de metadados. Esses dados são comumente chamados de base de conhecimento na qual o LLM básico é treinado.
Use um modelo de incorporação para criar incorporações vetoriais para os blocos de dados.
Armazene os embeddings e metadados em um banco de dados vetorial para torná-los acessíveis para consulta pela cadeia RAG.
Recuperação usando a cadeia RAG
Após a preparação do índice, a cadeia RAG da aplicação pode ser atendida para responder às dúvidas. Os passos e o diagrama a seguir descrevem como o aplicativo RAG responde a uma solicitação recebida.
Incorpore a solicitação usando o mesmo modelo de incorporação usado para incorporar os dados na base de conhecimento.
query o banco de dados vetorial para fazer uma pesquisa de similaridade entre a solicitação incorporada e os blocos de dados incorporados no banco de dados vetorial.
Recupere os blocos de dados mais relevantes para a solicitação.
Alimente os blocos de dados relevantes e a solicitação para um LLM personalizado. Os blocos de dados fornecem contexto que ajuda o LLM a gerar uma resposta apropriada. Muitas vezes, o LLM possui um padrão de como formatar a resposta.
Gere uma resposta.
O diagrama a seguir ilustra esse processo: