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).
Importazione dei dati: importa i dati da origini dati diverse. Ad esempio, file locali, Cloud Storage e Google Drive.
Trasformazione dei dati: conversione dei dati in preparazione all'indicizzazione. Ad esempio, i dati vengono suddivisi in blocchi.
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.
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.
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.
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:
- Vai alla pagina IAM del tuo progetto Google Cloud.
- Seleziona Includi concessione di ruolo fornita da Google.
- Cerca l'account di servizio Vertex AI RAG Data Service Agent.
- Fai clic su Condividi nella cartella del drive e condividi con l'account di servizio.
- 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 |
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
- Per informazioni sui limiti di dimensioni dei file, consulta Tipi di documenti supportati.
- Per informazioni sulle quote relative a RAG Engine, consulta Quote di RAG Engine.
- Per informazioni sulla personalizzazione dei parametri, consulta Parametri di recupero.
- Per scoprire di più sull'API RAG, consulta l'API RAG Engine.
- Per scoprire di più sul grounding, consulta la Panoramica del grounding.
- Per scoprire di più sulla differenza tra messa a terra e RAG, consulta Risposte di messa a terra utilizzando RAG.
- Per saperne di più sull'IA generativa su Vertex AI, consulta la Panoramica dell'IA generativa su Vertex AI.
- Per scoprire di più sull'architettura RAG, consulta Infrastruttura per un'applicazione di AI generativa compatibile con RAG utilizzando Vertex AI.