Este documento descreve uma arquitetura de referência para projetar um subsistema de ingestão de dados no SAP para aplicativos de IA generativa com capacidade de RAG. Esse subsistema usa o ABAP SDK for Google Cloud no local ou em qualquer edição na nuvem para se integrar aos serviços do Google Cloud necessários para criar aplicativos de IA generativa compatíveis com o RAG.
Um aplicativo de IA generativa com capacidade de geração aumentada de recuperação (RAG, na sigla em inglês) tem vários componentes, entre os quais o subsistema de ingestão de dados é responsável por preparar e processar os dados corporativos. Esse subsistema ajuda você a preparar e armazenar os dados da empresa como embeddings em um banco de dados de vetores, para interações precisas e úteis de IA.
Como muitas organizações usam sistemas ERP da SAP para armazenar dados corporativos, este documento oferece orientações sobre a integração de soluções de armazenamento de dados e bancos de dados de pesquisa de vetores do Google Cloud como parte do subsistema de ingestão de dados. Assim, você pode fazer escolhas informadas e usar os serviços do Google Cloud de forma eficaz para criar um pipeline robusto e eficiente para seus aplicativos de IA generativa com capacidade de RAG.
O público-alvo deste documento inclui desenvolvedores ABAP, arquitetos de soluções SAP e arquitetos de nuvem. O documento pressupõe que você conheça os conceitos de terminologia da pesquisa vetorial e RAG.
Arquitetura
O diagrama a seguir mostra uma arquitetura de referência que ilustra os componentes de um subsistema de ingestão de dados no SAP:
Essa arquitetura de subsistema de ingestão de dados inclui os seguintes componentes:
# | Componente | Detalhes |
---|---|---|
1 | Subsistema de ingestão de dados | Prepara e processa dados corporativos para gerar embeddings vetoriais. Esses embeddings são armazenados em um banco de dados de vetores adequado no Google Cloud. Você também pode armazenar seus dados corporativos no Google Cloud. |
2 | SDK do ABAP para Google Cloud | O SDK processa a comunicação entre o subsistema de ingestão de dados e vários serviços do Google Cloud. |
3 | Armazenamento de dados | Opcional. Solução de armazenamento de dados do Google Cloud, como BigQuery ou Cloud Storage, usada para armazenar dados empresariais, estruturados e não estruturados. Para mais informações, consulte Armazenar dados corporativos no Google Cloud. |
4 | Modelo de embedding (Vertex AI) | Modelos de IA que geram embeddings de várias fontes de dados empresariais. |
5 | Produtos da Pesquisa vetorial | Armazena as inclusões em um banco de dados de vetor, como o Cloud Storage ou o BigQuery, onde é possível realizar a pesquisa semântica. |
Subsistema de ingestão de dados
Esta seção explica o subsistema de ingestão de dados que transforma seus dados corporativos em embeddings e os armazena em um banco de dados vetorial para uso com aplicativos de IA generativa com capacidade de RAG. Esse subsistema pode processar uma ampla variedade de dados do SAP, incluindo documentos, imagens, regras de negócios e instruções, para gerar incorporações.
Preparar dados corporativos
Antes de implantar seu aplicativo de IA generativa compatível com RAG pela primeira vez, carregue as incorporações dos dados corporativos atuais do seu sistema SAP. Você pode fazer isso criando novos programas em lote ou reutilizando os existentes que podem ler os dados da empresa em partes gerenciáveis.
Depois de realizar o carregamento inicial de dados e incorporações, o subsistema de ingestão de dados precisa acompanhar todas as mudanças nos dados do SAP. Sejam novos registros, atualizações de registros existentes ou exclusões, o índice de pesquisa de vetor precisa refletir essas mudanças. Para fazer isso, use os pontos apropriados no framework de desenvolvimento de aplicativos SAP, como complementos empresariais (BAdIs) e gerenciadores de eventos RAP. Isso garante que as incorporação permaneçam atualizadas e que seus aplicativos de IA sempre tenham as informações mais recentes.
Armazenar dados corporativos no Google Cloud (opcional)
Os sistemas SAP podem conter dados empresariais estruturados e não estruturados. Opcionalmente, é possível armazenar esses dados corporativos no Google Cloud para recuperação do subsistema de veiculação.
Para armazenar dados corporativos, use os seguintes serviços do Google Cloud:
- Para transmitir dados estruturados da SAP para o BigQuery, use o BigQuery Connector para SAP ou o método
INSERT_ALL_TABLEDATA
da classe/GOOG/CL_BIGQUERY_V2
do SDK ABAP for Google Cloud. - Para armazenar dados não estruturados, como imagens e documentos PDF no Cloud Storage,
use a classe
/GOOG/CL_STORAGE_V1
do SDK ABAP for Google Cloud. Para conferir um exemplo de código que ilustra como fazer upload de um objeto para um bucket do Cloud Storage, consulte Fazer upload de um arquivo em um bucket. - Para configurar o Cloud Storage como um repositório de conteúdo para SAP, implemente e personalize a solução de exemplo disponível no GitHub, Google Cloud Storage: Content Server for SAP.
Gerar embeddings com base em dados empresariais
Para gerar embeddings de texto e multimodais com base nos dados corporativos, use modelos de embedding com o SDK da Vertex AI para ABAP.
Os embeddings são basicamente códigos numéricos que representam texto, imagens ou vídeos de uma forma que captura como eles estão relacionados. Os aplicativos usam esses códigos para entender e gerar linguagem, reconhecendo até mesmo os significados e relacionamentos mais complexos no seu conteúdo específico. O processo funciona transformando texto, imagens e vídeos em listas de números, conhecidos como vetores, que são projetados para capturar de forma eficaz o significado do conteúdo original.
Armazenar os embeddings
Para armazenar e pesquisar de forma eficiente as incorporações geradas com base nos dados corporativos da SAP, use os produtos de pesquisa de vetores do Google Cloud, que funcionam como um banco de dados de vetores.
Para armazenar as representações nos dados corporativos do SAP, escolha um banco de dados de vetores da lista a seguir:
Considerações sobre o design
Confira a seguir as principais considerações de design para escolher um banco de dados vetorial:
- Desempenho: fatores como velocidade de indexação para novos vetores, velocidade de pesquisa (latência), escalonabilidade, compensação entre a recuperação de todos os resultados relevantes (recall) e apenas os mais relevantes (precisão).
- Características dos dados: o tamanho dos vetores de incorporação, o tamanho do conjunto de dados de vetores e a distribuição de dados afetam o custo, o desempenho e a indexação.
- Recursos: funções de distância com suporte, como o algoritmo euclidiano e a semelhança de coseno, capacidade de filtrar, combinar a pesquisa de palavras-chave e de vetores e suporte à pesquisa de vizinhos mais próximos aproximados (ANN).
- Integração: integração existente e facilidade de ingestão de dados dos seus aplicativos.
- Custo: modelo de preços, armazenamento e custos de consulta correspondentes aos dados e ao volume de pesquisa.
Para permitir a pesquisa e análise eficientes, armazene as embeddings em um banco de dados de vetores, junto com os identificadores que as vinculam aos dados de origem.
A decisão de armazenar dados corporativos em uma solução de armazenamento do Google Cloud depende principalmente do local do seu subsistema de fornecimento:
Se o subsistema de prestação for SAP, o armazenamento de dados corporativos fora do SAP é opcional, já que você já tem acesso aos dados corporativos no SAP.
Se o subsistema de prestação estiver fora do SAP, como o App Engine, talvez seja necessário armazenar os dados corporativos em uma solução de armazenamento do Google Cloud adequada para extração de dados eficiente. Isso pode ser evitado se o subsistema de serviço puder fazer chamadas remotas no SAP para recuperar os dados.
Saiba como gerar e armazenar embeddings
Esta seção explica como gerar e armazenar embeddings com base nos dados da empresa. Há dois padrões principais para gerar e armazenar embeddings:
Gerar embeddings no SAP: gere embeddings dos dados corporativos que residem no sistema SAP ERP usando um modelo de embeddings adequado com o SDK da Vertex AI para ABAP e armazene-os em um banco de dados de vetor.
Gerar embeddings no Google Cloud: gere embeddings dos dados corporativos armazenados em um meio de armazenamento no Google Cloud usando uma abordagem sem servidor, como as funções do Cloud Run ou o BigQuery, e armazene-os em um banco de dados de vetores.
Gerar embeddings no SAP
Para gerar embeddings de dados corporativos da SAP localmente no sistema SAP, use vários modelos de embedding com o SDK da Vertex AI para ABAP. Esses embeddings gerados podem ser enviados para um banco de dados de vetores adequado no Google Cloud usando um dos mecanismos de ingestão integrados do SDK.
Você pode decidir quais dados converter em embeddings com base na sua necessidade de recursos de pesquisa vetorial. Para saber como gerar embeddings com o SDK da Vertex AI para ABAP, consulte Gerar embeddings.
Esta seção explica os tipos de dados comuns do SAP e como gerar embeddings usando o SDK da Vertex AI para ABAP.
Dados estruturados da empresa armazenados em tabelas do SAP
Você gera principalmente incorporações para uma ou mais colunas de texto nas tabelas do SAP. Por exemplo, se você quiser pesquisar fornecedores pelo nome, endereço ou número de telefone, concatena os valores dessas colunas e gera uma incorporação de texto desse valor combinado. Alguns outros valores de texto que são bons candidatos para incorporação de texto são descrições em tabelas de texto, textos longos vinculados a transações comerciais.
O exemplo de código abaixo ilustra como gerar incorporações de texto e armazená-las em um bucket do Cloud Storage:
DATA(lv_supplier) = CONV i_supplier-supplier( 'SUPPLIER' ).
SELECT SINGLE
concat_with_space( supplierfullname, phonenumber1, 1 )
AS line
FROM i_supplier
WHERE supplier = @lv_supplier
INTO @DATA(lv_search_string).
DATA(ls_embedding_template) =
VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
id = lv_supplier
content = lv_search_string ).
NEW /goog/cl_embeddings_model(
iv_model_key = 'EMBEDDING_MODEL_KEY'
)->gen_text_embeddings_by_struct(
is_input = ls_embedding_template
)->send_struct_to_gcs( iv_bucket_name = 'BUCKET_NAME' ).
Substitua:
SUPPLIER
: um código alfanumérico exclusivo para identificar um fornecedor.EMBEDDING_MODEL_KEY
: a chave do modelo para gerar embeddings, que é configurada nos parâmetros de geração de modelos.BUCKET_NAME
: o nome do bucket de destino do Cloud Storage.
Imagens
Muitas indústrias, incluindo manufatura e varejo, capturam e armazenam imagens de objetos de negócios importantes, como matérias-primas, produtos acabados e uma ampla gama de equipamentos. Para permitir a pesquisa eficiente desses objetos de negócios usando descrições textuais ou semelhança visual, use embeddings multimodais.
O exemplo de código abaixo ilustra como gerar embeddings multimodais para imagens e publicá-las em um tópico do Pub/Sub:
"Populate image data in XSTRING format
DATA(lv_image_xstring) = VALUE xstring( ).
DATA(lv_image_base64) =
xco_cp=>xstring( lv_image_xstring
)->as_string( xco_cp_binary=>text_encoding->base64
)->value.
DATA(ls_image) =
VALUE /goog/cl_embeddings_model=>ty_image(
bytes_base64_encoded = lv_image_base64 ).
DATA(ls_embedding_template) =
VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
id = 'UNIQUE_ID'
content = 'CONTEXTUAL_TEXT' ).
NEW /goog/cl_embeddings_model(
iv_model_key = 'EMBEDDING_MODEL_KEY'
)->gen_image_embeddings_by_struct(
iv_image = ls_image
is_input = ls_embedding_template
)->send_struct_to_pubsub( iv_topic_id = 'PUBSUB_TOPIC_ID' ).
Substitua:
UNIQUE_ID
: um identificador exclusivo de uma imagem. Por exemplo, pode ser uma combinação do nome do arquivo e da data de criação da imagem.CONTEXTUAL_TEXT
: opcional. Adiciona contexto e significado ao conteúdo de entrada que é transmitido ao modelo de embeddings.EMBEDDING_MODEL_KEY
: a chave do modelo para gerar embeddings, que é configurada nos parâmetros de geração de modelos.PUBSUB_TOPIC_ID
: o ID do tópico do Pub/Sub em que as inclusões vão ser publicadas.
Documentos
Os processos de negócios do SAP lidam com diferentes tipos de documentos, como contratos, manuais, guias e folhas de dados de segurança. Esses documentos podem conter informações importantes necessárias para tomar decisões de negócios. Para encontrar esses dados armazenados nos documentos com facilidade, use embeddings multimodais. Para pesquisar de forma eficaz em documentos longos, é necessário implementar um mecanismo de fragmentação. Ele divide o documento em unidades menores, como páginas ou seções, permitindo a contextualização dos resultados da pesquisa em uma área específica.
O exemplo de código abaixo ilustra como extrair dados de um documento PDF e gerar embeddings multimodais para cada página e, em seguida, enviar essas embeddings para uma tabela do BigQuery:
"Populate PDF data in XSTRING format
DATA(lv_pdf_xstring) = VALUE xstring( ).
DATA(lv_pdf_base64) =
xco_cp=>xstring( lv_pdf_xstring
)->as_string( xco_cp_binary=>text_encoding->base64
)->value.
DATA(ls_document_input) = VALUE /goog/cl_documentai_v1=>ty_084(
raw_document-content = lv_pdf_base64
raw_document-mime_type = 'application/pdf' ).
NEW /goog/cl_documentai_v1( iv_key_name = 'DOC_AI_CLIENT_KEY'
)->process_processors(
EXPORTING
iv_p_projects_id = 'PROJECT_ID'
iv_p_locations_id = 'LOCATION_ID'
iv_p_processors_id = 'PROCESSOR_ID'
is_input = ls_document_input
IMPORTING
es_output = DATA(ls_docai_output) ).
LOOP AT ls_docai_output-document-pages REFERENCE INTO DATA(ls_pages).
DATA(ls_image) =
VALUE /goog/cl_embeddings_model=>ty_image(
bytes_base64_encoded = ls_pages->image-content ).
DATA(ls_embedding_template) =
VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
id = 'UNIQUE_ID' "Document Name + Page #
content = 'CONTEXTUAL_TEXT' ). "Optional Text
NEW /goog/cl_embeddings_model(
iv_model_key = 'EMBEDDING_MODEL_KEY'
)->gen_image_embeddings_by_struct(
iv_image = ls_image
is_input = ls_embedding_template
)->send_struct_to_bq(
iv_dataset_id = 'BIGQUERY_DATASET_ID'
iv_table_id = 'BIGQUERY_TABLE_ID' ).
ENDLOOP.
Substitua:
DOC_AI_CLIENT_KEY
: a chave do cliente para autenticação.PROJECT_ID
: o ID do projeto do Google Cloud em que o processador foi criado.LOCATION_ID
: o local do processador. Para saber como ver detalhes do processador, consulte Conferir detalhes sobre um processador.PROCESSOR_ID
: o ID do processador. Para saber como conferir os detalhes do processador, consulte Conferir detalhes sobre um processador.UNIQUE_ID
: um identificador que identifica exclusivamente um fragmento específico de conhecimento. Por exemplo, pode ser uma combinação do nome do documento e do número da página.CONTEXTUAL_TEXT
: opcional. Adiciona contexto e significado ao conteúdo de entrada que é transmitido ao modelo de embeddings.EMBEDDING_MODEL_KEY
: a chave do modelo para gerar embeddings, que é configurada nos parâmetros de geração de modelo.BIGQUERY_DATASET_ID
: o ID do conjunto de dados do BigQuery.BIGQUERY_TABLE_ID
: o ID da tabela do BigQuery.
Gerar embeddings no Google Cloud
Como alternativa à geração de incorporações na SAP, é possível gerar incorporações de forma nativa no Google Cloud com pouca ou nenhuma programação. Essa abordagem exige que você armazene os dados da empresa no Google Cloud antes de gerar as embeddings.
Se os dados corporativos forem carregados no BigQuery, será possível
gerar incorporações de texto diretamente executando um comando SQL.
Para mais informações, consulte Gerar embeddings de texto usando a função ML.GENERATE_EMBEDDING
.
Se os dados da sua empresa forem enviados para um bucket do Cloud Storage, use um dos seguintes métodos para gerar incorporações:
- Desenvolva um aplicativo do Cloud Run. Para mais informações, consulte Infraestrutura para um aplicativo de IA generativa com capacidade de RAG usando a Vertex AI.
- Para uma tabela de objetos que
representa o bucket do Cloud Storage, use a função
ML.GENERATE_EMBEDDING
. Para mais informações, consulte Gerar embeddings de texto usando a funçãoML.GENERATE_EMBEDDING
.
A seguir
Para saber como usar a pesquisa de vetor para pesquisa semântica com aplicativos SAP, consulte Pesquisa de vetor da Vertex AI para aplicativos SAP inteligentes.
Para saber como usar a pesquisa de vetor com o SDK da Vertex AI para ABAP, consulte Usar a pesquisa de vetor da Vertex AI.
Se você precisar de ajuda para resolver problemas com o SDK ABAP para Google Cloud, faça o seguinte:
- Consulte o guia de solução de problemas do ABAP SDK for Google Cloud.
- Faça suas perguntas e discuta o SDK ABAP para Google Cloud com a comunidade nos Fóruns do Cloud.
- Colete todas as informações de diagnóstico disponíveis e entre em contato com o Cloud Customer Care. Para mais informações sobre como entrar em contato com o atendimento ao cliente, consulte Como receber suporte para o SAP no Google Cloud.
Colaboradores
Autor: Ajith Urimajalu | Líder da equipe de engenheiros de aplicativos SAP
Outro colaborador: Vikash Kumar | Redator técnico