Questa pagina mostra come collegare il corpus di RAG Engine al database Weaviate.
Puoi utilizzare l'istanza del database Weaviate, che è un database open source, con il motore RAG per indicizzare e eseguire una ricerca di somiglianza basata su vettori. R la ricerca delle somiglianze è un modo per trovare parti di testo simili che stai cercando, il che richiede l'uso di un incorporamento modello. Il modello di embedding produce dati vettoriali per ogni testo confrontato. La ricerca di somiglianze consente recuperare contesti semantici per il grounding su restituiscono i contenuti più precisi del tuo LLM.
Con RAG Engine, puoi continuare a utilizzare il tuo vettore completamente gestito dell'istanza di database, di cui sei responsabile del provisioning. RAG Engine usa il database vettoriale per l'archiviazione, la gestione e ricerche.
Considerazioni
Prima di utilizzare il database Weaviate, considera questi passaggi:
- Devi creare, configurare ed eseguire il deployment dell'istanza del database Weaviate e . Segui le istruzioni riportate in Creare la raccolta Weaviate per configurare una raccolta in base al tuo schema.
- Devi fornire una chiave API Weaviate, che consente a RAG Engine di interagire con il database Weaviate. Il motore RAG supporta
AuthN
eAuthZ
basati su chiavi API, che si connettono al database Weaviate e supportano una connessione HTTPS. - RAG Engine non memorizza e gestisce la chiave API Weaviate. Devi invece svolgere i seguenti passaggi:
- Archivia la chiave in Secret Manager di Google Cloud.
- Concedi all'account di servizio del progetto le autorizzazioni per accedere al tuo secret.
- Fornisci l'accesso a RAG Engine al nome risorsa del secret.
- Quando interagisci con il database Weaviate, RAG Engine accede alla risorsa segreta utilizzando il tuo account di servizio.
- Il corpus RAG Engine e la raccolta Weaviate hanno una mappatura uno a uno. I file RAG vengono archiviati in una raccolta di database Weaviate. Se la chiamata viene
apportate all'API
CreateRagCorpus
o all'APIUpdateRagCorpus
, il corpus RAG alla raccolta del database. - Oltre alle ricerche semantiche basate su embedding densi, anche la ricerca ibrida è supportata dal motore RAG tramite un database Weaviate. Puoi anche regolare la ponderazione tra denso e sparso somiglianza vettoriale in una ricerca ibrida.
Esegui il provisioning del database Weaviate
Prima di utilizzare il database Weaviate con RAG Engine, devi svolgere quanto segue:
- Configura ed esegui il deployment dell'istanza del database Weaviate.
- Prepara l'endpoint HTTPS.
- Crea la tua raccolta Weaviate.
- Utilizza la tua chiave API per eseguire il provisioning di Weaviate utilizzando
AuthN
eAuthZ
. - Esegui il provisioning del tuo account di servizio RAG Engine.
Configura ed esegui il deployment dell'istanza del database Weaviate
Devi seguire la guida rapida ufficiale di Weaviate. Tuttavia, puoi utilizzare la guida di Google Cloud Marketplace, che è facoltativa.
Puoi configurare la tua istanza di Weaviate ovunque purché l'endpoint di Weaviate accessibile per la configurazione e il deployment nel progetto. A questo punto puoi gestire completamente la tua istanza di database Weaviate.
Poiché RAG Engine non è coinvolto in nessuna fase del database Weaviate ciclo di vita di un'istanza, è tua responsabilità concedere le autorizzazioni RAG Engine in modo che possa archiviare e cercare i dati nel database Weaviate. È inoltre tua responsabilità assicurarti che i dati nel database possano essere utilizzati da RAG Engine. Ad esempio, se modifichi i dati, RAG Engine non è responsabile di eventuali comportamenti imprevisti dovuti a tali cambiamenti.
Prepara l'endpoint HTTPS
Durante il provisioning di Weaviate, assicurati di creare un endpoint HTTPS. Sebbene Le connessioni HTTP sono supportate, ma è preferibile che RAG Engine e Weaviate per il traffico del database usa una connessione HTTPS.
Crea la tua raccolta Weaviate
Poiché il corpus di RAG Engine e la raccolta Weaviate hanno un rapporto
devi creare una raccolta nel database Weaviate prima di
associando la tua raccolta al corpus di RAG Engine. Questa associazione una tantum viene effettuata quando chiami l'API CreateRagCorpus
o l'API UpdateRagCorpus
.
Quando crei una collezione in Weaviate, devi utilizzare il seguente schema:
Nome proprietà | Tipo di dati |
---|---|
fileId |
text |
corpusId |
text |
chunkId |
text |
chunkDataType |
text |
chunkData |
text |
fileOriginalUri |
text |
Utilizza la tua chiave API per eseguire il provisioning di Weaviate utilizzando AuthN
e AuthZ
Il provisioning della chiave API Weaviate prevede i seguenti passaggi:
- Crea la chiave API Weaviate.
- Configura Weaviate utilizzando la chiave API di Weaviate.
- Archivia la chiave API Weaviate in Secret Manager.
Crea la chiave API
RAG Engine può connettersi alle istanze del database Weaviate solo utilizzando la tua chiave API per l'autenticazione e l'autorizzazione. Devi seguire le Guida ufficiale all'autenticazione Weaviate per configurare l'autenticazione basata su chiave API nel database Weaviate in esecuzione in un'istanza Compute Engine.
Se per creare la chiave API Weaviate sono necessarie informazioni sull'identità da associare proveniente da RAG Engine, devi creare il tuo primo corpus e utilizzare Account di servizio RAG Engine come identità.
Archivia la chiave API in Secret Manager
Una chiave API contiene informazioni sensibili che consentono l'identificazione personale (informazioni personali sensibili), ovvero soggetti a requisiti legali. Se i dati personali sensibili vengono compromessi o utilizzati in modo improprio, sussiste un rischio significativo o danni significativi. Per ridurre al minimo i rischi singolo utente mentre utilizzi RAG Engine, non archiviare e gestire la chiave API e evitare di condividere la chiave API non criptata.
Per proteggere le informazioni sensibili relative alla privacy:
- Archivia la chiave API in Secret Manager.
- Concedi all'account di servizio RAG Engine le autorizzazioni per i tuoi secret
e gestisci il controllo dell'accesso a livello di risorsa secret.
- Accedi alle autorizzazioni del progetto.
- Attiva l'opzione Includi concessioni dei ruoli fornite da Google.
- Trova l'account di servizio, che ha il formato
service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com
- Modifica le entità dell'account di servizio.
- Aggiungere il ruolo Funzione di accesso ai secret di Secret Manager al servizio .
- Durante la creazione o l'aggiornamento del corpus RAG, passa la risorsa secret a RAG Engine e archiviare il nome della risorsa secret.
Quando invii richieste API alle tue istanze di database Weaviate, RAG Engine utilizza ogni account di servizio per leggere la chiave API corrispondente alle tue risorse secret in Secret Manager dai tuoi progetti.
Esegui il provisioning dell'account di servizio RAG Engine
Quando crei la prima risorsa nel progetto, RAG Engine crea un'istanza un account di servizio dedicato. Puoi trovare il tuo account di servizio nella pagina IAM del progetto. L'account di servizio segue questo formato:
service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com
Ad esempio, service-123456789@gcp-sa-vertex-rag.iam.gserviceaccount.com
.
Durante l'integrazione con il database Weaviate, il tuo account di servizio viene utilizzato nei seguenti scenari:
- Puoi utilizzare il tuo account di servizio per generare la chiave API Weaviate per l'autenticazione. In alcuni casi, la generazione della chiave API non richiede alcun utente informazioni, il che significa che non è necessario un account di servizio durante la generazione la chiave API.
- Puoi associare il tuo account di servizio alla chiave API nel database Weaviate per configurare l'autenticazione (
AuthN
) e l'autorizzazione (AuthZ
). Tuttavia, il tuo account di servizio non è obbligatorio. - Puoi archiviare la chiave API Secret Manager nel tuo progetto e concedere le autorizzazioni del tuo account di servizio a queste risorse con segreto.
- RAG Engine utilizza gli account di servizio per accedere alla chiave API da Secret Manager nei tuoi progetti.
configura l'ambiente della console Google Cloud
Fai clic per scoprire come configurare il tuo ambiente
Scopri come configurare il tuo ambiente selezionando una delle seguenti schede:
Python
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Installa o aggiorna l'SDK Vertex AI per Python tramite esegui questo comando:
pip3 install --upgrade "google-cloud-aiplatform>=1.38"
Node.js
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Installa o aggiorna l'SDK Vertex AI per Node.js eseguendo il seguente comando:
npm install @google-cloud/vertexai
Java
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
Per aggiungere
google-cloud-vertexai
come dipendenza, aggiungi il codice appropriato per il tuo ambiente:Maven con BOM
Aggiungi il seguente codice HTML a
pom.xml
:<dependencyManagement> <dependencies> <dependency> <groupId>com.google.cloud</groupId> <artifactId>libraries-bom</artifactId> <version>26.32.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-vertexai</artifactId> </dependency> </dependencies>
Maven senza BOM
Aggiungi il seguente codice HTML a
pom.xml
:<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-vertexai</artifactId> <version>0.4.0</version> </dependency>
Gradle without BOM
Add the following to your
build.gradle
implementation 'com.google.cloud:google-cloud-vertexai:0.4.0'
Go
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Esamina i pacchetti Go dell'API Vertex AI disponibili per determinare quale soddisfa al meglio le esigenze del tuo progetto:
Pacco cloud.google.com/go/vertexai (consigliato)
vertexai
è un pacchetto creato da persone che fornisce accesso a funzionalità e capacità comuni.Questo pacchetto è consigliato come punto di partenza per la maggior parte degli sviluppatori creando con l'API Vertex AI. Per accedere a funzionalità e non ancora coperte da questo pacchetto, usa lo strumento generato automaticamente
aiplatform
in alternativa.Pacco cloud.google.com/go/aiplatform
aiplatform
è un pacchetto generato automaticamente.Questo pacchetto è destinato ai progetti che richiedono l'accesso a Funzionalità dell'API Vertex AI non ancora fornite da pacchetto
vertexai
creato da persone fisiche.
Installa il pacchetto Go desiderato in base alle esigenze del tuo progetto eseguendo uno dei seguenti comandi:
# Human authored package. Recommended for most developers. go get cloud.google.com/go/vertexai
# Auto-generated package. go get cloud.google.com/go/aiplatform
C#
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
REST
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
- Per configurare le variabili di ambiente, inserisci quanto segue. Sostituisci
PROJECT_ID
con l'ID del tuo progetto Google Cloud.MODEL_ID="gemini-1.5-flash-002" PROJECT_ID="PROJECT_ID"
- Esegui il provisioning dell'endpoint:
gcloud beta services identity create --service=aiplatform.googleapis.com --project=${PROJECT_ID}
-
(Facoltativo) Se utilizzi Cloud Shell e ti viene chiesto di autorizzare Cloud Shell, fai clic su Autorizza.
Prepara il corpus RAG
Per accedere ai dati del database Weaviate, il motore RAG deve avere accesso a un corpus RAG. Questa sezione illustra i passaggi per creare un singolo corpus RAG e altri corpora RAG.
Utilizza le API CreateRagCorpus
e UpdateRagCorpus
Quando chiami le API CreateRagCorpus
e
UpdateRagCorpus
, devi specificare i seguenti campi:
rag_vector_db_config.weaviate
: dopo aver chiamato l'APICreateRagCorpus
, viene scelta la configurazione del database vettoriale. La configurazione del database vettoriale contiene tutti i campi di configurazione. Se il camporag_vector_db_config.weaviate
non è impostato, per impostazione predefinita viene impostatorag_vector_db_config.rag_managed_db
.weaviate.http_endpoint
: viene creato l'endpoint HTTPS o HTTP Weaviate. durante il provisioning dell'istanza del database Weaviate.weaviate.collection_name
: il nome della raccolta creata durante il provisioning delle istanze Weaviate. Il nome deve iniziare con una lettera maiuscola.api_auth.api_key_config
: la configurazione specifica di utilizzare una chiave API per autorizzare l'accesso al database vettoriale.api_key_config.api_key_secret_version
: il nome della risorsa del secret memorizzato in Secret Manager, che contiene la chiave dell'API Weaviate.
Puoi creare e associare il tuo corpus RAG alla raccolta Weaviate nell'istanza del database. Tuttavia, potresti aver bisogno dell'account di servizio per generare la chiave API e configurare l'istanza del database Weaviate. Quando crei al primo corpus RAG, viene generato l'account di servizio. Dopo aver creato il primo corpus RAG, l'associazione tra il database Weaviate e la chiave API potrebbe non essere pronta per l'utilizzo nella creazione di un altro corpus RAG.
Nel caso in cui il database e la chiave non siano pronti per essere associati al tuo Procedi nel seguente modo per il corpus RAG:
Imposta il campo
weaviate
inrag_vector_db_config
.- Non puoi modificare il database vettoriale associato.
- Lascia vuoti i campi
http_endpoint
ecollection_name
. Entrambi possono essere aggiornati in un secondo momento.
Se non hai la chiave API memorizzata in Secret Manager, puoi lasciare vuoto il campo
api_auth
. Quando chiami l'APIUpdateRagCorpus
, puoi aggiornare il campoapi_auth
. Weaviate richiede che fare quanto segue:- Imposta
api_key_config
nel campoapi_auth
. Imposta il
api_key_secret_version
della chiave API Weaviate in Secret Manager. Il campoapi_key_secret_version
utilizza il seguente formato:projects/{project}/secrets/{secret}/versions/{version}
- Imposta
Se specifichi campi che possono essere impostati una sola volta, ad esempio
http_endpoint
ocollection_name
, non puoi modificarle se non elimini il corpus RAG, e crea di nuovo il corpus RAG. Altri campi come il campo Chiave API,api_key_secret_version
, può essere aggiornato.Quando chiami
UpdateRagCorpus
, puoi impostare il campovector_db
.vector_db
deve essere impostato suweaviate
dalla chiamata APICreateRagCorpus
. In caso contrario, il sistema sceglie l'opzione Database gestito RAG, che è predefinita. Questa opzione non può essere modificata quando chiami ilUpdateRagCorpus
tramite Google Cloud CLI o tramite l'API Compute Engine. Quando chiamiUpdateRagCorpus
e il campovector_db
è parzialmente impostato, puoi aggiornare i campi contrassegnati come Modificabili (chiamati anche modificabile).
In questa tabella sono elencati i campi modificabili e immutabili di WeaviateConfig
utilizzati
nel codice.
Nome campo | Mutabile o immutabile |
---|---|
http_endpoint |
Immutabile una volta impostato |
collection_name |
Immutabile una volta impostato |
api_key_authentication |
Modificabile |
Creare il primo corpus RAG
Se l'account di servizio RAG Engine non esiste:
- Crea un corpus RAG in RAG Engine con una configurazione Weaviate vuota. che avvia il provisioning di RAG Engine per creare un account di servizio.
- Scegli un nome per l'account di servizio RAG Engine che rispetti questo formato:
service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com
Ad esempio,
service-123456789@gcp-sa-vertex-rag.iam.gserviceaccount.com
. - Utilizza il tuo account di servizio per accedere al tuo secret archiviato in Secret Manager del progetto, che contiene la chiave API Weaviate.
- Dopo il completamento del provisioning di Weaviate, ottieni le seguenti informazioni:
- L'endpoint HTTPS o HTTP di Weaviate.
- Il nome della raccolta Weaviate.
- Chiama l'API
CreateRagCorpus
per creare un corpus RAG con una configurazione Weaviate vuota e chiama l'APIUpdateRagCorpus
per aggiornare il corpus RAG con le seguenti informazioni:- Il tuo endpoint HTTPS o HTTP di Weaviate.
- Il nome della raccolta Weaviate.
- Il nome della risorsa della chiave API.
Creare un altro corpus RAG
Se l'account di servizio RAG Engine esiste, procedi nel seguente modo:
- Recupera l'account di servizio RAG Engine dalle autorizzazioni del progetto.
- Attiva l'opzione "Includi concessioni dei ruoli fornite da Google"
- Scegli un nome per l'account di servizio RAG Engine che rispetti questo formato:
service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com
- Utilizza il tuo account di servizio per accedere al tuo secret archiviato in Secret Manager del progetto, che contiene la chiave API Weaviate.
- Durante il provisioning di Weaviate, ottieni le seguenti informazioni:
- L'endpoint HTTPS o HTTP di Weaviate.
- Il nome della tua raccolta Weaviate.
- Crea un corpus RAG in RAG Engine e connettiti a Weaviate
tramite una delle seguenti operazioni:
- Effettua una chiamata API
CreateRagCorpus
per creare un corpus RAG con un campo Configurazione Weaviate, che è l'opzione preferita. - Effettua una chiamata API
CreateRagCorpus
per creare un corpus RAG con uno spazio Definisce la configurazione ed effettua una chiamata APIUpdateRagCorpus
per l'aggiornamento il corpus RAG con le seguenti informazioni:- Endpoint HTTP del database Weaviate
- Nome raccolta Weaviate
- Chiave API
- Effettua una chiamata API
Esempi
Questa sezione presenta un codice campione che mostra come configurare il tuo Weaviate il database, Secret Manager, il corpus RAG e il file RAG. Codice campione viene fornito anche per dimostrare come importare file, recuperare contesto, generare contenuto ed eliminare il corpus RAG e i file RAG.
Per utilizzare il blocco note dell'API RAG di Model Garden, consulta Utilizzare Weaviate con Llama 3.
Configura il database Weaviate
Questo esempio di codice mostra come configurare i dati Weaviate e tramite Secret Manager.
# TODO(developer): Update the variables.
# The HTTPS/HTTP Weaviate endpoint you created during provisioning.
HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"
# Your Weaviate API Key.
WEAVIATE_API_KEY="example-api-key"
# Select your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
# For example, "MyCollectionName"
# Note that the first letter needs to be capitalized.
# Otherwise, Weavaite will capitalize it for you.
WEAVIATE_COLLECTION_NAME="MyCollectionName"
# Create a collection in Weaviate which includes the required schema fields shown below.
echo '{
"class": "'${WEAVIATE_COLLECTION_NAME}'",
"properties": [
{ "name": "fileId", "dataType": [ "string" ] },
{ "name": "corpusId", "dataType": [ "string" ] },
{ "name": "chunkId", "dataType": [ "string" ] },
{ "name": "chunkDataType", "dataType": [ "string" ] },
{ "name": "chunkData", "dataType": [ "string" ] },
{ "name": "fileOriginalUri", "dataType": [ "string" ] }
]
}' | curl \
-X POST \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer "${WEAVIATE_API_KEY} \
-d @- \
${HTTP_ENDPOINT_NAME}/v1/schema
Configura Secret Manager
Per configurare Secret Manager, devi attivare Secret Manager e impostare le autorizzazioni.
Attiva Secret Manager
Per attivare Secret Manager:
- Vai alla pagina Secret Manager.
- Fai clic su + Crea secret.
- Inserisci il nome del tuo secret. I nomi dei secret possono contenere solo testo in inglese lettere (A-Z), numeri (0-9), trattini (-) e trattini bassi (_).
- La specifica dei seguenti campi è facoltativa:
- Per caricare il file con il tuo secret, fai clic su Sfoglia.
- Leggi il criterio di replica.
- Se vuoi gestire manualmente le località del tuo secret, controlla Gestisci manualmente le località per questo secret. Almeno una regione deve essere selezionato.
- Seleziona l'opzione di crittografia.
- Se vuoi impostare manualmente il periodo di rotazione, seleziona Imposta periodo di rotazione.
- Se vuoi specificare l'argomento Pubblica o iscriviti per ricevere l'evento Notifiche, fai clic su Aggiungi argomenti.
- Per impostazione predefinita, il secret non ha scadenza. Se vuoi impostare una data di scadenza, seleziona Imposta data di scadenza.
- Per impostazione predefinita, le versioni del secret vengono eliminate su richiesta. Per ritardare eliminazione delle versioni del secret, seleziona Imposta durata per il ritardo la distruzione di massa.
- Se vuoi utilizzare le etichette per organizzare e categorizzare i secret, fai clic su + Aggiungi etichetta.
- Se vuoi utilizzare le annotazioni per collegare metadati non identificativi ai tuoi segreti, quindi fai clic su + Aggiungi annotazione.
- Fai clic su Crea secret.
Imposta autorizzazioni
Devi concedere le autorizzazioni di Secret Manager al tuo account di servizio.
Nella sezione IAM e Nella sezione Amministratore della console Google Cloud, trova il tuo servizio. account e fai clic sull'icona a forma di matita per apportare modifiche.
Nel campo Ruolo, seleziona Accesso ai secret di Secret Manager.
Questo esempio di codice mostra come configurare Secret Manager.
# TODO(developer): Update the variables.
# Select a resource name for your Secret, which contains your API Key.
SECRET_NAME="MyWeaviateApiKeySecret"
# Create a secret in SecretManager.
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets?secretId=${SECRET_NAME}" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"replication\": {\"automatic\": {}}}"
# Your Weaviate API Key.
WEAVIATE_API_KEY="example-api-key"
# Encode your WEAVIATE_API_KEY using base 64.
SECRET_DATA=$(echo ${WEAVIATE_API_KEY} | base64)
# Create a new version of your secret which uses SECRET_DATA as payload
curl.
"https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_NAME}:addVersion" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"payload\": {\"data\": \"${SECRET_DATA}\"}}"
Utilizzare Weaviate con Llama 3
Il notebook dell'API RAG di Model Garden mostra come utilizzare l'SDK Vertex AI per Python con un corpus Weaviate e il modello Llama 3. Per utilizzare blocco note, devi effettuare le seguenti operazioni:
Utilizza il notebook dell'API RAG di Model Garden.
Per altri esempi, consulta la sezione Esempi.
Crea un corpus RAG
Questo esempio di codice mostra come creare un corpus RAG e imposta la proprietà Weaviate come suo database vettoriale.
REST
# TODO(developer): Update the variables.
PROJECT_ID = "YOUR_PROJECT_ID"
# The HTTPS/HTTP Weaviate endpoint you created during provisioning.
HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"
# Your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
# For example, "MyCollectionName"
# Note that the first letter needs to be capitalized.
# Otherwise, Weaviate will capitalize it for you.
WEAVIATE_COLLECTION_NAME="MyCollectionName"
# The resource name of your Weaviate API Key your Secret.
SECRET_NAME="MyWeaviateApiKeySecret"
# The Secret Manager resource name containing the API Key for your Weaviate endpoint.
# For example, projects/{project}/secrets/{secret}/versions/latest
APIKEY_SECRET_VERSION="projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/latest"
# Select a Corpus display name.
CORPUS_DISPLAY_NAME="SpecialCorpus"
# Call CreateRagCorpus API and set all Vector DB Config parameters for Weaviate to create a new corpus associated to your selected Weaviate collection.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_vector_db_config" : {
"weaviate": {
"http_endpoint": '\""${HTTP_ENDPOINT_NAME}"\"',
"collection_name": '\""${WEAVIATE_COLLECTION_NAME}"\"'
},
"api_auth" : {
"api_key_config": {
"api_key_secret_version": '\""${APIKEY_SECRET_VERSION}"\"'
}
}
}
}'
# TODO(developer): Update the variables.
# Get operation_id returned in CreateRagCorpus.
OPERATION_ID="your-operation-id"
# Poll Operation status until done = true in the response.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/${OPERATION_ID}
# Call ListRagCorpora API to verify the RAG corpus is created successfully.
curl -sS -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"
Python
import vertexai
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID" # @param {type:"string"}
vertexai.init(project=PROJECT_ID, location="us-central1")
# Configure a Google first-party embedding model
embedding_model_config = rag.EmbeddingModelConfig(
publisher_model="publishers/google/models/text-embedding-004"
)
# Configure a third-party model or a Google fine-tuned first-party model as a Vertex Endpoint resource
# See https://github.com/GoogleCloudPlatform/vertex-ai-samples/blob/main/notebooks/community/model_garden/model_garden_e5.ipynb for
# deploying 3P embedding models to endpoints
ENDPOINT_ID = "your-model-endpoint-id" # @param {type:"string"}
MODEL_ENDPOINT = "projects/{PROJECT_ID}/locations/us-central1/endpoints/{ENDPOINT_ID}"
embedding_model_config = rag.EmbeddingModelConfig(
endpoint=MODEL_ENDPOINT,
)
# Configure a Weaviate Vector Database Instance for the corpus
WEAVIATE_HTTP_ENDPOINT = "weaviate-http-endpoint" # @param {type:"string"}
COLLECTION_NAME = "weaviate-collection-name" # @param {type:"string"}
API_KEY = "your-secret-manager-resource-name" # @param {type:"string"}
vector_db = rag.Weaviate(
weaviate_http_endpoint=WEAVIATE_HTTP_ENDPOINT,
collection_name=COLLECTION_NAME,
api_key=API_KEY,
)
# Name your corpus
DISPLAY_NAME = "your-corpus-name" # @param {type:"string"}
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, embedding_model_config=embedding_model_config, vector_db=vector_db
)
# Check the corpus just created
rag.list_corpora()
Utilizzare il file RAG
L'API RAG gestisce il caricamento, l'importazione, l'elenco e l'eliminazione dei file.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui elaborare la richiesta.
- RAG_CORPUS_ID: l'ID della risorsa
RagCorpus
. - INPUT_FILE: il percorso di un file locale.
- FILE_DISPLAY_NAME: il nome visualizzato di
RagFile
. - RAG_FILE_DESCRIPTION: la descrizione di
RagFile
.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload
Corpo JSON della richiesta:
{ "rag_file": { "display_name": "FILE_DISPLAY_NAME", "description": "RAG_FILE_DESCRIPTION" } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato INPUT_FILE
.
ed esegui questo comando:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @INPUT_FILE \
"https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload"
PowerShell
Salva il corpo della richiesta in un file denominato INPUT_FILE
,
quindi esegui il comando seguente:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile INPUT_FILE `
-Uri "https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload" | Select-Object -Expand Content
RagFile
. L'ultimo componente del campo RagFile.name
è il valore rag_file_id
generato dal server.
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.
Importa file RAG
File e cartelle possono essere importati da Drive o Cloud Storage.
REST
Usa response.metadata
per visualizzare gli errori parziali, il tempo di richiesta e la risposta
nell'oggetto response
dell'SDK.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui elaborare la richiesta.
- RAG_CORPUS_ID: l'ID della risorsa
RagCorpus
. - GCS_URIS: un elenco di località di Cloud Storage. Esempio:
gs://my-bucket1, gs://my-bucket2
. - DRIVE_RESOURCE_ID: l'ID della risorsa Drive. Esempi:
https://drive.google.com/file/d/ABCDE
https://drive.google.com/corp/drive/u/0/folders/ABCDEFG
- DRIVE_RESOURCE_TYPE: tipo di risorsa di Drive. Opzioni:
RESOURCE_TYPE_FILE
- FileRESOURCE_TYPE_FOLDER
- Cartella- CHUNK_SIZE: facoltativo: il numero di token che ogni blocco deve avere.
- CHUNK_OVERLAP: facoltativo. Numero di token sovrapposti tra i chunk.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import
Corpo JSON della richiesta:
{ "import_rag_files_config": { "gcs_source": { "uris": GCS_URIS }, "google_drive_source": { "resource_ids": { "resource_id": DRIVE_RESOURCE_ID, "resource_type": DRIVE_RESOURCE_TYPE }, } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content
ImportRagFilesOperationMetadata
.
L'esempio seguente mostra come importare un file da Cloud Storage. Utilizza il campo di controllo max_embedding_requests_per_min
per limitare la frequenza con cui RAG Engine chiama il modello di embedding durante il processo di indicizzazione ImportRagFiles
. Il campo ha un valore predefinito di 1000
chiamate
al minuto.
// Cloud Storage bucket/file location.
// Such as "gs://rag-e2e-test/"
GCS_URIS=YOUR_GCS_LOCATION
// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT
// ImportRagFiles
// Import a single Cloud Storage file or all files in a Cloud Storage bucket.
// Input: ENDPOINT, 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://${ENDPOINT}/v1beta1/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": 512
},
"max_embedding_requests_per_min": '"${EMBEDDING_MODEL_QPM_RATE}"'
}
}'
// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}
L'esempio riportato di seguito mostra come importare un file da Drive. Utilizza il campo di controllo max_embedding_requests_per_min
per limitare la frequenza con cui RAG Engine chiama il modello di embedding durante il processo di indicizzazione ImportRagFiles
. Il campo ha un valore predefinito di 1000
chiamate
al minuto.
// Google Drive folder location.
FOLDER_RESOURCE_ID=YOUR_GOOGLE_DRIVE_FOLDER_RESOURCE_ID
// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT
// ImportRagFiles
// Import all files in a Google Drive folder.
// Input: ENDPOINT, 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://${ENDPOINT}/v1beta1/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}"'
}
}'
// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'API Python.
Recuperare un file RAG
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui elaborare la richiesta.
- RAG_CORPUS_ID: l'ID della risorsa
RagCorpus
. - RAG_FILE_ID: l'ID della risorsa
RagFile
.
Metodo HTTP e URL:
GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"
PowerShell
Esegui questo comando:
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
RagFile
.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'API Python.
Elenco file RAG
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui elaborare la richiesta.
- RAG_CORPUS_ID: l'ID della risorsa
RagCorpus
. - PAGE_SIZE: le dimensioni standard della pagina dell'elenco. Puoi modificare il numero di
RagFiles
da restituire per pagina aggiornando il parametropage_size
. - PAGE_TOKEN: il token della pagina dell'elenco standard. Ottenuta in genere utilizzando
ListRagFilesResponse.next_page_token
della chiamataVertexRagDataService.ListRagFiles
precedente.
Metodo HTTP e URL:
GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"
PowerShell
Esegui questo comando:
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content
RagFiles
in base al RAG_CORPUS_ID
specificato.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Eliminare un file RAG
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui elaborare la richiesta.
- RAG_CORPUS_ID: l'ID della risorsa
RagCorpus
. - RAG_FILE_ID: l'ID della risorsa
RagFile
. Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file_id}
.
Metodo HTTP e URL:
DELETE https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X DELETE \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"
PowerShell
Esegui questo comando:
$headers = @{ }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
DeleteOperationMetadata
.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Recuperare il contesto
Quando un utente pone una domanda o fornisce un prompt, il componente di recupero in RAG esegue ricerche nella sua knowledge base per trovare informazioni pertinenti query.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- LOCATION: la regione in cui elaborare la richiesta.
- PROJECT_ID: il tuo ID progetto.
- RAG_CORPUS_RESOURCE: il nome della risorsa
RagCorpus
. Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - VECTOR_DISTANCE_THRESHOLD: vengono restituiti solo i contesti con una distanza vettoriale inferiore alla soglia.
- TEXT: il testo della query per ottenere contesti pertinenti.
- SIMILARITY_TOP_K: il numero di contesti principali da recuperare.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts
Corpo JSON della richiesta:
{ "vertex_rag_store": { "rag_resources": { "rag_corpus": "RAG_CORPUS_RESOURCE", }, "vector_distance_threshold": 0.8 }, "query": { "text": "TEXT", "similarity_top_k": SIMILARITY_TOP_K } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" | Select-Object -Expand Content
RagFiles
correlati.
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.
Genera contenuti
Una previsione controlla il metodo LLM che genera i contenuti.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui elaborare la richiesta.
- MODEL_ID: modello LLM per la generazione di contenuti. Esempio:
gemini-1.5-pro-002
- GENERATION_METHOD: metodo LLM per la generazione di contenuti. Opzioni:
generateContent
,streamGenerateContent
- INPUT_PROMPT: il testo inviato all'LLM per la generazione di contenuti. Prova a utilizzare un prompt pertinente ai file rag caricati.
- RAG_CORPUS_RESOURCE: il nome della risorsa
RagCorpus
. Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: (facoltativo) il numero di contesti principali da recuperare.
- VECTOR_DISTANCE_THRESHOLD: (facoltativo) vengono restituiti i contesti con una distanza vettoriale inferiore alla soglia.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD
Corpo JSON della richiesta:
{ "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 } } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" | Select-Object -Expand Content
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'API Python.
Ricerca ibrida
La ricerca ibrida è supportata con il database Weaviate, che combina sia i dati semantici e ricerche di parole chiave per migliorare la pertinenza dei risultati di ricerca. Durante il recupero dei risultati di ricerca, una combinazione di punteggi di somiglianza da dati semantici (un vettore denso) e dalla corrispondenza delle parole chiave (un vettore sparso) produce i risultati finali classificati.
Ricerca ibrida con l'API RAG Engine retrieval
Ecco un esempio di come abilitare una ricerca ibrida utilizzando il motore RAG API Retrieval.
REST
Nell'esempio di codice vengono utilizzate le seguenti variabili:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- RAG_CORPUS_RESOURCE: il nome completo della risorsa per la tua RAG
nel formato
projects/*/locations/us-central1/ragCorpora/*
. - DISTANCE_THRESHOLD: una soglia impostata per la distanza di ricerca vettoriale nell'intervallo
[0, 1.0]
. Il valore predefinito è impostato su0.3
. - ALPHA: il valore alpha controlla la ponderazione tra i risultati di ricerca semantica e quelli basati sulle parole chiave. L'intervallo è
[0, 1]
, dove0
è una ricerca di vettori sparsi e1
è una ricerca di vettori densi. Il valore predefinito è0.5
, che bilancia le ricerche vettoriali sparse e dense. - RETRIEVAL_QUERY: la tua query di recupero.
- TOP_K: il numero di risultati principali
k
da recuperare.
Questo esempio mostra come chiamare il metodo HTTP in un URL.
POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1:retrieveContexts
Questo esempio di codice mostra come utilizzare il corpo JSON della richiesta.
{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
"vector_distance_threshold": ${DISTANCE_THRESHOLD}
},
"query": {
"text": '\""${RETRIEVAL_QUERY}"\"',
"similarity_top_k": ${TOP_K},
"ranking": { "alpha" : ${ALPHA}}
}
}
Python
from vertexai.preview import rag
import vertexai
# TODO(developer): Update the variables.
# PROJECT_ID = "your-project-id"
# rag_corpus_id = "your-rag-corpus-id"
# Only one corpus is supported at this time
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")
response = rag.retrieval_query(
rag_resources=[
rag.RagResource(
rag_corpus=rag_corpus_id,
# 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
ranking=rag.RagQuery.Ranking(
alpha=0.5
), # Optional
)
print(response)
Usa la ricerca ibrida e RAG Engine per la generazione con grounding
Questo è un esempio di come utilizzare la ricerca ibrida e il motore RAG per la generazione di risultati con grounding.
REST
Nell'esempio di codice vengono utilizzate le seguenti variabili:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- RAG_CORPUS_RESOURCE: il nome completo della risorsa del corpus RAG nel formato di
projects/*/locations/us-central1/ragCorpora/*
. - DISTANCE_THRESHOLD: una soglia impostata per una ricerca vettoriale
distanza nell'intervallo di
[0, 1.0]
. Il valore predefinito è impostato su0.3
. - ALPHA: il valore alpha controlla la ponderazione tra i contenuti semantici
e i risultati di ricerca di parole chiave. L'intervallo è
[0, 1]
, dove0
è uno sparso ricerca vettoriale, mentre1
è una ricerca vettoriale densa. Il valore predefinito è0.5
, che bilancia le ricerche di vettori sparsi e densi. - INPUT_PROMPT: il tuo prompt di input.
- TOP_K: il numero di primi
k
risultati da recuperare.
Questo esempio mostra come chiamare il metodo HTTP in un URL.
POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/gemini-pro:generateContent
Questo esempio di codice mostra come utilizzare il corpo JSON della richiesta.
{
"contents": {
"role": "user",
"parts": {
"text": '\""${INPUT_PROMPT}"\"'
}
},
"tools": {
"retrieval": {
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
"similarity_top_k": ${TOP_K},
"vector_distance_threshold": ${DISTANCE_THRESHOLD},
"ranking": { "alpha" : ${ALPHA}}
}
}
}
}
Python
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai
# TODO(developer): Update the variables.
# PROJECT_ID = "your-project-id"
# rag_corpus_id = "your-rag-corpus-id" # Only one corpus is supported at this time
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")
rag_retrieval_tool = Tool.from_retrieval(
retrieval=rag.Retrieval(
source=rag.VertexRagStore(
rag_resources=[
rag.RagResource(
rag_corpus=rag_corpus_id, # 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
ranking=rag.RagQuery.Ranking(
alpha=0.5
), # Optional
),
)
)
rag_model = GenerativeModel(
model_name="gemini-1.5-flash-001", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
Passaggi successivi
- Per scoprire di più sul grounding, consulta la Panoramica del grounding.
- Per scoprire di più su RAG Engine, consulta Utilizza RAG Engine.
- Per scoprire di più su grounding e RAG, consulta Risposte al suolo utilizzando RAG.