Vertex AI RAG Engine의 재랭킹

이 페이지에서는 재랭킹 및 랭커 유형을 설명합니다. 또한 이 페이지에서는 Vertex AI Ranking API를 사용하여 검색된 응답의 순위를 다시 지정하는 방법을 보여줍니다.

사용 가능한 재랭킹 도구

랭커 옵션 설명 지연 시간 정확성 가격 책정
Vertex AI Ranking API Vertex AI ranking API는 매우 정확한 관련성 점수와 짧은 지연 시간을 위해 설계된 독립형 시맨틱 재랭커입니다.

Vertex AI Ranking API에 관한 자세한 내용은 Ranking API로 검색 및 RAG 품질 개선을 참고하세요.
매우 낮음 (100밀리초 미만) 최고의 성능 Vertex AI RAG Engine 요청당
LLM 순위 조정 도구 LLM 재랭커는 Gemini를 별도로 호출하여 청크와 쿼리의 관련성을 평가합니다. 높음 (1~2초) 모델 종속 LLM 토큰 가격 책정

Vertex AI Ranking API 사용

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

다음 코드 샘플은 도구 구성에서 Vertex AI 순위 API를 사용하여 재랭킹을 사용 설정하는 방법을 보여줍니다.

Python

Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 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 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=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 모델을 사용하여 콘텐츠를 생성하려면 Vertex AI GenerateContent API를 호출합니다. 요청할 때 RAG_CORPUS_RESOURCE를 지정하면 모델이 Vertex AI RAG 엔진에서 자동으로 데이터를 가져옵니다.

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

  • 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"
            }
          }
        }
      }
    }
  }
}'

Vertex AI RAG Engine에서 LLM 재랭커 사용

이 섹션에서는 LLM 재랭커 사용을 위한 기본 요건과 코드 샘플을 설명합니다.

LLM 재랭커는 Vertex AI RAG Engine API가 사용 설정되어 있을 때 액세스할 수 있는 Gemini 모델만 지원합니다. 지원되는 모델 목록을 보려면 Gemini 모델을 참고하세요.

Vertex AI RAG Engine API를 사용하여 관련 컨텍스트를 검색하려면 다음 단계를 따르세요.

Python

Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 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 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: "....
#   ....

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"
          }
        }
      }
    }
  }'

다음 단계