Usar o analisador de layout do Document AI com o mecanismo de RAG da Vertex AI

Esta página apresenta o analisador de layout da Document AI e como ele é usado com o RAG Engine.

Document AI

A Document AI é uma plataforma de processamento e compreensão de documentos que pega dados não estruturados de documentos e os transforma em campos adequados para armazenamento em um banco de dados. Os dados estruturados levam a dados que você pode entender, analisar e consumir.

A Document AI é baseada em produtos da Vertex AI com IA generativa para ajudar você a criar aplicativos de processamento de documentos baseados em nuvem e completos. Não é necessário ter experiência especializada em machine learning para usar esses produtos.

Analisador de layout do Document AI

O analisador de layout extrai elementos de conteúdo do documento, como texto, tabelas e listas. O analisador de layout cria blocos contextuais que facilitam a recuperação de informações em IA generativa e em aplicativos de descoberta.

Quando usado para recuperação e geração de LLM, o layout do documento é considerado durante o processo de fragmentação, o que melhora a coerência semântica e reduz o ruído no conteúdo. Todo o texto em um bloco vem da mesma entidade de layout, como o título, subtítulo ou lista.

Para saber quais tipos de arquivo são usados pela detecção de layout, consulte Detecção de layout por tipo de arquivo.

Usar o analisador de layout na RAG da Vertex AI

A API ImportRagFiles oferece suporte ao analisador de layout. No entanto, as seguintes limitações se aplicam:

  • Insira o tamanho máximo de 20 MB para todos os tipos de arquivo.
  • Há um máximo de 500 páginas por arquivo PDF.

As cotas e os preços do Document AI se aplicam.

Ativar a API Document AI

O exemplo de código a seguir demonstra como ativar a análise avançada usando REST em um comando curl e o SDK da Vertex AI para Python.

REST

Este exemplo de código demonstra como importar arquivos do Cloud Storage usando o analisador de layout. Para mais opções de configuração, como importar arquivos de outra fonte, consulte ImportRagFilesConfig.

Substitua as variáveis usadas no exemplo de código:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar sua solicitação.
  • RAG_CORPUS_ID: o ID do recurso do corpus RAG.
  • GCS_URIS: uma lista de locais do Cloud Storage. Por exemplo: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: o caminho do recurso para o processador do analisador de layout que foi criado. Por exemplo, "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: opcional: o número de tokens que cada bloco precisa ter.
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

Solicitar corpo JSON:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": GCS_URIS
    },
    "file_parsing_config": {
      "layout_parser": {
        "processor_name": "LAYOUT_PARSER_PROCESSOR_NAME"
      }
    },
    "rag_file_chunking_config": {
      "chunk_size": CHUNK_SIZE
    },
  }
}

Para enviar a solicitação, escolha uma destas opções.

Salve o corpo da solicitação em um arquivo chamado "request.json" e execute o comando a seguir:

curl -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

Python

Para saber como instalar ou atualizar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.

Substitua as variáveis usadas no exemplo de código:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar sua solicitação.
  • RAG_CORPUS_ID: o ID do recurso do corpus RAG.
  • GCS_URIS: uma lista de locais do Cloud Storage. Por exemplo: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: o caminho do recurso para o processador do analisador de layout que foi criado. Por exemplo, "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: opcional: o número de tokens que cada bloco precisa ter.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/<var>PROJECT_ID</var>/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"
# paths = ["https://drive.google.com/file/123", "GCS_URIS"]
# Supports Cloud Storage and Google Drive Links
layout_parser_processor_name = "projects/PROJECT_ID/locations/<var>LOCATION</var>/processors/LAYOUT_PARSER_PROCESSOR_NAME"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

response = rag.import_files(
    corpus_name=RAG_CORPUS_ID,
    paths=paths,
    chunk_size=512,  # Optional
    chunk_overlap=100,  # Optional
    max_embedding_requests_per_min=900,  # Optional
    layout_parser=rag.LayoutParserConfig(
        processor_name=layout_parser_processor_name,
        max_parsing_requests_per_min=120,  # Optional
    )
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.

Ativar o analisador de layout

Os exemplos de código demonstram como ativar o analisador de layout.

Sua base de conhecimento RAG (corpus)

Se você não tiver um corpus RAG, crie um. Por exemplo, consulte Criar um exemplo de corpus RAG.

Se você já tiver um corpus RAG, os arquivos que foram importados sem um parser de layout não serão importados novamente quando você importar arquivos usando o Layout Parser. Se você quiser usar um analisador de layout com seus arquivos, exclua-os primeiro. Por exemplo, consulte Exemplo de exclusão de um arquivo RAG.

Como importar arquivos usando o Analisador de layout

É possível importar arquivos e pastas de várias fontes usando o analisador de layout.

REST

O exemplo de código mostra como importar arquivos do Cloud Storage usando o analisador de layout. Para mais opções de configuração, incluindo a importação de arquivos de outra fonte, consulte a referência ImportRagFilesConfig.

Antes de usar qualquer um dos dados da solicitação, substitua as seguintes variáveis usadas no exemplo de código:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do recurso do corpus RAG.
  • GCS_URIS: uma lista de locais do Cloud Storage. Por exemplo: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: o caminho do recurso para o processador do analisador de layout que foi criado. Por exemplo, "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: opcional: o número de tokens que cada bloco precisa ter.
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

Solicitar corpo JSON:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": "GCS_URIS"
    },
    "file_parsing_config": {
      "layout_parser": {
        "processor_name": "LAYOUT_PARSER_PROCESSOR_NAME"
      }
    },
    "rag_file_chunking_config": {
      "chunk_size": CHUNK_SIZE
    },
  }
}

Para enviar a solicitação, escolha uma destas opções de codificação:

Salve o corpo da solicitação em um arquivo chamado request.json e execute o comando a seguir:

curl -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

Python

Para saber como instalar ou atualizar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.

Substitua as seguintes variáveis usadas no exemplo de código:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do recurso do corpus RAG.
  • GCS_URIS: uma lista de locais do Cloud Storage. Por exemplo: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: o caminho do recurso para o processador do analisador de layout que foi criado. Por exemplo, "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: opcional: o número de tokens que cada bloco precisa ter.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"
# paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]
# Supports Cloud Storage and Google Drive links
layout_parser_processor_name = "LAYOUT_PARSER_PROCESSOR_NAME"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

response = rag.import_files(
    corpus_name=corpus_name,
    paths=paths,
    chunk_size=512,  # Optional
    chunk_overlap=100,  # Optional
    max_embedding_requests_per_min=900,  # Optional
    layout_parser=rag.LayoutParserConfig(
        processor_name=layout_parser_processor_name,
        max_parsing_requests_per_min=120,  # Optional
    )
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.

Consultar recuperação

Quando um usuário faz uma pergunta ou fornece uma solicitação, o componente de recuperação na RAG pesquisa na base de conhecimento para encontrar informações relevantes para a consulta.

Para conferir um exemplo de como recuperar arquivos RAG de um corpus com base em um texto de consulta, consulte Consulta de recuperação.

Previsão

A previsão gera uma resposta fundamentada usando os contextos recuperados. Para um exemplo, consulte Geração.

A seguir