Panoramica di LlamaIndex su Vertex AI per RAG

LlamaIndex è un framework di dati per lo sviluppo le applicazioni di modelli linguistici di grandi dimensioni (LLM) con incremento del contesto. Aumento del contesto si verifica 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 LlamaIndex su Vertex AI per RAG, puoi arricchire contesto LLM con ulteriori informazioni private, perché il modello può ridurre allucinazione e a rispondere alle domande in modo più preciso.

Combinando ulteriori fonti di conoscenza con quelle esistenti che gli 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 nell'ordine 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 per prepararti 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 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. 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 componente in LlamaIndex su Vertex AI per le ricerche RAG attraverso le sue conoscenze per trovare informazioni pertinenti alla query.

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

Questa pagina spiega come utilizzare LlamaIndex su Vertex AI per RAG fornisce esempi di Python per dimostrare come utilizzare il API RAG.

Per informazioni sui limiti di dimensioni 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 per informazioni su come personalizzare i 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 ulteriori informazioni, consulta 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 = "your-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,
            # Optional: 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.
                    # Optional: 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 supportati

Modelli Gemini specifici e supporto del modello Llama 3.1 gestito da Google LlamaIndex su Vertex AI.

Modelli Gemini supportati

La tabella seguente elenca i modelli Gemini e le relative versioni che supportano LlamaIndex su Vertex AI:

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

Modello Llama 3.1 supportato

L'endpoint Model as a Service (MaaS) Llama 3.1 gestito da Google può supportare anche LlamaIndex su Vertex AI.

Il seguente esempio di codice mostra come utilizzare l'API Gemini per per creare un'istanza modello aperta.

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

Modelli di incorporamento supportati

I seguenti modelli di incorporamento sono supportati per la creazione e la ricerca del corpus e recupero:

  • 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 text-embedding-004 per la scelta di incorporamento su RagCorpus. Per per ulteriori informazioni sull'ottimizzazione dei modelli di incorporamento, consulta Ottimizzare le rappresentazioni distribuite del testo.

Tipi di documenti supportati

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

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

L'utilizzo di LlamaIndex su Vertex AI per RAG con altri tipi di documenti è possibile, possono generare risposte di qualità inferiore.

Origini dati supportate

Sono supportate tre origini dati, tra cui:

  • Il caricamento di un singolo file utilizzando upload_file (fino a 25 MB), che è un processo sincrono chiamata.

  • 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 maggiori informazioni informazioni sui limiti delle dimensioni 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 su Google Drive una cartella o un file. 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 set trasformazioni per la migliore qualità e ci sono parametri che gli sviluppatori controllare per i 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 blocco più grande gli incorporamenti potrebbero essere più generici, ma potrebbero perdere dettagli specifici.

Ad esempio, se converti 200 parole anziché 1000 in una di un array di incorporamento della stessa dimensione, potresti perdere i dettagli. Questo è anche un buon un esempio di quando si considera il limite di lunghezza del contesto del modello. Un blocco grande non rientrano in un modello con finestre ridotte.

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. Quella raccolta o indice. È quindi possibile eseguire query sull'indice per recuperare contesti pertinenti per la generazione di LLM. Quando crei un indice per la prima volta, il processo potrebbe richiedere un altro minuto. Per altre creazioni di indici nello 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 ulteriori informazioni, consulta Riferimento API RAG.

Gestione dei file

Sono supportate le seguenti operazioni sui file:

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

Passaggi successivi