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.

Arquitetura de aplicativo RAG completa

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:

Arquitetura de aplicativo RAG apenas para o pipeline de indexação e recuperação e geração, a cadeia RAG, pedaços de RAG. A seção superior mostra a cadeia RAG consumindo a query e os passos subsequentes de processamento query , expansão query , recuperação e reclassificação, engenharia de prompt, geração de resposta inicial e pós-processamento, tudo antes de gerar uma resposta à query. A parte inferior mostra a cadeia RAG conectada a um pipeline de dados separado para 1. dados não estruturados, que inclui análise, fragmentação e incorporação de dados e armazenamento desses dados em um banco de dados ou índice de pesquisa vetorial. Pipeline de dados não estruturado requer interação com modelos de incorporação e fundamentais para alimentar a cadeia RAG e 2. pipeline de dados estruturado, que inclui o consumo de blocos de dados já incorporados e a execução de tarefas ETL e engenharia de recursos antes de servir esses dados à cadeia RAG

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:

  1. Ingira dados de sua fonte de dados proprietária.

  2. 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.

  3. Use um modelo de incorporação para criar incorporações vetoriais para os blocos de dados.

  4. 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.

  1. Incorpore a solicitação usando o mesmo modelo de incorporação usado para incorporar os dados na base de conhecimento.

  2. 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.

  3. Recupere os blocos de dados mais relevantes para a solicitação.

  4. 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.

  5. Gere uma resposta.

O diagrama a seguir ilustra esse processo:

RAG fluxo de trabalho após uma solicitação