RAG (Retrieval Augmented Generation) em Databricks

Prévia

Esse recurso está em Prévia pública.

O Agent Framework é composto por um conjunto de ferramentas no site Databricks criado para ajudar os desenvolvedores a criar, implantar e avaliar agentesAI com qualidade de produção, como os aplicativos Retrieval Augmented Generation (RAG).

Este artigo aborda o que é RAG e os benefícios do desenvolvimento de aplicações RAG em Databricks.

Diagrama LLMops simplificado

O Agent Framework permite que os desenvolvedores iterem rapidamente em todos os aspectos do desenvolvimento do RAG usando um fluxo de trabalho LLMOps de ponta a ponta.

Requisitos

  • Os recursos assistivos de IA desenvolvidos por parceiros devem estar habilitados para seu espaço de trabalho.

  • Todos os componentes de um aplicativo de agente devem estar em um único workspace. Por exemplo, no caso de uma aplicação RAG, o modelo de serviço e a instância de busca vetorial precisam estar no mesmo workspace.

O que é RAG?

O RAG é uma técnica de design de IA generativa que aprimora grandes modelos de linguagem (LLM) com conhecimento externo. Esta técnica melhora os LLMs das seguintes maneiras:

  • Conhecimento proprietário: o RAG pode incluir informações proprietárias não utilizadas inicialmente para treinar o LLM, como memorandos, e-mails e documentos para responder a perguntas específicas do domínio.

  • Informações atualizadas: uma aplicação RAG pode fornecer ao LLM informações de fontes de dados atualizadas.

  • Citação de fontes: o RAG permite que os LLMs citem fontes específicas, permitindo que os usuários verifiquem a precisão factual das respostas.

  • Segurança de dados e listas de controle de acesso (ACL): a etapa de recuperação pode ser projetada para recuperar seletivamente informações pessoais ou proprietárias com base nas credenciais do usuário.

Sistemas de IA compostos

Uma aplicação RAG é um exemplo de um sistema de IA composto: ela expande as capacidades linguísticas do LLM combinando-o com outras ferramentas e procedimentos.

Na forma mais simples, uma aplicação RAG faz o seguinte:

  1. Recuperação: a solicitação do usuário é usada para consultar um armazenamento de dados externo, como um armazenamento vetorial, uma busca por palavras-chave em texto ou um banco de dados SQL. O objetivo é obter dados de suporte para a resposta do LLM.

  2. Aumento: os dados recuperados são combinados com a solicitação do usuário, geralmente usando um modelo com formatação e instruções adicionais, para criar um prompt.

  3. Geração: o prompt é passado para o LLM, que então gera uma resposta para a consulta.

Dados RAG não estruturados vs. dados estruturados

A arquitetura RAG pode funcionar com dados de suporte não estruturados ou estruturados. Os dados que você usa com RAG dependem do seu caso de uso.

Dados não estruturados: dados sem uma estrutura ou organização específica. Documentos que incluem texto e imagens ou conteúdo multimídia, como áudio ou vídeos.

  • PDFs

  • Documentos do Google/Office

  • Wikis

  • Imagens

  • Vídeos

Dados estruturados: dados tabulares organizados em linhas e colunas com um esquema específico, como tabelas em um banco de dados.

  • Registros de clientes em um sistema de BI ou Data Warehouse

  • Dados de transação de um banco de dados SQL

  • Dados de APIs de aplicativos (por exemplo, SAP, Salesforce, etc.)

As seções a seguir descrevem um aplicativo RAG para dados não estruturados.

Pipeline de dados RAG

O pipeline de dados RAG pré-processa e indexa documentos para uma recuperação rápida e precisa.

O diagrama abaixo mostra um exemplo de pipeline de dados para um conjunto de dados não estruturados usando um algoritmo de pesquisa semântica. Os trabalhos do Databricks orquestram o passo.

Pipeline de dados RAG
  1. Ingestão de dados - ingestão de dados de sua fonte proprietária. Armazene esses dados em uma tabela Delta ou em um Volume do Unity Catalog.

  2. Processamento de documentos: você pode executar essas tarefas usando Databricks Jobs, Databricks Notebooks e Delta Live Tables.

    • Analise documentos brutos: transforme os dados brutos em um formato utilizável. Por exemplo, extraindo o texto, tabelas e imagens de uma coleção de PDFs ou usando técnicas de reconhecimento óptico de caracteres para extrair texto de imagens.

    • Extração de metadados: extraia metadados dos documentos, como títulos de documentos, números de página e URLs, para ajudar a etapa de recuperação a fazer consultas mais precisas.

    • Divisão de documentos: divida os dados em partes que caibam na janela de contexto do LLM. Recuperar essas partes focadas, em vez de documentos inteiros, dá ao LLM um conteúdo mais direcionado para gerar respostas.

  3. Incorporação de partes - Um modelo de incorporação consome as partes para criar representações numéricas das informações chamadas incorporações vetoriais. Vetores representam o significado semântico do texto, não apenas palavras-chave superficiais. Neste cenário, você calcula as incorporações e usa o Model Serving para servir o modelo de incorporação.

  4. Armazenamento de incorporação - Armazene as incorporações vetoriais e o texto da parte em uma tabela Delta sincronizada com Vector Search.

  5. Banco de dados vetorial - Como parte do Vector Search, as incorporações e metadados são indexados e armazenados em um banco de dados vetorial para fácil consulta pelo agente RAG. Quando um usuário faz uma consulta, sua solicitação é incorporada em um vetor. O banco de dados então usa o índice vetorial para encontrar e retornar as partes mais semelhantes.

Cada etapa envolve decisões de engenharia que impactam a qualidade da aplicação RAG. Por exemplo, escolher o tamanho certo das partes na etapa (3) garante que o LLM receba informações específicas, mas contextualizadas, enquanto selecionar um modelo de incorporação apropriado na etapa (4) determina a precisão das partes retornadas durante a recuperação.

O que é um agente RAG?

Um agente de geração aumentada de recuperação (RAG) é uma parte fundamental de uma aplicação RAG que aprimora as capacidades dos grandes modelos de linguagem (LLMs) ao integrar a recuperação de dados externos. O agente RAG processa consultas de usuários, recupera dados relevantes de um banco de dados vetorial e passa esses dados para um LLM gerar uma resposta.

Ferramentas como LangChain ou Pyfunc conectam essas etapas ligando seus inputs e outputs.

O diagrama abaixo mostra um agente RAG para um chatbot e os recursos do Databricks usados para construir cada agente.

Fluxo de trabalho da arquitetura do chatbot RAG
  1. Pré-processamento de consultas - Um usuário envia uma consulta, que é então pré-processada para torná-la adequada para consulta no banco de dados vetorial. Isso pode envolver colocar a solicitação em um modelo ou extrair palavras-chave.

  2. Vetorização de consulta - Use o Model Serving para incorporar a solicitação usando o mesmo modelo de incorporação usado para incorporar as partes no pipeline de dados. Essas incorporações permitem a comparação da similaridade semântica entre a solicitação e as partes pré-processadas.

  3. Fase de recuperação - O recuperador, uma aplicação responsável por buscar informações relevantes, pega a consulta vetorizada e realiza uma busca de similaridade vetorial usando o Vector Search. As partes dos dados mais relevantes são classificadas e recuperadas com base em sua similaridade com a consulta.

  4. Aumento do prompt - O recuperador combina as partes dos dados recuperados com a consulta original para fornecer contexto adicional ao LLM. O prompt é cuidadosamente estruturado para garantir que o LLM entenda o contexto da consulta. Muitas vezes, o LLM tem um modelo para formatar a resposta. Esse processo de ajustar o prompt é conhecido como engenharia de prompt.

  5. Fase de geração do LLM - o LLM gera uma resposta usando a consulta aumentada enriquecida pelos resultados da recuperação. O LLM pode ser um modelo personalizado ou um modelo de base.

  6. Pós-processamento - A resposta do LLM pode ser processada para aplicar lógica de negócios adicional, adicionar citações ou refinar o texto gerado com base em regras ou restrições predefinidas.

Diversas medidas de segurança podem ser aplicadas ao longo deste processo para garantir conformidade com as políticas da empresa. Isso pode envolver filtragem de solicitações apropriadas, verificação de permissões do usuário antes de acessar fontes de dados e uso de técnicas de moderação de conteúdo nas respostas geradas.

Desenvolvimento de agentes RAG em nível de produção

Faça a iteração rápida do desenvolvimento do agente usando os seguintes recursos:

Crie e registre agentes usando qualquer biblioteca e o MLflow. Parametrize seus agentes para experimentar e iterar rapidamente no desenvolvimento de agentes.

Implemente agentes em produção com suporte nativo para streaming de tokens e registro de solicitações/respostas, além de um aplicativo de revisão integrado para obter feedback do usuário para seu agente.

O rastreamento de agentes permite registrar, analisar e comparar rastros no seu código de agente para depurar e entender como seu agente responde às solicitações.

Avaliação e monitoramento

Avaliação e monitoramento ajudam a determinar se sua aplicação RAG atende aos requisitos de qualidade, custo e latência. A avaliação ocorre durante o desenvolvimento, enquanto o monitoramento acontece uma vez que a aplicação é implementada em produção.

O RAG sobre dados não estruturados possui muitos componentes que impactam a qualidade. Por exemplo, mudanças na formatação dos dados podem influenciar as partes recuperadas e a capacidade do LLM de gerar respostas relevantes. Portanto, é importante avaliar componentes individuais além da aplicação como um todo.

Para obter mais informações, consulte O que é Mosaic AI Agent Evaluation?

Disponibilidade da região

Para disponibilidade regional do Agent Framework, consulte Recursos com disponibilidade regional limitada