Utilizzare il parser del layout di Document AI con RAG Engine

In questa pagina viene presentato il parser di layout di Document AI e il suo utilizzo con il motore RAG.

Document AI

Document AI è una piattaforma di elaborazione e comprensione dei documenti che prende i dati non strutturati dai documenti e li trasforma in campi adatti all'archiviazione in un database. I dati strutturati portano a dati che puoi comprendere, analizzare e utilizzare.

Document AI si basa sui prodotti di Gemini Enterprise Agent Platform con AI generativa per aiutarti a creare applicazioni di elaborazione dei documenti scalabili, end-to-end e basate su cloud. Per utilizzare questi prodotti non sono richieste competenze specialistiche di machine learning.

Parser del layout di Document AI

Il parser del layout estrae elementi dei contenuti dal documento, ad esempio testo, tabelle ed elenchi. Il parser del layout crea quindi blocchi sensibili al contesto che facilitano il recupero di informazioni nell'AI generativa e nelle applicazioni di rilevamento.

Quando viene utilizzato per il recupero e la generazione di LLM, il layout del documento viene preso in considerazione durante il processo di suddivisione in blocchi, il che migliora la coerenza semantica e riduce il rumore nei contenuti. Tutto il testo di un chunk proviene dalla stessa entità di layout, ad esempio l'intestazione, la sottointestazione o l'elenco.

Per i tipi di file utilizzati dal rilevamento del layout, consulta Rilevamento del layout per tipo di file.

Utilizza il parser del layout in RAG Engine

Per utilizzare l'analizzatore del layout in RAG Engine, devi creare un corpus. Per creare un corpus:

  1. Nella console Google Cloud , vai alla pagina RAG Engine.

    Vai a RAG Engine

  2. Seleziona Crea corpus.

  3. Nel campo Regione, seleziona la tua regione.

  4. Nel campo Nome corpus, inserisci il nome del corpus.

  5. Nel campo Descrizione, inserisci una descrizione.

  6. Nella sezione Dati, seleziona dove vuoi caricare i dati.

  7. Espandi la sezione Opzioni avanzate.

    1. Nella sezione Strategia di chunking, sono consigliate le seguenti dimensioni predefinite:

      • Dimensione chunking: 1024
      • Sovrapposizione dei chunk: 256
    2. Nella sezione Parser di layout, seleziona l'opzione Parser di layout di Document AI, che offre la massima precisione per i documenti con immagini o grafici.

      1. Nel campo Modello, seleziona il modello.

      2. (Facoltativo) Nel campo Numero massimo di richieste di analisi al minuto, inserisci il numero massimo di richieste di analisi.

      3. (Facoltativo) Nel campo Prompt di analisi personalizzato, inserisci il prompt di analisi.

      4. Fai clic su Continua.

  8. Nella pagina Configura datastore vettoriale, segui questi passaggi:

    1. Nel campo Modello di embedding, seleziona il modello di embedding.

    2. Nella sezione Database vettoriale, seleziona il tuo database.

  9. Fai clic su Crea corpus.

Limitazioni

L'API ImportRagFiles supporta l'analizzatore sintattico del layout, tuttavia si applicano le seguenti limitazioni:

  • La dimensione massima del file di input è 20 MB per tutti i tipi di file.
  • Il numero massimo di pagine per file PDF è 500.

Si applicano le quote e i prezzi di Document AI.

Abilita l'API Document AI

Devi abilitare l'API Document AI per il tuo progetto. Per saperne di più sull'abilitazione delle API, consulta la documentazione di Service Usage.

Abilita l'API Document AI, se non è già abilitata.

Ruoli richiesti per abilitare le API

Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

Abilitare l'API

Attiva il parser del layout

Per attivare Layout Parser, segui questi passaggi:

  1. Crea un parser di layout seguendo le istruzioni riportate in Creazione e gestione dei processori.

    Il nome del tipo di processore è LAYOUT_PARSER_PROCESSOR.

  2. Attiva Layout Parser seguendo le istruzioni riportate in Attiva un processore.

La tua knowledge base RAG (corpus)

Se non hai un corpus RAG, creane uno. Ad esempio, consulta Crea un esempio di corpus RAG.

Se hai già un corpus RAG, i file esistenti importati senza un parser di layout non verranno reimportati quando importi i file utilizzando il parser di layout. Se vuoi utilizzare un parser di layout con i tuoi file, eliminali prima. Ad esempio, consulta Esempio di eliminazione di un file RAG.

Importazione di file utilizzando il parser di layout

I file e le cartelle provenienti da varie origini possono essere importati utilizzando l'analizzatore sintattico del layout.

Python

Per scoprire come installare o aggiornare l'SDK Agent Platform per Python, consulta Installa l'SDK Agent Platform per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

Sostituisci le seguenti variabili utilizzate nell'esempio di codice:

  • PROJECT_ID: l'ID progetto.
  • LOCATION: la regione in cui elaborare la richiesta.
  • RAG_CORPUS_ID: l'ID della risorsa del corpus RAG.
  • GCS_URIS: un elenco di località Cloud Storage. Ad esempio: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: il percorso della risorsa del processore parser di layout creato. Ad esempio: "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: (facoltativo) il numero di token che deve avere ogni chunk.
from vertexai import rag
import vertexai

PROJECT_ID = YOUR_PROJECT_ID
corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"
paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]  # Supports Cloud Storage and Google Drive.

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

response = rag.import_files(
    corpus_name=corpus_name,
    paths=paths,
    transformation_config=rag.TransformationConfig(
        rag.ChunkingConfig(chunk_size=1024, chunk_overlap=256)
    ),
    import_result_sink="gs://sample-existing-folder/sample_import_result_unique.ndjson",  # Optional: This must be an existing storage bucket folder, and the filename must be unique (non-existent).
    layout_parser=rag.LayoutParserConfig(
      processor_name="projects/{PROJECT_ID}/locations/us/processors/{processor_id}/processorVersions/{processor_version_id}",
      max_parsing_requests_per_min=120,
    ),
    max_embedding_requests_per_min=900,  # Optional
)
print(f"Import response: {response}")

REST

L'esempio di codice mostra come importare i file di Cloud Storage utilizzando il parser del layout. Per altre opzioni di configurazione, tra cui l'importazione di file da un'altra origine, consulta il riferimento di ImportRagFilesConfig.

Prima di utilizzare i dati della richiesta, sostituisci le seguenti variabili utilizzate nell'esempio di codice:

  • PROJECT_ID: l'ID progetto.
  • LOCATION: la regione in cui elaborare la richiesta.
  • RAG_CORPUS_ID: l'ID della risorsa del corpus RAG.
  • GCS_URIS: un elenco di località Cloud Storage. Ad esempio: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: il percorso della risorsa del processore parser di layout creato. Ad esempio: "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: (facoltativo) il numero di token che deve avere ogni chunk.
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

Corpo JSON della richiesta:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": "GCS_URIS"
    },
    "rag_file_parsing_config": {
      "layout_parser": {
        "processor_name": "LAYOUT_PARSER_PROCESSOR_NAME"
      }
    },
    "rag_file_transformation_config": {
      "rag_file_chunking_config": {
        "fixed_length_chunking": {
          "chunk_size": CHUNK_SIZE
        }
      }
    },
  }
}

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

Powershell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content

Query di recupero

Quando un utente pone una domanda o fornisce un prompt, il componente di recupero in RAG cerca nella sua knowledge base per trovare informazioni pertinenti alla query.

Per un esempio di recupero di file RAG da un corpus in base a un testo di query, consulta Query di recupero.

Previsione

La previsione genera una risposta fondata utilizzando i contesti recuperati. Per un esempio, consulta Generazione.

Passaggi successivi