Panoramica di RAG Engine

In precedenza noto come LlamaIndex su Vertex AI e più di recente come Knowledge Engine, RAG Engine è un framework di dati per lo sviluppo di applicazioni con modelli linguistici di grandi dimensioni (LLM) basati sul contesto. L'aumento del contesto avviene quando applichi un LLM ai tuoi dati. Viene implementata la RAG (Retrieval Augmented Generation).

Un problema comune degli LLM è che non comprendono le conoscenze private, ovvero i dati della tua organizzazione. Con RAG Engine, puoi arricchire il contenuto del modello LLM con informazioni private aggiuntive, in quanto il modello può ridurre le allucinazioni e rispondere alle domande in modo più preciso.

Combinando fonti di conoscenza aggiuntive con le conoscenze esistenti degli LLM, viene fornito un contesto migliore. Il contesto migliorato insieme alla query migliora la qualità della risposta dell'LLM.

I seguenti concetti sono fondamentali per comprendere RAG Engine. Questi concetti sono elencati nell'ordine del processo di RAG (Retrieval Augmented Generation).

  1. Importazione dei dati: importa i dati da origini dati diverse. Ad esempio, file locali, Cloud Storage e Google Drive.

  2. Trasformazione dei dati: conversione dei dati in preparazione all'indicizzazione. Ad esempio, i dati vengono suddivisi in blocchi.

  3. Incorporamento: rappresentazioni numeriche di parole o parti di testo. Questi numeri riflettono il significato semantico e il contesto del testo. Parole o testo simili o correlati tendono ad avere incorporamenti simili, il che significa che sono più vicini nello spazio vettoriale di alta dimensione.

  4. Indicizzazione dei dati: RAG Engine crea un indice chiamato corpus. L'indice struttura la knowledge base in modo che sia ottimizzata per la ricerca. Ad esempio, l'indice è come un sommario dettagliato di un grande libro di riferimento.

  5. Ricerca: quando un utente pone una domanda o fornisce un prompt, il componente di recupero nel motore RAG esegue ricerche nella knowledge base per trovare informazioni pertinenti alla query.

  6. Genesi: le informazioni recuperate diventano il contesto aggiunto alla query dell'utente originale come guida per il modello di AI generativa per generare risposte pertinenti e basate su fatti.

Modelli di IA generativa che supportano RAG

Questa sezione elenca i modelli che supportano RAG.

Modelli Gemini

La tabella seguente elenca i modelli Gemini e le relative versioni che supportano RAG Engine:

Modello Versione
Gemini 1.5 Flash gemini-1.5-flash-002
gemini-1.5-flash-001
Gemini 1.5 Pro gemini-1.5-pro-002
gemini-1.5-pro-001
Gemini 1.0 Pro gemini-1.0-pro-001
gemini-1.0-pro-002
Gemini 1.0 Pro Vision gemini-1.0-pro-vision-001
Gemini gemini-experimental

Modelli di cui è stato eseguito il deployment autonomo

RAG Engine supporta tutti i modelli in Model Garden.

Utilizza RAG Engine con gli endpoint dei modelli aperti di tua creazione.

  # Create a model instance with your self-deployed open model endpoint
  rag_model = GenerativeModel(
      "projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID",
      tools=[rag_retrieval_tool]
  )

Modelli con API gestite su Vertex AI

I modelli con API gestite su Vertex AI che supportano RAG Engine includono quanto segue:

Il seguente esempio di codice mostra come utilizzare l'API GeminiGenerateContent per creare un'istanza di modello generativo. L'ID modello,/publisher/meta/models/llama-3.1-405B-instruct-maas, si trova nella scheda del modello.

  # Create a model instance with Llama 3.1 MaaS endpoint
  rag_model = GenerativeModel(
      "projects/PROJECT_ID/locations/REGION/publisher/meta/models/llama-3.1-405B-instruct-maas",
      tools=[rag_retrieval_tool]
  )

Il seguente esempio di codice mostra come utilizzare l'API ChatCompletions compatibile con OpenAI per generare una risposta del modello.

  # Generate a response with Llama 3.1 MaaS endpoint
  response = client.chat.completions.create(
      model="meta/llama-3.1-405b-instruct-maas",
      messages=[{"role": "user", "content": "your-query"}],
      extra_body={
          "extra_body": {
              "google": {
                  "vertex_rag_store": {
                      "rag_resources": {
                          "rag_corpus": rag_corpus_resource
                      },
                      "similarity_top_k": 10
                  }
              }
          }
      },
  )

Modelli di embedding

I modelli di embedding vengono utilizzati per creare un corpus e per la ricerca e il recupero durante la generazione di risposte. Questa sezione elenca i modelli di embedding supportati.

  • textembedding-gecko@003
  • textembedding-gecko-multilingual@001
  • text-embedding-004 (valore predefinito)
  • text-multilingual-embedding-002
  • textembedding-gecko@002 (solo versioni ottimizzate)
  • textembedding-gecko@001 (solo versioni ottimizzate)

Per saperne di più sull'ottimizzazione dei modelli di embedding, consulta Ottimizzare gli embedding di testo.

Sono supportati anche i seguenti modelli di incorporamento aperti. Puoi trovarli in Model Garden.

  • e5-base-v2
  • e5-large-v2
  • e5-small-v2
  • multilingual-e5-large
  • multilingual-e5-small

Tipi di documenti supportati per il RAG

Sono supportati solo i documenti di testo. La tabella seguente mostra i tipi di file e i relativi limiti di dimensione:

Tipo di file Limite di dimensioni dei file
documenti Google 10 MB se esportati da Google Workspace
disegni Google 10 MB se esportati da Google Workspace
Presentazioni Google 10 MB se esportati da Google Workspace
File HTML 10 MB
File JSON 1 MB
File Markdown 10 MB
Presentazioni di Microsoft PowerPoint (file PPTX) 10 MB
Documenti Microsoft Word (file DOCX) 50 MB
File PDF 50 MB
File di testo 10 MB

L'utilizzo di RAG Engine con altri tipi di documenti è possibile, ma può generare risposte di qualità inferiore.

Origini dati supportate per RAG

Sono supportate le seguenti origini dati:

  • Carica un file locale:un caricamento di un singolo file utilizzando upload_file (fino a 25 MB), che è una chiamata sincrona.
  • Cloud Storage:importa i file da Cloud Storage.
  • Google Drive:importa una directory da Google Drive.

    All'account di servizio devono essere concesse le autorizzazioni corrette per importare i file. In caso contrario, non viene importato alcun file e non viene visualizzato alcun messaggio di errore. Per ulteriori informazioni sui limiti di dimensioni dei file, consulta Tipi di documenti supportati.

    Per autenticarti e concedere le autorizzazioni:

    1. Vai alla pagina IAM del tuo progetto Google Cloud.
    2. Seleziona Includi concessione di ruolo fornita da Google.
    3. Cerca l'account di servizio Vertex AI RAG Data Service Agent.
    4. Fai clic su Condividi nella cartella del drive e condividi con l'account di servizio.
    5. Concedi l'autorizzazione Viewer all'account di servizio nella cartella o nel file di Google Drive. L'ID risorsa di Google Drive è disponibile nell'URL web.
  • Slack: importa i file da Slack utilizzando un connettore dati.

  • Jira: importa i file da Jira utilizzando un connettore dati.

Per ulteriori informazioni, consulta il riferimento all'API RAG.

Ottimizzare le trasformazioni RAG

Dopo aver importato un documento, RAG Engine esegue una serie di trasformazioni per preparare i dati per l'indicizzazione. Puoi controllare i casi d'uso utilizzando i seguenti parametri:

Parametro Descrizione
chunk_size Quando i documenti vengono importati in un indice, vengono suddivisi in blocchi. Il parametro chunk_size (in token) specifica le dimensioni del chunk. La dimensione del chunk predefinita è 1024 token.
chunk_overlap Per impostazione predefinita, i documenti vengono suddivisi in blocchi con una certa sovrapposizione per migliorare la pertinenza e la qualità del recupero. L'intersezione dei chunk predefinita è di 200 token.

Un chunk più piccolo significa che gli embedding sono più precisi. Una dimensione del chunk più grande significa che gli embedding potrebbero essere più generali, ma possono mancare dettagli specifici.

Ad esempio, se converti 200 parole anziché 1000 in un array di embedding della stessa dimensione, potresti perdere dettagli. Questo è anche un buon esempio di quando prendere in considerazione il limite di lunghezza del contesto del modello. Un blocco di testo di grandi dimensioni potrebbe non adattarsi a un modello di finestra piccola.

Quote RAG

Per ogni servizio che esegue la generazione basata sul recupero con l'utilizzo di RAG Engine, si applicano le seguenti quote, misurate in richieste al minuto (RPM).
Servizio Quota Metrica
API di gestione dei dati di RAG Engine 60 giri/min VertexRagDataService requests per minute per region
RetrievalContexts API 1500 rpm VertexRagService retrieve requests per minute per region
base_model: textembedding-gecko 1500 rpm Online prediction requests per base model per minute per region per base_model

Un altro filtro da specificare è base_model: textembedding-gecko
I limiti sono i seguenti:
Servizio Limite Metrica
Richieste ImportRagFiles simultanee 3 RPM VertexRagService concurrent import requests per region
Numero massimo di file per richiesta ImportRagFiles 10.000 VertexRagService import rag files requests per region

Per altri limiti di frequenza e quote, consulta Limiti di frequenza dell'IA generativa su Vertex AI.

Parametri di recupero

La tabella seguente include i parametri di recupero:

Parametro Descrizione
similarity_top_k Controlla il numero massimo di contesti recuperati.
vector_distance_threshold Vengono presi in considerazione solo i contesti con una distanza inferiore alla soglia.

Gestire la knowledge base (corpus) RAG

Questa sezione descrive come gestire il corpus per le attività RAG mediante la gestione degli indici e dei file.

Gestione del corpus

Un corpus, chiamato anche indice, è una raccolta di documenti o fonte di informazioni. È possibile eseguire query sul corpus per recuperare contesti pertinenti per la generazione di risposte. Quando crei un corpus per la prima volta, il processo potrebbe richiedere un minuto in più.

Sono supportate le seguenti operazioni sul corpus:

Operazione Descrizione Parametri Esempi
Crea un corpus RAG. Crea un indice per importare o caricare i documenti. Creare parametri Creare un esempio
Aggiornare un corpus RAG. Aggiorna un indice creato in precedenza per importare o caricare i documenti. Aggiornare i parametri Esempio di aggiornamento
Elenca un corpus RAG. Elenca tutti gli indici. Parametri di elenco Esempio di elenco
Ottieni un corpus RAG. Recupera i metadati che descrivono l'indice. Ottieni parametri Esempio
Eliminare un corpus RAG. Elimina l'indice. Eliminare i parametri Esempio di eliminazione

Le operazioni simultanee sui corpora non sono supportate. Per ulteriori informazioni, consulta il riferimento all'API RAG.

Gestione dei file

Sono supportate le seguenti operazioni sui file:

Operazione Descrizione Parametri Esempi
Carica un file RAG. Carica un file dallo spazio di archiviazione locale con informazioni aggiuntive che forniscono il contesto all'LLM per generare risposte più accurate. Parametri di caricamento Esempio di caricamento
Importa i file RAG. Importa un insieme di file da un altro spazio di archiviazione in una posizione di archiviazione. Parametri di importazione Esempio di importazione
Ricevi un file RAG. Visualizza i dettagli di un file RAG da utilizzare dall'LLM. Ottieni parametri Esempio
Elimina un file RAG. Carica un file dallo spazio di archiviazione locale con informazioni aggiuntive che forniscono il contesto all'LLM per generare risposte più accurate. Eliminare i parametri Esempio di eliminazione

Per ulteriori informazioni, consulta il riferimento all'API RAG.

Passaggi successivi