Panoramica di LamaIndex su Vertex AI per RAG

LlamaIndex è un framework di dati per lo sviluppo di applicazioni di modelli linguistici di grandi dimensioni (LLM) basati sul contesto. L'aumento del contesto si verifica quando applichi un LLM ai dati. Questa funzionalità implementa la generazione di recupero augmented (RAG).

Un problema comune degli LLM è che non comprendono le conoscenze private, ovvero i dati dell'organizzazione. Con LlamaIndex su Vertex AI per RAG, puoi arricchire il contesto LLM con ulteriori informazioni private, poiché il modello può ridurre l'allucinazione e rispondere alle domande in modo più preciso.

Combinando le informazioni aggiuntive con quelle 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 LlamaIndex su Vertex AI. Questi concetti sono elencati in ordine cronologico del processo RAG (Retrieval-Augmented Generation).

  1. Importazione dati: dati acquisiti da diverse origini dati. ad esempio file locali, Cloud Storage e Google Drive.

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

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

  4. Indicizzazione dei dati: LlamaIndex su Vertex AI per RAG 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 enorme libro di riferimento.

  5. Recupero: quando un utente pone una domanda o fornisce un prompt, il componente di recupero in LlamaIndex su Vertex AI per RAG cerca nella sua knowledge base informazioni pertinenti alla query.

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

Questa pagina inizia a utilizzare LlamaIndex su Vertex AI per RAG e fornisce esempi di Python per dimostrare come utilizzare l'API RAG.

Per informazioni sui limiti di dimensione dei file, vedi Tipi di documenti supportati. Per informazioni sulle quote relative a LlamaIndex su Vertex AI per RAG, consulta LlamaIndex su Vertex AI per le quote RAG. Per informazioni sulla personalizzazione dei parametri, consulta Parametri di recupero.

Esegui LlamaIndex su Vertex AI per RAG utilizzando l'SDK Vertex AI

Per utilizzare LlamaIndex su Vertex AI per RAG:

  1. Installa l'SDK Vertex AI per Python.

  2. Esegui questo comando nella console Google Cloud per configurare il progetto.

    gcloud config set {project}

  3. Esegui questo comando per autorizzare l'accesso.

    gcloud auth application-default login

  4. Copia e incolla questo codice campione nella console Google Cloud per eseguire LlamaIndex su Vertex AI.

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.

from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai

# Create a RAG Corpus, Import Files, and Generate a response

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# display_name = "test_corpus"
# paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]  # Supports Google Cloud Storage and Google Drive Links

# Initialize Vertex AI API once per session
vertexai.init(project=project_id, location="us-central1")

# Create RagCorpus
rag_corpus = rag.create_corpus(display_name=display_name)

# Import Files to the RagCorpus
response = rag.import_files(
    rag_corpus.name,
    paths,
    chunk_size=512,  # Optional
    chunk_overlap=100,  # Optional
)

# Direct context retrieval
response = rag.retrieval_query(
    rag_corpora=[rag_corpus.name],
    text="What is RAG and why it is helpful?",
    similarity_top_k=10,
)
print(response)

# Enhance generation
# Create a RAG retrieval tool
rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_corpora=[rag_corpus.name],  # Currently only 1 corpus is allowed.
            similarity_top_k=3,  # Optional
        ),
    )
)
# Create a gemini-pro model instance
rag_model = GenerativeModel(
    model_name="gemini-1.0-pro-002", tools=[rag_retrieval_tool]
)

# Generate response
response = rag_model.generate_content("What is RAG and why it is helpful?")
print(response.text)

Modelli supportati

I seguenti modelli e le relative versioni che supportano LlamaIndex su Vertex AI includono:

Modello Versione
Gemini 1.5 Flash (anteprima) gemini-1.5-flash-preview-0514
Gemini 1.5 Pro (anteprima) gemini-1.5-pro-preview-0514
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

Tipi di documenti supportati

Sono supportati documenti di solo testo, che includono i seguenti tipi di file con i relativi limiti di dimensione:

Tipo di file Limite di dimensione del file
File PDF 50 MB
Documenti Google. 10 MB quando viene esportato da Google Workspace
Presentazioni Google 10 MB quando viene esportato da Google Workspace
disegni Google 10 MB quando viene esportato da Google Workspace
File JSON 1 MB
File di testo 10 MB
File Markdown 10 MB

È possibile utilizzare LlamaIndex su Vertex AI per RAG con altri tipi di documenti, ma può generare risposte di qualità inferiore.

Origini dati supportate

Le origini dati supportate sono tre, tra cui:

  • Un caricamento di un singolo file utilizzando upload_file (fino a 25 MB), che è una chiamata sincrona.

  • Importa i file da Cloud Storage.

  • Importa una directory da Google Drive.

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

    Per autenticare 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 Agente di servizio dati RAG Vertex AI.
    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 si trova nell'URL web.

Per ulteriori informazioni, consulta la sezione Riferimento API RAG.

Trasformazioni dei dati supportate

Dopo l'importazione di un documento, LlamaIndex su Vertex AI per RAG esegue un insieme di trasformazioni per la migliore qualità e alcuni parametri che gli sviluppatori possono controllare per i loro casi d'uso.

Questi parametri includono:

Parametro Descrizione
chunk_size Quando i documenti vengono importati in un indice, vengono suddivisi in blocchi. Il parametro chunk_size (in token) specifica la dimensione del blocco. La dimensione predefinita del blocco è di 1024 token.
chunk_overlap Per impostazione predefinita, i documenti sono suddivisi in blocchi con un certo numero di sovrapposizioni per migliorare la pertinenza e la qualità di recupero. La sovrapposizione predefinita dei blocchi è di 200 token.

Una dimensione del blocco più piccola significa che gli incorporamenti sono più precisi. Una dimensione del blocco più grande significa che gli incorporamenti potrebbero essere più generici, ma potrebbero non includere dettagli specifici.

Ad esempio, se converti 200 parole anziché 1000 parole in un array di incorporamento della stessa dimensione, potresti perdere i dettagli. Inoltre, è un buon esempio di come considerare il limite di lunghezza del contesto del modello. Un blocco grande potrebbe non essere adatto a un modello con finestra piccola.

Parametri di recupero

La seguente tabella include i parametri di recupero:

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

Gestione degli indici

Un corpus è una raccolta di documenti o una fonte di informazioni. Questa raccolta è anche detta indice. È possibile eseguire query sull'indice per recuperare i contesti pertinenti per la generazione dei modelli LLM. Quando crei un indice per la prima volta, il processo potrebbe richiedere un altro minuto. Per la creazione di più indici nello stesso progetto Google Cloud, il processo richiede meno tempo.

Sono supportate le seguenti operazioni sugli indici:

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

Gestione dei file

Sono supportate le seguenti operazioni con i file:

Per ulteriori informazioni, consulta la sezione Riferimento API RAG.

Passaggi successivi