Questa pagina spiega il ricoordinamento e mostra come utilizzare l'API per ricoordinare le risposte recuperate.
Il ricoindicizzazione post-retrieval è una tecnica che migliora la pertinenza dei risultati di recupero. Il motore RAG di Vertex AI offre ricorsioni facoltative che migliorano la pertinenza dei risultati recuperati durante le query. I reranker valutano la pertinenza dei chunk di una query e riordinano i risultati di conseguenza. Il nuovo ordine porta a risposte più adatte alla query o può essere incluso nei prompt per l'inferenza del modello per generare risposte più pertinenti e accurate.
Reranker disponibili
Questa sezione illustra i tipi di ricollocatori.
LLM reranker
Il riassegnatore LLM è il riassegnatore che utilizza un LLM per valutare la pertinenza dei blocchi per una query e riordinare i risultati di conseguenza, generando risposte più adatte o prompt migliorati per l'inferenza del modello.
Vertex AI rank service reranker
Il riordinamento del servizio di ranking si basa sull'API rank che prende un elenco di documenti e li riordina in base alla pertinenza per una query. Rispetto agli embedding, che esaminano solo la somiglianza semantica di un documento e di una query, questo può fornire punteggi precisi sulla qualità della risposta di un documento a una determinata query.
Come utilizzare i ricorsioni
Questa sezione presenta i prerequisiti e gli esempi di codice per l'utilizzo dei ricorsioni.
Prerequisiti per l'utilizzo del ricorreggiatore LLM
Il riordinamento LLM supporta solo i modelli Gemini, che sono accessibili quando è attivata l'API RAG. Per visualizzare l'elenco dei modelli supportati, consulta Modelli Gemini.
Recuperare i contesti pertinenti utilizzando l'API RAG
Questo esempio di codice mostra come recuperare i contesti pertinenti utilizzando l'API RAG.
REST
Sostituisci le seguenti variabili utilizzate nell'esempio di codice:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- LOCATION: la regione in cui elaborare la richiesta.
- RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG. Formato:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: il testo della query per ottenere contesti pertinenti.
- MODEL_NAME: il nome del modello utilizzato per il ricoinvolgimento.
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
-d '{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": """RAG_CORPUS_RESOURCE"
}
},
"query": {
"text": "TEXT",
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"llm_ranker": {
"model_name": "MODEL_NAME"
}
}
}
}
}'
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 la documentazione di riferimento dell'API Python.
Sostituisci le seguenti variabili utilizzate nell'esempio di codice:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- LOCATION: la regione in cui elaborare la richiesta.
- RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG. Formato:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: il testo della query per ottenere contesti pertinenti.
- MODEL_NAME: il nome del modello utilizzato per il ricoinvolgimento.
from vertexai.preview import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/[RAG_CORPUS_ID]"
MODEL_NAME= "MODEL_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
rag_retrieval_config = rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
llm_ranker=rag.LlmRanker(
model_name=MODEL_NAME
)
)
)
response = rag.retrieval_query(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
text="TEXT",
rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
# contexts {
# source_uri: "gs://your-bucket-name/file.txt"
# text: "....
# ....
Generare contenuti utilizzando l'API RAG
REST
Per generare contenuti utilizzando i modelli Gemini, effettua una chiamata all'API GenerateContent
Vertex AI. Se specifichi RAG_CORPUS_RESOURCE
nella richiesta, il modello recupera automaticamente i dati da Vertex AI Search.
Sostituisci le seguenti variabili utilizzate nel codice campione:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- LOCATION: la regione in cui elaborare la richiesta.
- MODEL_ID: modello LLM per la generazione di contenuti. Ad
esempio,
gemini-1.5-flash-002
. - GENERATION_METHOD: metodo LLM per la generazione di contenuti.
Le opzioni sono
generateContent
estreamGenerateContent
. - INPUT_PROMPT: il testo inviato all'LLM per la generazione di contenuti. Utilizza un prompt pertinente ai documenti in Vertex AI Search.
- RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: facoltativo. Il numero di contesti principali da recuperare.
- MODEL_NAME: il nome del modello utilizzato per il ricoinvolgimento.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
-d '{
"contents": {
"role": "user",
"parts": {
"text": "INPUT_PROMPT"
}
},
"tools": {
"retrieval": {
"disable_attribution": false,
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": "RAG_CORPUS_RESOURCE"
},
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"llm_ranker": {
"model_name": "MODEL_NAME"
}
}
}
}
}
}
}'
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 la documentazione di riferimento dell'API Python.
Sostituisci le seguenti variabili utilizzate nel codice campione:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- LOCATION: la regione in cui elaborare la richiesta.
- MODEL_ID: modello LLM per la generazione di contenuti. Ad
esempio,
gemini-1.5-flash-002
. - GENERATION_METHOD: metodo LLM per la generazione di contenuti.
Le opzioni sono
generateContent
estreamGenerateContent
. - INPUT_PROMPT: il testo inviato all'LLM per la generazione di contenuti. Utilizza un prompt pertinente ai documenti in Vertex AI Search.
- RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: facoltativo. Il numero di contesti principali da recuperare.
- MODEL_NAME: il nome del modello utilizzato per il ricoinvolgimento.
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
config = vertexai.preview.rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
llm_ranker=rag.LlmRanker(
model_name=MODEL_NAME
)
)
)
rag_retrieval_tool = Tool.from_retrieval(
retrieval=rag.Retrieval(
source=rag.VertexRagStore(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
rag_retrieval_config=config
),
)
)
rag_model = GenerativeModel(
model_name=MODEL_NAME, 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....
# ...
Prerequisiti del ricoordinamento del servizio di ranking Vertex
Per utilizzare il riordinamento del servizio di ranking di Vertex AI, è necessario attivare l'API Discovery Engine.
Recuperare i contesti pertinenti utilizzando l'API RAG
Dopo aver creato il corpus RAG, i contesti pertinenti possono essere recuperati da Vertex AI Search tramite l'API RetrieveContexts
.
Questi esempi di codice mostrano come utilizzare l'API per recuperare i contesti da Vertex AI Search.
REST
Sostituisci le seguenti variabili utilizzate nel codice campione:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- LOCATION: la regione in cui elaborare la richiesta.
- RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG.
Formato:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: il testo della query per ottenere contesti pertinenti.
- MODEL_NAME: il nome del modello utilizzato per il ricoinvolgimento.
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
-d '{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": "RAG_CORPUS_RESOURCE"
}
},
"query": {
"text": "TEXT",
"rag_retrieval_config": {
"top_k": 5,
"ranking": {
"rank_service": {
"model_name": "MODEL_NAME"
}
}
}
}
}'
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 la documentazione di riferimento dell'API Python.
Sostituisci le seguenti variabili utilizzate nel codice campione:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- LOCATION: la regione in cui elaborare la richiesta.
- RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - TEXT: il testo della query per ottenere contesti pertinenti.
- MODEL_NAME: il nome del modello utilizzato per il ricoinvolgimento.
from vertexai.preview import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
rag_retrieval_config = rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
rank_service=rag.RankService(
model_name=MODEL_NAME
)
)
)
response = rag.retrieval_query(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
text="TEXT",
rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
# contexts {
# source_uri: "gs://your-bucket-name/file.txt"
# text: "....
# ....
Generare contenuti utilizzando l'API RAG
REST
Per generare contenuti utilizzando i modelli Gemini, effettua una chiamata all'API GenerateContent
Vertex AI. Se specifichi RAG_CORPUS_RESOURCE
nella richiesta, il modello recupera automaticamente i dati da Vertex AI Search.
Sostituisci le seguenti variabili utilizzate nel codice campione:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- LOCATION: la regione in cui elaborare la richiesta.
- MODEL_ID: modello LLM per la generazione di contenuti. Ad
esempio,
gemini-1.5-flash-002
. - GENERATION_METHOD: metodo LLM per la generazione di contenuti.
Le opzioni includono
generateContent
estreamGenerateContent
. - INPUT_PROMPT: il testo inviato all'LLM per la generazione di contenuti. Utilizza un prompt pertinente ai documenti in Vertex AI Search.
- RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: facoltativo. Il numero di contesti principali da recuperare.
- MODEL_NAME: il nome del modello utilizzato per il ricoinvolgimento.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
-d '{
"contents": {
"role": "user",
"parts": {
"text": "INPUT_PROMPT"
}
},
"tools": {
"retrieval": {
"disable_attribution": false,
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": "RAG_CORPUS_RESOURCE"
},
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"rank_service": {
"model_name": "MODEL_NAME"
}
}
}
}
}
}
}'
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 la documentazione di riferimento dell'API Python.
Sostituisci le seguenti variabili utilizzate nel codice campione:
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
- LOCATION: la regione in cui elaborare la richiesta.
- MODEL_ID: modello LLM per la generazione di contenuti. Ad
esempio,
gemini-1.5-flash-002
. - GENERATION_METHOD: metodo LLM per la generazione di contenuti.
Le opzioni includono
generateContent
estreamGenerateContent
. - INPUT_PROMPT: il testo inviato all'LLM per la generazione di contenuti. Utilizza un prompt pertinente ai documenti in Vertex AI Search.
- RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG.
Formato:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
. - SIMILARITY_TOP_K: facoltativo. Il numero di contesti principali da recuperare.
- MODEL_NAME: il nome del modello utilizzato per il ricoinvolgimento.
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
config = vertexai.preview.rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
rank_service=rag.RankService(
model_name=MODEL_NAME
)
)
)
rag_retrieval_tool = Tool.from_retrieval(
retrieval=rag.Retrieval(
source=rag.VertexRagStore(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
rag_retrieval_config=config
),
)
)
rag_model = GenerativeModel(
model_name="MODEL_NAME", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("INPUT_PROMPT")
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....
# ...
Passaggi successivi
- Per scoprire di più sui modelli di ranking, consulta Modelli di servizio di ranking.
- Per informazioni sui prezzi, consulta la pagina Prezzi di Vertex AI.
- Per informazioni sulle limitazioni, consulta Richiedi quote.
- Per scoprire di più sulla scelta dei modelli di incorporamento, consulta Utilizzare i modelli di incorporamento con RAG Engine.
- Per saperne di più su RAG Engine, consulta Panoramica di RAG Engine.