Reranking for RAG Engine on Gemini Enterprise Agent Platform

הדף הזה מסביר על דירוג מחדש ועל סוגי המדרגים. בדף מוסבר גם איך להשתמש ב-ranking API של פלטפורמת הסוכנים של Gemini Enterprise כדי לדרג מחדש את התשובות שאוחזרו.

רכיבי דירוג מחדש זמינים

אפשרויות דירוג תיאור זמן אחזור דיוק Pricing
‫API לדירוג ב-Agent Platform

‫Agent Platform ranking API הוא כלי עצמאי לדירוג מחדש של סמנטיקה, שמיועד לניקוד רלוונטיות מדויק מאוד ולזמן אחזור קצר.

מידע נוסף על Agent Platform ranking API זמין במאמר בנושא שיפור החיפוש ואיכות ה-RAG באמצעות ranking API.

נמוכה מאוד (פחות מ-100 אלפיות שנייה) ביצועים המתקדמים ביותר (SOTA) לכל בקשה של מנוע RAG
מדרג מחדש של LLM המודל LLM reranker משתמש בקריאה נפרדת ל-Gemini כדי להעריך את הרלוונטיות של מקטעים לשאילתה. גבוהה (שנייה אחת עד 2 שניות) תלוי במודל תמחור טוקנים של LLM

שימוש ב-Agent Platform ranking API

כדי להשתמש ב-Agent Platform ranking API, צריך להפעיל את Discovery Engine API. כל המודלים הנתמכים מפורטים במאמר שיפור איכות החיפוש ו-RAG באמצעות Ranking API.

דוגמאות הקוד האלה ממחישות איך להפעיל דירוג מחדש באמצעות Agent Platform ranking API בהגדרת הכלי.

Python

במאמר איך מתקינים את Agent Platform SDK לפייתון מוסבר איך מתקינים או מעדכנים את Agent Platform SDK לפייתון. מידע נוסף מופיע במאמרי העזרה של API בשפת Python.

מחליפים את המשתנים הבאים שמופיעים בקוד לדוגמה:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
  • ‫LOCATION: האזור שבו הבקשה תעובד.
  • ‫MODEL_NAME: מודל LLM ליצירת תוכן. לדוגמה, gemini-3.8-flash.
  • ‫INPUT_PROMPT: הטקסט שנשלח למודל שפה גדול (LLM) ליצירת תוכן.
  • ‫RAG_CORPUS_RESOURCE: השם של משאב קורפוס ה-RAG.
    פורמט: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • ‫SIMILARITY_TOP_K: אופציונלי: מספר ההקשרים המובילים שצריך לאחזר.
  • ‫RANKER_MODEL_NAME: השם של המודל שמשמש לדירוג מחדש. לדוגמה, semantic-ranker-default@latest.
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 Agent Platform 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=RANKER_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....
#   ...

REST

כדי ליצור תוכן באמצעות מודלים של Gemini, צריך לשלוח קריאה ל-API של Agent Platform GenerateContent. כשמציינים את RAG_CORPUS_RESOURCE כששולחים את הבקשה, המודל מאחזר נתונים מ-RAG Engine באופן אוטומטי.

מחליפים את המשתנים הבאים שמופיעים בקוד לדוגמה:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
  • ‫LOCATION: האזור שבו הבקשה תעובד.
  • ‫MODEL_NAME: מודל LLM ליצירת תוכן. לדוגמה, gemini-3.8-flash.
  • ‫GENERATION_METHOD: שיטה של LLM ליצירת תוכן. האפשרויות כוללות את generateContent ו-streamGenerateContent.
  • ‫INPUT_PROMPT: הטקסט שנשלח למודל שפה גדול (LLM) ליצירת תוכן.
  • ‫RAG_CORPUS_RESOURCE: השם של משאב קורפוס ה-RAG.
    פורמט: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • ‫SIMILARITY_TOP_K: אופציונלי: מספר ההקשרים המובילים שצריך לאחזר.
  • ‫RANKER_MODEL_NAME: השם של המודל שמשמש לדירוג מחדש. לדוגמה, semantic-ranker-default@latest.
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_NAME: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": SIMILARITY_TOP_K,
          "ranking": {
            "rank_service": {
              "model_name": "RANKER_MODEL_NAME"
            }
          }
        }
      }
    }
  }
}'

איך משתמשים במדרג מחדש של LLM ב-RAG Engine

בקטע הזה מפורטות הדרישות המוקדמות ודוגמאות קוד לשימוש ב-LLM reranker.

המודל LLM reranker תומך רק במודלים של Gemini, שאפשר לגשת אליהם כשמפעילים את RAG Engine ב-Gemini Enterprise Agent Platform API. כאן אפשר לראות את רשימת המודלים הנתמכים של Gemini.

כדי לאחזר הקשרים רלוונטיים באמצעות RAG Engine API:

Python

במאמר התקנת Agent Platform SDK לפייתון מוסבר איך להתקין או לעדכן את Agent Platform SDK לפייתון. מידע נוסף מופיע במאמרי העזרה של API בשפת Python.

מחליפים את המשתנים הבאים שמופיעים בדוגמת הקוד:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
  • ‫LOCATION: האזור שבו הבקשה תעובד.
  • ‫RAG_CORPUS_RESOURCE: השם של משאב מאגר המידע של RAG. פורמט: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • ‫TEXT: טקסט השאילתה לקבלת הקשרים רלוונטיים.
  • ‫MODEL_NAME: שם המודל שמשמש לדירוג מחדש.
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 Agent Platform 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: "....
#   ....

REST

מחליפים את המשתנים הבאים שמופיעים בדוגמת הקוד:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
  • ‫LOCATION: האזור שבו הבקשה תעובד.
  • ‫RAG_CORPUS_RESOURCE: השם של משאב מאגר המידע של RAG. פורמט: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • ‫TEXT: טקסט השאילתה לקבלת הקשרים רלוונטיים.
  • ‫MODEL_NAME: שם המודל שמשמש לדירוג מחדש.
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"
          }
        }
      }
    }
  }'

המאמרים הבאים