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. Questa operazione implementa il recupero RAG.

Un problema comune con gli LLM è che non comprendono le conoscenze private, che sono i dati della tua organizzazione. Con RAG Engine, puoi arricchire contesto LLM con ulteriori informazioni private, perché il modello può ridurre allucinazione e a 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: numerico rappresentazioni di parole o parti di testo. Questi numeri catturano significato semantico e 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: il motore RAG crea un indice chiamato corpus. L'indice struttura la knowledge base in modo che sia ottimizzata per la ricerca. Per ad esempio, l'indice è come un sommario dettagliato per un libro di riferimento.

  5. Recupero: quando un utente pone una domanda o fornisce un prompt, il recupero in RAG Engine cerca nelle sue conoscenze 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 IA 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 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 include:

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'ambiente compatibile con OpenAI API ChatCompletions 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 incorporamento vengono utilizzati per creare un corpus e per la ricerca e il recupero durante la generazione di risposte. Questa sezione elenca i modelli di incorporamento 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 incorporamento, consulta Ottimizzare le rappresentazioni distribuite del 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 quando vengono esportati da Google Workspace
Presentazioni Google 10 MB quando vengono esportati da Google Workspace
File HTML 10 MB
File JSON 1 MB
File Markdown 10 MB
Diapositive di Microsoft PowerPoint (file PPTX) 10 MB
Documenti di 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.

    È necessario concedere all'account di servizio 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 eseguire l'autenticazione e concedere le autorizzazioni, segui questi passaggi:

    1. Vai alla pagina IAM del tuo progetto Google Cloud.
    2. Seleziona Includi la concessione del ruolo fornita da Google.
    3. Cerca l'account di servizio Vertex AI RAG Data Service Agent.
    4. Fai clic su Condividi nella cartella di Drive e condividilo 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 file da Jira usando un connettore dati.

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

Ottimizza le trasformazioni RAG

Dopo l'importazione di un documento, RAG Engine esegue un insieme di trasformazioni 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 (nei token) specifica la dimensione del blocco. La dimensione predefinita del blocco è 1024 token.
chunk_overlap Per impostazione predefinita, i documenti vengono suddivisi in blocchi con una certa quantità di sovrapposizione per migliorare la pertinenza e la qualità del recupero. La sovrapposizione predefinita del blocco è di 200 token.

Una dimensione del chunk inferiore significa che gli incorporamenti sono più precisi. Una dimensione del blocco più grande gli incorporamenti potrebbero essere più generici, ma potrebbero perdere 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 un esempio di quando si considera il limite di lunghezza del contesto del modello. Una grossa fetta il testo potrebbe non rientrare in un modello con 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
ImportRagFiles richieste in parallelo 3 rpm VertexRagService import rag files requests per region
Numero massimo di file per richiesta ImportRagFiles 10.000 VertexRagService import rag files requests per region

Per ulteriori limiti di frequenza e quote, consulta IA generativa su Vertex AI di traffico di rete.

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 tuo corpus per le attività RAG 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 la generazione di risposte. Quando crei un corpus per la prima volta, il processo potrebbe richiedere un altro minuto.

Sono supportate le seguenti operazioni sul corpus:

Operazione Descrizione Parametri Esempi
Crea un corpus RAG. Crea un indice per importare o caricare documenti. Creare parametri Creare un esempio
Aggiorna 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. Elenca parametri Esempio di elenco
Ottieni un corpus RAG. Ottieni 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 su 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 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. Importare parametri 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 parametri Esempio di eliminazione

Per ulteriori informazioni, consulta Riferimento API RAG.

Passaggi successivi