Présentation de LlamaIndex sur Vertex AI pour la RAG

LlamaIndex est un framework de données permettant de développer des applications de grand modèle de langage (LLM) augmenté par le contexte. L'augmentation du contexte se produit lorsque vous appliquez un LLM à vos données. Cette mise en œuvre met en œuvre la génération augmentée de récupération (RAG).

Un LLM pose souvent problème lorsqu'il ne comprend pas les connaissances privées, c'est-à-dire les données de votre organisation. Avec LlamaIndex sur Vertex AI pour RAG, vous pouvez enrichir le contexte LLM avec des informations privées supplémentaires, car le modèle peut réduire les hallucinations et répondre aux questions plus précisément.

En combinant d'autres sources de connaissances avec les connaissances existantes dont disposent les LLM, il est possible d'obtenir un meilleur contexte. Le contexte amélioré et la requête améliorent la qualité de la réponse du LLM.

Les concepts suivants sont essentiels pour comprendre LlamaIndex sur Vertex AI. Ces concepts sont répertoriés dans l'ordre du processus de génération augmentée de récupération (RAG).

  1. Ingestion de données : intégrez des données provenant de différentes sources. Par exemple, les fichiers locaux, Cloud Storage et Google Drive.

  2. Transformation des données : conversion des données en préparation pour l'indexation. Par exemple, les données sont divisées en fragments.

  3. Représentation vectorielle continue : représentations numériques de mots ou de textes. Ces chiffres capturent la signification sémantique et le contexte du texte. Les mots ou textes similaires ou connexes ont tendance à avoir des représentations vectorielles continues similaires, ce qui signifie qu'ils sont plus proches les uns des autres dans l'espace vectoriel de grande dimension.

  4. Indexation des données : LlamaIndex sur Vertex AI pour RAG crée un index appelé corpus. L'index structure la base de connaissances afin qu'il soit optimisé pour la recherche. Par exemple, l'index s'apparente à une table des matières détaillée pour un immense livre de référence.

  5. Récupération . Lorsqu'un utilisateur pose une question ou fournit une requête, le composant de récupération de LlamaIndex sur Vertex AI pour RAG effectue une recherche dans sa base de connaissances afin de trouver des informations pertinentes pour la requête.

  6. Génération : les informations récupérées deviennent le contexte ajouté à la requête utilisateur d'origine. Elles servent de guide au modèle d'IA générative pour générer des réponses fondées et pertinentes.

Cette page vous aide à utiliser LlamaIndex sur Vertex AI pour RAG et fournit des exemples Python pour montrer comment utiliser l'API RAG.

Pour en savoir plus sur les limites de taille des fichiers, consultez la section Types de documents acceptés. Pour en savoir plus sur les quotas liés à LlamaIndex sur Vertex AI pour RAG, consultez la section LlamaIndex sur Vertex AI pour les quotas RAG. Pour en savoir plus sur la personnalisation des paramètres, consultez la section Paramètres de récupération.

Exécuter LlamaIndex sur Vertex AI pour RAG à l'aide du SDK Vertex AI

Pour utiliser LlamaIndex sur Vertex AI pour la RAG, procédez comme suit :

  1. Installez le SDK Vertex AI pour Python

  2. Exécutez cette commande dans la console Google Cloud pour configurer votre projet.

    gcloud config set {project}

  3. Exécutez cette commande pour autoriser votre connexion.

    gcloud auth application-default login

  4. Copiez et collez cet exemple de code dans la console Google Cloud pour exécuter LlamaIndex sur Vertex AI.

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'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_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.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)

Modèles compatibles

Les modèles suivants et leurs versions compatibles avec LlamaIndex sur Vertex AI incluent :

Modèle Version
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

Types de documents acceptés

Les documents en texte uniquement sont acceptés. Ils incluent les types de fichiers suivants, avec leurs limites de taille :

File type Taille de fichier maximale
Documents Google 10 Mo lorsqu'il est exporté depuis Google Workspace
dessins Google 10 Mo lorsqu'il est exporté depuis Google Workspace
Google Slides 10 Mo lorsqu'il est exporté depuis Google Workspace
Fichier HTML 10 Mo
Fichier JSON 1 Mo
Fichier Markdown 10 Mo
Diapositives Microsoft PowerPoint (fichier PPTX) 10 Mo
Documents Microsoft Word (fichier DOCX) 10 Mo
Fichier PDF 50 Mo
Fichier texte 10 Mo

L'utilisation de LlamaIndex sur Vertex AI pour RAG avec d'autres types de documents est possible, mais peut générer des réponses de qualité inférieure.

Sources de données prises en charge

Trois types de sources de données sont acceptés, parmi lesquels :

  • Importation d'un seul fichier à l'aide de upload_file (jusqu'à 25 Mo), qui est un appel synchrone.

  • Importer un ou plusieurs fichiers depuis Cloud Storage.

  • Importer un répertoire depuis Google Drive.

    Le compte de service doit disposer des autorisations appropriées pour importer des fichiers. Sinon, aucun fichier n'est importé et aucun message d'erreur ne s'affiche. Pour en savoir plus sur les limites de taille des fichiers, consultez la page Types de documents compatibles.

    Pour vous authentifier et accorder des autorisations, procédez comme suit :

    1. Accédez à la page IAM de votre projet Google Cloud.
    2. Sélectionnez Inclure l'attribution de rôle fournie par Google.
    3. Recherchez le compte de service Vertex AI RAG Data Service Agent.
    4. Cliquez sur Partager dans le dossier du Drive et partagez le contenu avec le compte de service.
    5. Accordez l'autorisation Viewer au compte de service sur votre dossier ou fichier Google Drive. L'ID de la ressource Google Drive se trouve dans l'URL Web.

Pour en savoir plus, consultez la documentation de référence de l'API RAG.

Transformations de données compatibles

Une fois qu'un document est ingéré, LlamaIndex sur Vertex AI pour RAG exécute un ensemble de transformations pour une meilleure qualité, et les développeurs peuvent contrôler certains paramètres pour leurs cas d'utilisation.

Ces paramètres incluent les suivants :

Paramètres Description
chunk_size Lorsque des documents sont ingérés dans un index, ils sont divisés en fragments. Le paramètre chunk_size (en jetons) spécifie la taille du fragment. La taille des fragments par défaut est de 1 024 jetons.
chunk_overlap Par défaut, les documents sont divisés en segments qui se chevauchent partiellement pour améliorer la pertinence et la qualité de la récupération. Le chevauchement de fragments par défaut est de 200 jetons.

Une taille de fragment plus petite signifie que les représentations vectorielles continues sont plus précises. Une taille de fragment plus importante signifie que les représentations vectorielles continues peuvent être plus générales, mais peuvent passer à côté de détails spécifiques.

Par exemple, si vous convertissez 200 mots au lieu de 1 000 mots en un tableau de représentations vectorielles continues de la même dimension, vous pouvez perdre des détails. C'est également un bon exemple de prise en compte de la limite de longueur du contexte de modèle. Un grand fragment peut ne pas tenir dans un modèle à petite fenêtre.

Paramètres de récupération

Le tableau suivant inclut les paramètres de récupération :

Paramètres Description
similarity_top_k Contrôle le nombre maximal de contextes récupérés.
vector_distance_threshold Seuls les contextes dont la distance est inférieure au seuil sont pris en compte.

Gestion des index

Un corpus est un ensemble de documents ou une source d'informations. Cette collection est également appelée index. L'index peut ensuite être interrogé pour récupérer les contextes pertinents pour la génération de LLM. Lorsque vous créez un index pour la première fois, le processus peut prendre une minute supplémentaire. Si vous créez davantage d'index au sein du même projet Google Cloud, le processus prend moins de temps.

Les opérations d'index suivantes sont acceptées :

Les opérations simultanées sur les corpus ne sont pas prises en charge. Pour en savoir plus, consultez la documentation de référence de l'API RAG.

Gestion de fichiers

Les opérations de fichiers suivantes sont acceptées :

Pour en savoir plus, consultez la documentation de référence de l'API RAG.

Étapes suivantes