Utilizzare l'analizzatore di layout di Document AI con il motore RAG di Vertex AI

Questa pagina illustra il parser del layout di Document AI e come viene utilizzato con RAG Engine.

Document AI

Document AI è una piattaforma per l'elaborazione e la comprensione dei documenti che acquisisce i dati non strutturati dai documenti e li trasforma in campi adatti per l'archiviazione in un database. I dati strutturati generano dati che puoi comprendere, analizzare e utilizzare.

Document AI è basato sui prodotti di Vertex AI con l'IA generativa per aiutarti a creare applicazioni di elaborazione di documenti scalabili, end-to-end e basate su cloud. Per utilizzare questi prodotti non è richiesta alcuna competenza specializzata di machine learning.

Parser del layout di Document AI

L'analizzatore del layout estrae dal documento gli elementi di contenuto, come testo, tavole ed elenchi. L'analizzatore del layout crea quindi blocchi sensibili al contesto che facilitano il recupero di informazioni nell'AI generativa e nelle applicazioni di scoperta.

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, il sottotitolo o l'elenco.

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

Utilizzare l'analizzatore di layout in Vertex AI RAG

L'API ImportRagFiles supporta l'analisi del layout, tuttavia si applicano i seguenti limiti:

  • Inserisci la dimensione massima del file di 20 MB per tutti i tipi di file.
  • È possibile inserire un massimo di 500 pagine per file PDF.

Si applicano le quote e i prezzi di Document AI.

Abilita l'API Document AI

Il seguente codice campione mostra come attivare l'analisi avanzata utilizzando REST in un comando curl e l'SDK Vertex AI per Python.

REST

Questo esempio di codice mostra come importare i file di Cloud Storage utilizzando lo parser del layout. Per altre opzioni di configurazione, ad esempio l'importazione di file da un'altra origine, consulta ImportRagFilesConfig.

Sostituisci le variabili utilizzate nell'esempio di codice:

  • PROJECT_ID: l'ID del tuo 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à di Cloud Storage. Ad esempio: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: il percorso della risorsa al processatore del parser del layout creato. Ad esempio: "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: facoltativo. Il numero di token che deve avere ogni frammento.
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

Corpo JSON della richiesta:

{
  "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
    },
  }
}

Per inviare la richiesta, scegli una di queste opzioni.

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

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

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

Sostituisci le variabili utilizzate nell'esempio di codice:

  • PROJECT_ID: l'ID del tuo 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à di Cloud Storage. Ad esempio: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: il percorso della risorsa al processatore del parser del layout creato. Ad esempio: "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: facoltativo. Il numero di token che deve avere ogni frammento.
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.

Attivare l'analizzatore del layout

Gli esempi di codice mostrano come attivare l'analizzatore di layout.

La tua knowledge base (corpus) RAG

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

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

Importare i file utilizzando l'analizzatore sintattico di layout

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

REST

Il esempio di codice mostra come importare i file di Cloud Storage utilizzando il parser del layout. Per altre opzioni di configurazione, inclusa l'importazione di file da un'altra fonte, consulta la pagina di riferimento ImportRagFilesConfig.

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

  • PROJECT_ID: l'ID del tuo 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à di Cloud Storage. Ad esempio: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: il percorso della risorsa al processatore dell'analizzatore del 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/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

Corpo JSON della richiesta:

{
  "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
    },
  }
}

Per inviare la richiesta, scegli una di queste opzioni di codifica:

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

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

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python.

Sostituisci le seguenti variabili utilizzate nell'esempio di codice:

  • PROJECT_ID: l'ID del tuo 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à di Cloud Storage. Ad esempio: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: il percorso della risorsa al processatore dell'analizzatore del 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.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.

Query di recupero

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

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

Previsione

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

Passaggi successivi