Gemini Enterprise Agent Platform의 RAG 엔진 재순위 지정

이 페이지에서는 순위 조정 및 랭커 유형을 설명합니다. 또한 Gemini Enterprise Agent Platform Ranking API를 사용하여 검색된 응답의 순위를 조정하는 방법도 보여줍니다.

사용 가능한 순위 조정

순위 조정 옵션 설명 지연 시간 정확성 가격 책정
Agent Platform Ranking API

Agent Platform Ranking API는 매우 정확한 관련성 점수와 짧은 지연 시간을 위해 설계된 독립형 시맨틱 순위 조정입니다.

Agent Platform Ranking API에 대한 자세한 내용은 Ranking API로 검색 및 RAG 품질 개선을 참조하세요.

매우 낮음 (100밀리초 미만) 최고의 성능 RAG Engine 요청당
LLM 순위 조정 도구 LLM 순위 조정은 Gemini를 별도로 호출하여 청크와 쿼리의 관련성 을 평가합니다. 높음 (1~2초) 모델 종속 LLM 토큰 가격 책정

Agent Platform Ranking API 사용

Agent Platform Ranking API를 사용하려면 Discovery Engine API를 사용 설정해야 합니다. Ranking API로 검색 및 RAG 품질 개선에서 지원되는 모든 모델을 확인할 수 있습니다.

다음 코드 샘플에서는 도구 구성에서 Agent Platform Ranking API를 사용하여 순위 조정을 사용 설정하는 방법을 보여줍니다.

Python

Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 참조하세요.

샘플 코드에 사용된 다음 변수를 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID.
  • LOCATION: 요청을 처리하는 리전.
  • MODEL_NAME: 콘텐츠 생성을 위한 LLM 모델. 예를 들면 gemini-2.0-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 모델을 사용하여 콘텐츠를 생성하려면 Agent Platform GenerateContent API를 호출합니다. 요청 시 RAG_CORPUS_RESOURCE를 지정하면 모델이 RAG Engine에서 데이터를 자동으로 가져옵니다.

샘플 코드에 사용된 다음 변수를 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID.
  • LOCATION: 요청을 처리하는 리전.
  • MODEL_NAME: 콘텐츠 생성을 위한 LLM 모델. 예를 들면 gemini-2.0-flash입니다.
  • GENERATION_METHOD: 콘텐츠 생성을 위한 LLM 메서드. 옵션은 generateContentstreamGenerateContent입니다.
  • 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"
            }
          }
        }
      }
    }
  }
}'

RAG Engine에서 LLM 순위 조정 사용

이 섹션에서는 LLM 순위 조정에 사용되는 기본 요건과 코드 샘플을 설명합니다.

LLM 순위 조정은 Gemini Enterprise Agent Platform API의 RAG Engine이 사용 설정되어 있을 때 액세스할 수 있는 Gemini 모델만 지원합니다. 지원되는 모델 목록을 보려면 Gemini 모델을 참조하세요.

RAG Engine API를 사용하여 관련 컨텍스트를 검색하려면 다음을 수행합니다.

Python

Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 참조하세요.

코드 샘플에 사용된 다음 변수를 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID.
  • 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: Google Cloud 프로젝트의 ID.
  • 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"
          }
        }
      }
    }
  }'

다음 단계