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
Il parser del layout estrae elementi di contenuto dal documento, come testo, tavole ed elenchi. Il parser del layout crea poi blocchi sensibili al contesto che facilitano il recupero di informazioni nell'IA 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 del 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
Devi abilitare l'API Document AI per il progetto. Per ulteriori informazioni sull'abilitazione delle API, consulta la documentazione di Service Usage.
Enable the Document AI API.
Attivare l'analizzatore del layout
Per attivare l'analisi del layout:
Crea un'analisi del layout seguendo le istruzioni riportate in Creare e gestire i processori.
Il nome del tipo di processore è
LAYOUT_PARSER_PROCESSOR
.Attiva l'analizzatore di layout seguendo le istruzioni riportate in Attivare un processore.
La tua knowledge base (corpus) RAG
Se non hai un corpus RAG, creane uno. Ad esempio, consulta Esempio di creazione di un 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.
Importazione di 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 codice di esempio 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: il tuo 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à 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 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 delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json ed esegui il seguente comando:
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 ed esegui il seguente comando:
$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
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: il tuo 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à 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 chunk.
from vertexai 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,
transformation_config = rag.TransformationConfig(
chunking_config=rag.ChunkingConfig(
chunk_size=512, # Optional
chunk_overlap=100, # Optional
),
),
max_embedding_requests_per_min=900, # Optional
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 dei 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.