Panoramica di LlamaIndex su Vertex AI per RAG

LlamaIndex è un framework di dati per lo sviluppo di applicazioni di modelli linguistici di grandi dimensioni (LLM) con incremento di contesto. L'aumento del contesto avviene quando applichi un LLM ai dati. Questo implementa RAG (Retrieval Augmented Generation).

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

Combinando ulteriori fonti di conoscenza con le conoscenze esistenti degli LLM, viene fornito un contesto migliore. Il contesto migliorato e la query migliorano la qualità della risposta dell'LLM.

I seguenti concetti sono fondamentali per comprendere LlamaIndex su Vertex AI. Questi concetti sono elencati nell'ordine del processo RAG (Retrieval Augmented Generation).

  1. Importazione dati: raccogli dati 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 parti 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 dimensionalità.

  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 knowledge base per trovare 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 concretamente 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 Quote di LlamaIndex su Vertex AI per 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 tuo 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, vedi Installare l'SDK Vertex AI per Python. Per maggiori informazioni, 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/d/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
# Configure embedding model, for example "text-embedding-004".
embedding_model_config = rag.EmbeddingModelConfig(
    publisher_model="publishers/google/models/text-embedding-004"
)

rag_corpus = rag.create_corpus(
    display_name=display_name,
    embedding_model_config=embedding_model_config,
)

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

# Direct context retrieval
response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=rag_corpus.name,
            # Supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="What is RAG and why it is helpful?",
    similarity_top_k=10,  # Optional
    vector_distance_threshold=0.5,  # Optional
)
print(response)

# Enhance generation
# Create a RAG retrieval tool
rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=rag_corpus.name,  # Currently only 1 corpus is allowed.
                    # Supply IDs from `rag.list_files()`.
                    # rag_file_ids=["rag-file-1", "rag-file-2", ...],
                )
            ],
            similarity_top_k=3,  # Optional
            vector_distance_threshold=0.5,  # Optional
        ),
    )
)
# Create a gemini-pro model instance
rag_model = GenerativeModel(
    model_name="gemini-1.5-flash-001", tools=[rag_retrieval_tool]
)

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

Modelli di generazione supportati

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

Modello Versione
Gemini 1.5 Flash gemini-1.5-flash-001
Gemini 1.5 Pro 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 incorporamento supportati

Sono supportati i modelli Google indicati di seguito:

  • textembedding-gecko@003
  • textembedding-gecko-multilingual@001
  • text-embedding-004
  • text-multilingual-embedding-002

Sono supportati i modelli Google ottimizzati per le seguenti versioni:

  • textembedding-gecko@003
  • textembedding-gecko-multilingual@001
  • text-embedding-004
  • text-multilingual-embedding-002
  • textembedding-gecko@002
  • textembedding-gecko@001

Se la configurazione non è specificata, il comportamento predefinito prevede l'utilizzo di text-embedding-004 per la scelta di incorporamento su RagCorpus. Per ulteriori informazioni sull'ottimizzazione dei modelli di incorporamento, consulta Ottimizzazione degli incorporamenti di testo.

Tipi di documenti supportati

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

Tipo di file Limite dimensioni file
Documenti Google. 10 MB quando vengono 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) 10 MB
File PDF 50 MB
File di testo 10 MB

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

Origini dati supportate

Sono supportate tre origini dati, tra cui:

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

  • Importa file da Cloud Storage.

  • Importa una directory da Google Drive.

    È necessario concedere all'account di servizio le autorizzazioni corrette per importare i file. In caso contrario, i file non vengono importati e non viene visualizzato alcun messaggio di errore. Per ulteriori informazioni sui limiti di dimensione dei file, vedi 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 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. Puoi trovare l'ID risorsa di Google Drive nell'URL web.

Per ulteriori informazioni, consulta il riferimento dell'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 esistono 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 (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 chunk maggiore significa che gli incorporamenti potrebbero essere più generici ma possono perdere dettagli specifici.

Ad esempio, se converti 200 parole anziché 1000 in un array di incorporamento della stessa dimensione, potresti perdere i dettagli. Questo è anche un buon esempio di quando si considera il limite di lunghezza del contesto del modello. Un blocco di grandi dimensioni potrebbe non rientrare in un modello con finestra piccola.

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.

Gestione degli indici

Un corpus è una raccolta di documenti o una fonte di informazioni. Questa raccolta è detta anche indice. È quindi possibile eseguire query sull'indice per recuperare contesti pertinenti per la generazione LLM. Quando crei un indice per la prima volta, il processo potrebbe richiedere un altro minuto. Per altre creazioni di indici all'interno dello stesso progetto Google Cloud, il processo richiede meno tempo.

Sono supportate le seguenti operazioni di indicizzazione:

Le operazioni simultanee su corpora non sono supportate. Per maggiori informazioni, consulta il riferimento dell'API RAG.

Gestione dei file

Sono supportate le seguenti operazioni sui file:

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

Passaggi successivi