API RAG Engine

Le moteur RAG Vertex AI est un composant de la plate-forme Vertex AI, qui facilite la génération augmentée par récupération (RAG). Le moteur RAG permet aux grands modèles de langage (LLM) d'accéder aux données de sources de connaissances externes, telles que des documents et des bases de données, et de les intégrer. En utilisant le RAG, les LLM peuvent générer des réponses plus précises et informatives.

Exemple de syntaxe

Cette section fournit la syntaxe permettant de créer un corpus RAG.

curl

PROJECT_ID: Your project ID.
LOCATION: The region to process the request.
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora\
  -d '{
  "display_name" : "...",
  "description": "..."
}'

Python

corpus = rag.create_corpus(display_name=..., description=...)
print(corpus)

Liste des paramètres

Cette section répertorie les éléments suivants:

Paramètres Examples
Consultez la section Paramètres de gestion des corpus. Consultez les exemples de gestion de corpus.
Consultez la section Paramètres de gestion des fichiers. Consultez la section Exemples de gestion de fichiers.

Paramètres de gestion des corpus

Pour en savoir plus concernant un corpus de RAG, consultez la page Gestion des corpus.

Créer un corpus de RAG

Ce tableau répertorie les paramètres utilisés pour créer un corpus RAG.

Corps de la requête
Paramètres

display_name

Requis : string

Nom à afficher du corpus RAG.

description

Facultatif : string.

Description du corpus RAG.

vector_db_config

Facultatif: immuable: RagVectorDbConfig

Configuration des bases de données Vector.

RagVectorDbConfig
Paramètres

rag_managed_db

oneof vector_db: RagVectorDbConfig.RagManagedDb

Si aucune base de données vectorielle n'est spécifiée, rag_managed_db est la base de données vectorielle par défaut.

pinecone

oneof vector_db: RagVectorDbConfig.Pinecone

Spécifie votre instance Pinecone.

pinecone.index_name

string

Il s'agit du nom utilisé pour créer l'index Pinecone utilisé avec le corpus RAG.

Une fois définie, cette valeur ne peut plus être modifiée. Vous pouvez le laisser vide dans l'appel d'API CreateRagCorpus et le définir avec une valeur non vide dans un appel d'API UpdateRagCorpus de suivi.

vertex_vector_search

oneof vector_db: RagVectorDbConfig.VertexVectorSearch

Indique votre instance Vertex Vector Search.

vertex_vector_search.index

string

Il s'agit du nom de la ressource de l'index de recherche vectorielle utilisé avec le corpus RAG.

Format : projects/{project}/locations/{location}/indexEndpoints/{index_endpoint}

Une fois définie, cette valeur ne peut plus être modifiée. Vous pouvez le laisser vide dans l'appel d'API CreateRagCorpus et le définir avec une valeur non vide dans un appel d'API UpdateRagCorpus de suivi.

vertex_vector_search.index_endpoint

string

Il s'agit du nom de la ressource du point de terminaison de l'index Vector Search utilisé avec le corpus RAG.

Format : projects/{project}/locations/{location}/indexes/{index}

Une fois définie, cette valeur ne peut plus être modifiée. Vous pouvez le laisser vide dans l'appel d'API CreateRagCorpus et le définir avec une valeur non vide dans un appel d'API UpdateRagCorpus de suivi.

api_auth.api_key_config.api_key_secret_version

string

Il s'agit du nom complet de la ressource du secret stocké dans Secret Manager, qui contient votre clé API Pinecone.

Format : projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

Vous pouvez le laisser vide dans l'appel d'API CreateRagCorpus et le définir avec une valeur non vide dans un appel d'API UpdateRagCorpus de suivi.

rag_embedding_model_config.vertex_prediction_endpoint.endpoint

Facultatif: immuable: string

Modèle d'embedding à utiliser pour le corpus RAG. Une fois définie, cette valeur ne peut plus être modifiée. Si vous le laissez vide, nous utilisons text-embedding-004 comme modèle d'embedding.

Mettre à jour un corpus de RAG

Ce tableau liste les paramètres utilisés pour mettre à jour un corpus RAG.

Corps de la requête
Paramètres

display_name

Facultatif : string.

Nom à afficher du corpus RAG.

description

Facultatif : string.

Description du corpus RAG.

rag_vector_db.pinecone.index_name

string

Il s'agit du nom utilisé pour créer l'index Pinecone utilisé avec le corpus RAG.

Si votre RagCorpus a été créé avec une configuration Pinecone et que ce champ n'a jamais été défini auparavant, vous pouvez modifier le nom de l'index de l'instance Pinecone.

rag_vector_db.vertex_vector_search.index

string

Il s'agit du nom de la ressource de l'index de recherche vectorielle utilisé avec le corpus RAG.

Format : projects/{project}/locations/{location}/indexEndpoints/{index_endpoint}

Si votre RagCorpus a été créée avec une configuration Vector Search et que ce champ n'a jamais été défini auparavant, vous pouvez le mettre à jour.

rag_vector_db.vertex_vector_search.index_endpoint

string

Il s'agit du nom de la ressource du point de terminaison de l'index Vector Search utilisé avec le corpus RAG.

Format : projects/{project}/locations/{location}/indexes/{index}

Si votre RagCorpus a été créée avec une configuration Vector Search et que ce champ n'a jamais été défini auparavant, vous pouvez le mettre à jour.

rag_vector_db.api_auth.api_key_config.api_key_secret_version

string

Nom complet de la ressource du secret stocké dans Secret Manager, qui contient votre clé API Pinecone.

Format : projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

Lister les corpus RAG

Ce tableau répertorie les paramètres utilisés pour lister les corpus RAG.

Paramètres

page_size

Facultatif : int.

La taille de page de la liste standard.

page_token

Facultatif : string.

Le jeton de page de la liste standard. Généralement obtenu à partir de [ListRagCorporaResponse.next_page_token][] de l'appel [VertexRagDataService.ListRagCorpora][] précédent.

Obtenir un corpus de RAG

Ce tableau répertorie les paramètres utilisés pour obtenir un corpus RAG.

Paramètres

name

string

Nom de la ressource RagCorpus. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus_id}

Supprimer un corpus de RAG

Ce tableau liste les paramètres utilisés pour supprimer un corpus RAG.

Paramètres

name

string

Nom de la ressource RagCorpus. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus_id}

Paramètres de gestion des fichiers

Pour en savoir plus concernant un fichier de RAG, consultez la page Gestion des fichiers.

Transférer un fichier RAG

Ce tableau liste les paramètres utilisés pour importer un fichier RAG.

Corps de la requête
Paramètres

parent

string

Nom de la ressource RagCorpus. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus_id}

rag_file

Requis : RagFile

Fichier à importer.

upload_rag_file_config

Requis : UploadRagFileConfig

Configuration du RagFile à importer dans le RagCorpus.

RagFile

display_name

Requis : string

Nom à afficher du fichier RAG.

description

Facultatif : string.

Description du fichier RAG.

UploadRagFileConfig

rag_file_transformation_config.rag_file_chunking_config.fixed_length_chunking.chunk_size

int32

Nombre de jetons de chaque fragment.

rag_file_transformation_config.rag_file_chunking_config.fixed_length_chunking.chunk_overlap

int32

Chevauchement entre les segments.

Importer des fichiers RAG

Ce tableau liste les paramètres utilisés pour importer un fichier RAG.

Paramètres

parent

Requis : string

Nom de la ressource RagCorpus.

Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus_id}

gcs_source

oneof import_source: GcsSource

Emplacement Cloud Storage.

Permet d'importer des fichiers individuels ainsi que des répertoires Cloud Storage entiers.

gcs_source.uris

list sur string

URI de stockage Cloud Storage contenant le fichier d'importation.

google_drive_source

oneof import_source: GoogleDriveSource

Emplacement de Google Drive

Permet d'importer des fichiers individuels ainsi que des dossiers Google Drive.

slack_source

oneof import_source: SlackSource

Le canal Slack sur lequel le fichier est importé.

jira_source

oneof import_source: JiraSource

Requête Jira dans laquelle le fichier est importé.

share_point_sources

oneof import_source: SharePointSources

Sources SharePoint dans lesquelles le fichier est importé.

rag_file_transformation_config.rag_file_chunking_config.fixed_length_chunking.chunk_size

int32

Nombre de jetons de chaque fragment.

rag_file_transformation_config.rag_file_chunking_config.fixed_length_chunking.chunk_overlap

int32

Chevauchement entre les segments.

max_embedding_requests_per_min

Facultatif : int32.

Nombre maximal de requêtes par minute que cette tâche est autorisée à envoyer au modèle d'encapsulation spécifié dans le corpus. Cette valeur est spécifique à cette tâche et n'est pas partagée avec d'autres tâches d'importation. Consultez la page "Quotas" du projet pour définir une valeur appropriée.

Si aucune valeur n'est spécifiée, une valeur par défaut de 1 000 QPM est utilisée.

GoogleDriveSource

resource_ids.resource_id

Requis : string

ID de la ressource Google Drive.

resource_ids.resource_type

Requis : string

Type de la ressource Google Drive.

SlackSource

channels.channels

Répétition: SlackSource.SlackChannels.SlackChannel

Informations sur le canal Slack, y compris l'ID et la période à importer.

channels.channels.channel_id

Requis : string

ID du canal Slack.

channels.channels.start_time

Facultatif : google.protobuf.Timestamp.

Code temporel de début des messages à importer.

channels.channels.end_time

Facultatif : google.protobuf.Timestamp.

Code temporel de fin des messages à importer.

channels.api_key_config.api_key_secret_version

Requis : string

Nom complet de la ressource du secret stocké dans Secret Manager, qui contient un jeton d'accès au canal Slack ayant accès aux ID de canal Slack.
Consultez la page https://api.slack.com/tutorials/tracks/getting-a-token.

Format : projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

JiraSource

jira_queries.projects

Répétition: string

Liste des projets Jira à importer dans leur intégralité.

jira_queries.custom_queries

Répétition: string

Liste des requêtes Jira personnalisées à importer. Pour en savoir plus sur le langage JQL (Jira Query Language), consultez la page
Assistance Jira.

jira_queries.email

Requis : string

Adresse e-mail Jira.

jira_queries.server_uri

Requis : string

URI du serveur Jira.

jira_queries.api_key_config.api_key_secret_version

Requis : string

Nom complet de la ressource du secret stocké dans Secret Manager, qui contient la clé API Jira ayant accès aux ID de canaux Slack.
Consultez la page https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/.

Format : projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

SharePointSources

share_point_sources.sharepoint_folder_path

oneof dans folder_source: string

Chemin d'accès du dossier SharePoint à partir duquel effectuer le téléchargement.

share_point_sources.sharepoint_folder_id

oneof dans folder_source: string

ID du dossier SharePoint à partir duquel effectuer le téléchargement.

share_point_sources.drive_name

oneof dans drive_source: string

Nom du disque à partir duquel effectuer le téléchargement.

share_point_sources.drive_id

oneof dans drive_source: string

ID du disque à partir duquel effectuer le téléchargement.

share_point_sources.client_id

string

ID de l'application enregistrée sur le portail Microsoft Azure.
L'application doit également être configurée avec les autorisations MS Graph "Files.ReadAll", "Sites.ReadAll" et BrowserSiteLists.Read.All.

share_point_sources.client_secret.api_key_secret_version

Requis : string

Nom de ressource complet du secret stocké dans Secret Manager, qui contient le secret de l'application pour l'application enregistrée dans Azure.

Format : projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

share_point_sources.tenant_id

string

Identifiant unique de l'instance Azure Active Directory.

share_point_sources.sharepoint_site_name

string

Nom du site SharePoint à partir duquel effectuer le téléchargement. Il peut s'agir du nom ou de l'ID du site.

Obtenir un fichier RAG

Ce tableau répertorie les paramètres utilisés pour obtenir un fichier RAG.

Paramètres

name

string

Nom de la ressource RagFile. Format : projects/{project}/locations/{location}/ragCorpora/{rag_file_id}

Supprimer un fichier RAG

Ce tableau répertorie les paramètres utilisés pour supprimer un fichier RAG.

Paramètres

name

string

Nom de la ressource RagFile. Format : projects/{project}/locations/{location}/ragCorpora/{rag_file_id}

Récupération et prédiction

Cette section liste les paramètres de récupération et de prédiction.

Paramètres de récupération

Ce tableau répertorie les paramètres de l'API RetrieveContexts.

Paramètres

parent

Requis : string

Nom de la ressource de l'emplacement à partir duquel récupérer RagContexts.
Les utilisateurs doivent être autorisés à passer un appel dans le projet.

Format : projects/{project}/locations/{location}

vertex_rag_store

VertexRagStore

Source de données de Vertex RagStore.

query

Requis : RagQuery

Requête de récupération RAG unique.

VertexRagStore
VertexRagStore

rag_resources

liste: RagResource

Représentation de la source RAG. Il peut être utilisé pour spécifier uniquement le corpus ou des RagFile. Ne prend en charge qu'un seul corpus ou plusieurs fichiers d'un même corpus.

rag_resources.rag_corpus

Facultatif : string.

Nom de la ressource RagCorpora.

Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}

rag_resources.rag_file_ids

liste: string

Liste des ressources RagFile.

Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file}

RagQuery

text

string

Requête au format texte permettant d'obtenir des contextes pertinents.

rag_retrieval_config

Facultatif : RagRetrievalConfig.

Configuration de récupération de la requête.

RagRetrievalConfig

top_k

Facultatif : int32.

Nombre de contextes à récupérer.

filter.vector_distance_threshold

oneof vector_db_threshold : double

Ne renvoie que les contextes dont la distance vectorielle est inférieure au seuil.

filter.vector_similarity_threshold

oneof vector_db_threshold : double

Ne renvoie que les contextes pour lesquels la similarité vectorielle est supérieure au seuil.

Paramètres de prédiction

Ce tableau présente les paramètres de prédiction.

GenerateContentRequest

tools.retrieval.vertex_rag_store

VertexRagStore

Défini pour utiliser une source de données alimentée par le RAG Vertex AI.

Pour en savoir plus, consultez VertexRagStore.

Exemples de gestion de corpus

Cette section fournit des exemples d'utilisation de l'API pour gérer votre corpus RAG.

Créer un exemple de corpus RAG

Ces exemples de code montrent comment créer un corpus RAG.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • CORPUS_DISPLAY_NAME: nom à afficher du corpus RAG.
  • CORPUS_DESCRIPTION: description du corpus RAG.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora

Corps JSON de la requête :

{
  "display_name" : "CORPUS_DISPLAY_NAME",
  "description": "CORPUS_DESCRIPTION",
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora"

Powershell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

  $cred = gcloud auth print-access-token
  $headers = @{ "Authorization" = "Bearer $cred" }

  Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora" | Select-Object -Expand Content

Vous devriez recevoir un code d'état indiquant la réussite de l'opération (2xx).

L'exemple suivant montre comment créer un corpus RAG à l'aide de l'API REST.

  // CreateRagCorpus
  // Input: LOCATION, PROJECT_ID, CORPUS_DISPLAY_NAME
  // Output: CreateRagCorpusOperationMetadata
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora \
  -d '{
        "display_name" : "CORPUS_DISPLAY_NAME"
    }'

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.

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • CORPUS_DISPLAY_NAME: nom à afficher du corpus RAG.
  • CORPUS_DESCRIPTION: description du corpus RAG.
from vertexai import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
display_name = "CORPUS_DISPLAY_NAME"
description = "CORPUS_DESCRIPTION"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

# Configure embedding model
embedding_model_config = rag.EmbeddingModelConfig(
    publisher_model="publishers/google/models/text-embedding-004"
)

corpus = rag.create_corpus(
    display_name=display_name,
    description=description,
    embedding_model_config=embedding_model_config,
)
print(corpus)
# Example response:
# RagCorpus(name='projects/1234567890/locations/us-central1/ragCorpora/1234567890',
# display_name='test_corpus', description='Corpus Description', embedding_model_config=...
# ...

Mettre à jour un exemple de corpus de RAG

Vous pouvez mettre à jour votre corpus RAG avec un nouveau nom à afficher, une nouvelle description et une nouvelle configuration de la base de données de vecteurs. Toutefois, vous ne pouvez pas modifier les paramètres suivants dans votre corpus RAG:

  • Type de base de données vectorielle. Par exemple, vous ne pouvez pas remplacer la base de données vectorielle de Weaviate par Vertex AI Feature Store.
  • Si vous utilisez l'option de base de données gérée, vous ne pouvez pas mettre à jour la configuration de la base de données vectorielle.

Ces exemples montrent comment mettre à jour un corpus RAG.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • CORPUS_ID: ID du corpus de votre corpus RAG.
  • CORPUS_DISPLAY_NAME: nom à afficher du corpus RAG.
  • CORPUS_DESCRIPTION: description du corpus RAG.
  • INDEX_NAME: nom de la ressource de l'index Vector Search. Format : projects/{project}/locations/{location}/indexes/{index}.
  • INDEX_ENDPOINT_NAME: nom de la ressource du point de terminaison de l'index Vector Search. Format : projects/{project}/locations/{location}/indexEndpoints/{index_endpoint}.

Méthode HTTP et URL :

PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/CORPUS_ID

Corps JSON de la requête :

{
  "display_name" : "CORPUS_DISPLAY_NAME",
  "description": "CORPUS_DESCRIPTION",
  "rag_vector_db_config": {
    "vertex_vector_search": {
        "index": "INDEX_NAME",
        "index_endpoint": "INDEX_ENDPOINT_NAME",
    }
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/CORPUS_ID"

Powershell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/CORPUS_ID" | Select-Object -Expand Content

Vous devriez recevoir un code d'état indiquant la réussite de l'opération (2xx).

Exemple de liste de corpus RAG

Ces exemples de code montrent comment lister tous les corpus RAG.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • PAGE_SIZE: taille de page de la liste standard. Vous pouvez ajuster le nombre de corpus RAG à renvoyer par page en mettant à jour le paramètre page_size.
  • PAGE_TOKEN: jeton de page de liste standard. Généralement obtenu à l'aide de ListRagCorporaResponse.next_page_token de l'appel VertexRagDataService.ListRagCorpora précédent.

Méthode HTTP et URL :

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora?page_size=PAGE_SIZE&page_token=PAGE_TOKEN

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"

Powershell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content

Vous devriez recevoir un code d'état indiquant la réussite de l'opération (2xx) et une liste de corpus RAG sous le PROJECT_ID donné.

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 import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
LOCATION = "us-central1"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location=LOCATION)

corpora = rag.list_corpora()
print(corpora)
# Example response:
# ListRagCorporaPager<rag_corpora {
#   name: "projects/[PROJECT_ID]/locations/us-central1/ragCorpora/2305843009213693952"
#   display_name: "test_corpus"
#   create_time {
# ...

Obtenir un exemple de corpus de RAG

Ces exemples de code montrent comment obtenir un corpus RAG.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID de la ressource du corpus RAG.

Méthode HTTP et URL :

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"

Powershell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID" | Select-Object -Expand Content

Une réponse réussie renvoie la ressource RagCorpus.

Les commandes get et list sont utilisées dans un exemple pour montrer comment RagCorpus utilise le champ rag_embedding_model_config dans vector_db_config, qui pointe vers le modèle d'encapsulation que vous avez choisi.

    PROJECT_ID: Your project ID.
    LOCATION: The region to process the request.
    RAG_CORPUS_ID: The corpus ID of your RAG corpus.
  ```

```sh
  // GetRagCorpus
  // Input: LOCATION, PROJECT_ID, RAG_CORPUS_ID
  // Output: RagCorpus
  curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID

  // ListRagCorpora
  curl -sS -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/
  ```

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.

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID de la ressource du corpus RAG.
from vertexai import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"
corpus_name = "projects/{PROJECT_ID}/locations/{LOCATION}/ragCorpora/{rag_corpus_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location=LOCATION)

corpus = rag.get_corpus(name=corpus_name)
print(corpus)
# Example response:
# RagCorpus(name='projects/[PROJECT_ID]/locations/us-central1/ragCorpora/1234567890',
# display_name='test_corpus', description='Corpus Description',
# ...

Exemple de suppression d'un corpus de RAG

Ces exemples de code montrent comment supprimer un corpus RAG.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID de la ressource RagCorpus.

Méthode HTTP et URL :

DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"

Powershell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID" | Select-Object -Expand Content

Une réponse réussie renvoie le DeleteOperationMetadata.

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 import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag.delete_corpus(name=corpus_name)
print(f"Corpus {corpus_name} deleted.")
# Example response:
# Successfully deleted the RagCorpus.
# Corpus projects/[PROJECT_ID]/locations/us-central1/ragCorpora/123456789012345 deleted. import rag

Exemples de gestion de fichiers

Cette section fournit des exemples d'utilisation de l'API pour gérer les fichiers RAG.

Importer un exemple de fichier RAG

Ces exemples de code montrent comment importer un fichier RAG.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID du corpus de votre corpus RAG.
  • LOCAL_FILE_PATH: chemin d'accès local au fichier à importer.
  • DISPLAY_NAME: nom à afficher du fichier RAG.
  • DESCRIPTION: description du fichier RAG.

Pour envoyer votre requête, utilisez la commande suivante:

curl -X POST \
-H "X-Goog-Upload-Protocol: multipart" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-F metadata="{'rag_file': {'display_name':' DISPLAY_NAME', 'description':'DESCRIPTION'}}" \
-F file=@LOCAL_FILE_PATH \
"https://LOCATION-aiplatform.googleapis.com/upload/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload"

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.

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID du corpus de votre corpus RAG.
  • LOCAL_FILE_PATH: chemin d'accès local au fichier à importer.
  • DISPLAY_NAME: nom à afficher du fichier RAG.
  • DESCRIPTION: description du fichier RAG.
from vertexai import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"
path = "path/to/local/file.txt"
display_name = "file_display_name"
description = "file description"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag_file = rag.upload_file(
    corpus_name=corpus_name,
    path=path,
    display_name=display_name,
    description=description,
)
print(rag_file)
# RagFile(name='projects/[PROJECT_ID]/locations/us-central1/ragCorpora/1234567890/ragFiles/09876543',
#  display_name='file_display_name', description='file description')

Exemple d'importation de fichiers RAG

Vous pouvez importer des fichiers et des dossiers depuis Drive ou Cloud Storage. Vous pouvez utiliser response.metadata pour afficher les échecs partiels, le temps de requête et le temps de réponse dans l'objet response du SDK.

response.skipped_rag_files_count fait référence au nombre de fichiers ignorés lors de l'importation. Un fichier est ignoré lorsque les conditions suivantes sont remplies:

  1. Le fichier a déjà été importé.
  2. Le fichier n'a pas été modifié.
  3. La configuration de fragmentation du fichier n'a pas changé.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID du corpus de votre corpus RAG.
  • FOLDER_RESOURCE_ID: ID de ressource de votre dossier Drive.
  • GCS_URIS: liste d'emplacements Cloud Storage. Exemple : gs://my-bucket1.
  • CHUNK_SIZE: nombre de jetons que chaque fragment doit avoir.
  • CHUNK_OVERLAP: nombre de chevauchements de jetons entre les fragments.
  • EMBEDDING_MODEL_QPM_RATE: taux de QPM pour limiter l'accès de RAG à votre modèle d'embedding. Exemple: 1 000.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

Corps JSON de la requête :

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": "GCS_URIS"
    },
    "rag_file_chunking_config": {
      "chunk_size": "CHUNK_SIZE",
      "chunk_overlap": "CHUNK_OVERLAP"
    }
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

Powershell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content

Une réponse réussie renvoie la ressource ImportRagFilesOperationMetadata.

L'exemple suivant montre comment importer un fichier depuis Cloud Storage. Utilisez le champ de contrôle max_embedding_requests_per_min pour limiter la fréquence à laquelle le moteur RAG appelle le modèle d'embedding au cours du processus d'indexation ImportRagFiles. La valeur par défaut du champ est de 1000 appels par minute.

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID du corpus de votre corpus RAG.
  • GCS_URIS: liste d'emplacements Cloud Storage. Exemple : gs://my-bucket1.
  • CHUNK_SIZE: nombre de jetons que chaque fragment doit avoir.
  • CHUNK_OVERLAP: nombre de chevauchements de jetons entre les fragments.
  • EMBEDDING_MODEL_QPM_RATE: taux de QPM pour limiter l'accès des RAG à votre modèle d'embedding. Exemple: 1 000.
// ImportRagFiles
// Import a single Cloud Storage file or all files in a Cloud Storage bucket.
// Input: LOCATION, PROJECT_ID, RAG_CORPUS_ID, GCS_URIS
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": "GCS_URIS"
    },
    "rag_file_chunking_config": {
      "chunk_size": CHUNK_SIZE,
      "chunk_overlap": CHUNK_OVERLAP
    },
    "max_embedding_requests_per_min": EMBEDDING_MODEL_QPM_RATE
  }
}'

L'exemple suivant montre comment importer un fichier depuis Drive. Utilisez le champ de contrôle max_embedding_requests_per_min pour limiter la fréquence à laquelle le moteur RAG appelle le modèle d'embedding au cours du processus d'indexation ImportRagFiles. La valeur par défaut du champ est de 1000 appels par minute.

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID du corpus de votre corpus RAG.
  • FOLDER_RESOURCE_ID: ID de ressource de votre dossier Drive.
  • CHUNK_SIZE: nombre de jetons que chaque fragment doit avoir.
  • CHUNK_OVERLAP: nombre de chevauchements de jetons entre les fragments.
  • EMBEDDING_MODEL_QPM_RATE: taux de QPM pour limiter l'accès de RAG à votre modèle d'embedding. Exemple: 1 000.
// ImportRagFiles
// Import all files in a Google Drive folder.
// Input: LOCATION, PROJECT_ID, RAG_CORPUS_ID, FOLDER_RESOURCE_ID
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "google_drive_source": {
      "resource_ids": {
        "resource_id": "FOLDER_RESOURCE_ID",
        "resource_type": "RESOURCE_TYPE_FOLDER"
      }
    },
    "max_embedding_requests_per_min": EMBEDDING_MODEL_QPM_RATE
  }
}'

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.

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID du corpus de votre corpus RAG.
  • FOLDER_RESOURCE_ID: ID de ressource de votre dossier Drive.
  • CHUNK_SIZE: nombre de jetons que chaque fragment doit avoir.
  • CHUNK_OVERLAP: nombre de chevauchements de jetons entre les fragments.
  • EMBEDDING_MODEL_QPM_RATE: taux de QPM pour limiter l'accès de RAG à votre modèle d'embedding. Exemple: 1 000.
from vertexai import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"
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="LOCATION")

response = rag.import_files(
    corpus_name=corpus_name,
    paths=paths,
    chunk_size=512,  # Optional
    chunk_overlap=100,  # Optional
    max_embedding_requests_per_min=900,  # Optional
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.

Exemple de liste de fichiers RAG

Ces exemples de code montrent comment lister les fichiers RAG.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID de la ressource RagCorpus.
  • PAGE_SIZE: taille de page de la liste standard. Vous pouvez ajuster le nombre de RagFiles à renvoyer par page en mettant à jour le paramètre page_size.
  • PAGE_TOKEN: jeton de page de liste standard. Obtenu à l'aide de ListRagFilesResponse.next_page_token de l'appel VertexRagDataService.ListRagFiles précédent.

Méthode HTTP et URL :

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"

Powershell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une liste de RagFiles sous le RAG_CORPUS_ID donné.

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.

Remplacez les variables suivantes utilisées dans l'exemple de code:

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID de la ressource RagCorpus.
  • PAGE_SIZE: taille de page de la liste standard. Vous pouvez ajuster le nombre de RagFiles à renvoyer par page en mettant à jour le paramètre page_size.
  • PAGE_TOKEN: jeton de page de liste standard. Obtenu à l'aide de ListRagFilesResponse.next_page_token de l'appel VertexRagDataService.ListRagFiles précédent.
from vertexai import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

files = rag.list_files(corpus_name=corpus_name)
for file in files:
    print(file.display_name)
    print(file.name)
# Example response:
# g-drive_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/222222222222
# g_cloud_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/333333333333

Obtenir un exemple de fichier RAG

Ces exemples de code montrent comment obtenir un fichier RAG.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID de la ressource RagCorpus.
  • RAG_FILE_ID: ID de la ressource RagFile.

Méthode HTTP et URL :

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

Powershell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content

Une réponse réussie renvoie la ressource RagFile.

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.

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID de la ressource RagCorpus.
  • RAG_FILE_ID: ID de la ressource RagFile.
from vertexai import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
file_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag_file = rag.get_file(name=file_name)
print(rag_file)
# Example response:
# RagFile(name='projects/1234567890/locations/LOCATION/ragCorpora/11111111111/ragFiles/22222222222',
# display_name='file_display_name', description='file description')

Supprimer un exemple de fichier RAG

Ces exemples de code montrent comment supprimer un fichier RAG.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID>: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID de la ressource RagCorpus.
  • RAG_FILE_ID: ID de la ressource RagFile. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file_id}.

Méthode HTTP et URL :

DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

Powershell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content

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.

  • PROJECT_ID>: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_ID: ID de la ressource RagCorpus.
  • RAG_FILE_ID: ID de la ressource RagFile. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file_id}.
from vertexai import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
file_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag.delete_file(name=file_name)
print(f"File {file_name} deleted.")
# Example response:
# Successfully deleted the RagFile.
# File projects/1234567890/locations/us-central1/ragCorpora/1111111111/ragFiles/2222222222 deleted.

Requête de récupération

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

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_RESOURCE: nom de la ressource RagCorpus. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • VECTOR_DISTANCE_THRESHOLD: seuls les contextes dont la distance vectorielle est inférieure au seuil sont renvoyés.
  • TEXT: texte de requête permettant d'obtenir des contextes pertinents.
  • SIMILARITY_TOP_K: nombre de contextes principaux à récupérer.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts

Corps JSON de la requête :

{
"vertex_rag_store": {
    "rag_resources": {
      "rag_corpus": "RAG_CORPUS_RESOURCE"
    },
    "vector_distance_threshold": VECTOR_DISTANCE_THRESHOLD
  },
  "query": {
  "text": TEXT
  "similarity_top_k": SIMILARITY_TOP_K
  }
}

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts"

Powershell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" | Select-Object -Expand Content

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une liste des RagFiles associés.

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.

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • RAG_CORPUS_RESOURCE: nom de la ressource RagCorpus. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • VECTOR_DISTANCE_THRESHOLD: seuls les contextes dont la distance vectorielle est inférieure au seuil sont renvoyés.
  • TEXT: texte de requête permettant d'obtenir des contextes pertinents.
  • SIMILARITY_TOP_K: nombre de contextes principaux à récupérer.
from vertexai import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=corpus_name,
            # Optional: supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="TEXT",
    similarity_top_k=SIMILARITY_TOP_K,  # Optional
    vector_distance_threshold=VECTOR_DISTANCE_THRESHOLD,  # Optional
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Génération

Le LLM génère une réponse ancrée à l'aide des contextes récupérés.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • MODEL_ID: modèle LLM pour la génération de contenu. Exemple : gemini-1.5-pro-002.
  • GENERATION_METHOD: méthode LLM pour la génération de contenu. Options: generateContent, streamGenerateContent.
  • INPUT_PROMPT: texte envoyé au LLM pour la génération de contenu. Essayez d'utiliser une requête pertinente pour les fichiers rag importés.
  • RAG_CORPUS_RESOURCE: nom de la ressource RagCorpus. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K : (facultatif) nombre de contextes principaux à récupérer.
  • VECTOR_DISTANCE_THRESHOLD : (facultatif) les contextes dont la distance vectorielle est inférieure au seuil sont renvoyés.
  • USER: votre nom d'utilisateur.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD

Corps JSON de la requête :

{
"contents": {
  "role": "USER",
  "parts": {
    "text": "INPUT_PROMPT"
  }
},
"tools": {
  "retrieval": {
  "disable_attribution": false,
  "vertex_rag_store": {
    "rag_resources": {
      "rag_corpus": "RAG_CORPUS_RESOURCE"
    },
    "similarity_top_k": "SIMILARITY_TOP_K",
    "vector_distance_threshold": VECTOR_DISTANCE_THRESHOLD
  }
  }
}
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD"

Powershell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" | Select-Object -Expand Content

Une réponse réussie renvoie le contenu généré avec des citations.

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.

  • PROJECT_ID: ID de votre projet.
  • LOCATION: région dans laquelle traiter la requête.
  • MODEL_ID: modèle LLM pour la génération de contenu. Exemple : gemini-1.5-pro-002.
  • GENERATION_METHOD: méthode LLM pour la génération de contenu. Options: generateContent, streamGenerateContent.
  • INPUT_PROMPT: texte envoyé au LLM pour la génération de contenu. Essayez d'utiliser une requête pertinente pour les fichiers rag importés.
  • RAG_CORPUS_RESOURCE: nom de la ressource RagCorpus. Format : projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K : (facultatif) nombre de contextes principaux à récupérer.
  • VECTOR_DISTANCE_THRESHOLD : (facultatif) les contextes dont la distance vectorielle est inférieure au seuil sont renvoyés.
from vertexai import rag
from vertexai.generative_models import GenerativeModel, Tool
import vertexai

PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus="RAG_CORPUS_RESOURCE",
                    # Optional: supply IDs from `rag.list_files()`.
                    # rag_file_ids=["rag-file-1", "rag-file-2", ...],
                )
            ],
            similarity_top_k=SIMILARITY_TOP_K,  # Optional
            vector_distance_threshold=VECTOR_DISTANCE_THRESHOLD,  # Optional
        ),
    )
)

rag_model = GenerativeModel(
    model_name="MODEL_ID", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

Étape suivante