Questa pagina spiega il ricoordinamento e mostra come utilizzare l'API per ricoordinare le risposte recuperate.
Il ricoordinamento 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 reranker LLM è il reranker 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ò darti punteggi precisi sulla qualità della risposta di un documento a una determinata query.
Considerazioni per la scelta di un riassegnatore
Quando scegli un riassegnatore, tieni presente quanto segue:
- I reranker del servizio LLM e Rank utilizzano il riordinamento per migliorare la pertinenza dei contesti recuperati, il che consente al modello di fornire risposte migliori.
- I reranker introducono una latenza che aumenta con il numero di contesti elaborati.
- Il costo di un riassegnatore LLM dipende dal numero di token elaborati, ma il costo per l'utilizzo del riassegnatore del servizio Rank è fisso per 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 ricordino LLM
Il ricoordinamento 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/v1/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 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.
Sostituisci le seguenti variabili utilizzate nel codice di esempio:
- 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.
- 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/v1/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 di esempio:
- 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.
- 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 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_RESOURCE"
MODEL_NAME= "MODEL_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
config = 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. Tutti i modelli supportati sono disponibili nel documento
Recuperare i contesti pertinenti utilizzando l'API RAG
Dopo aver creato il corpus RAG, i contesti pertinenti possono essere recuperati dal motore RAG di Vertex AI tramite l'API RetrieveContexts
.
Questi esempi di codice mostrano come utilizzare l'API per recuperare i contesti dal motore RAG di Vertex AI.
REST
Sostituisci le seguenti variabili utilizzate nel codice di esempio:
- 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/v1/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 di esempio:
- 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 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 dal motore RAG di Vertex AI.
Sostituisci le seguenti variabili utilizzate nel codice di esempio:
- 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.
- 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/v1/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 di esempio:
- 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.
- 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 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_RESOURCE"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
config = 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ù sulle risposte del RAG, consulta Output di recupero e generazione del motore RAG di Vertex AI.
- Gestire la knowledge base (corpus) della RAG