이 페이지에서는 모델을 사용하여 예측을 호출하거나 임베딩을 생성한 다음 모델 엔드포인트를 모델 엔드포인트 관리에 등록하는 방법을 설명합니다.
mysql.ml_create_model_registration()
함수에 대한 자세한 내용은 모델 엔드포인트 관리 참조를 참고하세요.
시작하기 전에
- 모델 공급자별로 인증을 설정하세요.
mysql
클라이언트 또는 Cloud SQL Studio를 사용하여 기본 인스턴스에 연결합니다.필수 데이터베이스 사용자 권한에 설명된 데이터베이스 권한이 있는 MySQL 데이터베이스 사용자로 데이터베이스에 연결해야 합니다.
인증 설정
다음 섹션에서는 Vertex AI 모델 엔드포인트 또는 Google Cloud내에서 호스팅되는 모델 엔드포인트를 추가하기 전에 인증을 설정하는 방법을 보여줍니다.
Vertex AI 인증 설정
Google Vertex AI 모델 엔드포인트를 사용하려면 데이터베이스에 연결하는 데 사용하는 IAM 기반 Cloud SQL 서비스 계정에 Vertex AI 권한을 추가해야 합니다. Vertex AI와의 통합에 대한 자세한 내용은 Vertex AI와 Cloud SQL 통합을 참고하세요.
커스텀 호스팅 모델의 인증 설정
이 섹션에서는 Secret Manager를 사용하는 경우 인증을 설정하는 방법을 설명합니다. Vertex AI 모델 엔드포인트를 제외한 모든 모델의 경우 API 키 또는 Bearer 토큰을 Secret Manager에 저장할 수 있습니다.
모델 엔드포인트가 Secret Manager를 통한 인증을 처리하지 않는 경우 이 섹션은 선택사항입니다. 예를 들어 모델 엔드포인트가 HTTP 헤더를 사용하여 인증 정보를 전달하거나 인증을 전혀 사용하지 않는 경우 이 섹션의 단계를 완료하지 마세요.
API 키 또는 Bearer 토큰을 만들고 사용하려면 다음 단계를 완료하세요.
Secret Manager에서 보안 비밀을 만듭니다. 자세한 내용은 보안 비밀 만들기 및 보안 비밀 버전에 액세스하기를 참고하세요.
보안 비밀 이름과 보안 비밀 경로는
mysql.ml_create_sm_secret_registration()
SQL 함수에서 사용됩니다.Cloud SQL 인스턴스에 보안 비밀에 액세스할 수 있는 권한을 부여합니다.
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/secretmanager.secretAccessor"
다음을 바꿉니다.
SECRET_ID
: Secret Manager의 보안 비밀 IDSERVICE_ACCOUNT_EMAIL
: IAM 기반 Cloud SQL 서비스 계정의 이메일 주소입니다. 이 이메일 주소를 찾으려면gcloud sql instances describe INSTANCE_NAME
명령어를 사용하고 INSTANCE_NAME을 인스턴스의 이름으로 바꿉니다.serviceAccountEmailAddress
매개변수 옆에 표시되는 값은 이메일 주소입니다.
기본 지원이 있는 텍스트 임베딩 모델
이 섹션에서는 모델 엔드포인트 관리를 위해 모델 엔드포인트를 등록하는 방법을 보여줍니다.
Vertex AI 임베딩 모델
모델 엔드포인트 관리는 Vertex AI의 text-embedding-gecko
, text-embedding
, gemini-embedding
모델의 모든 버전을 기본적으로 지원합니다. 정규화된 이름을 사용하여 모델 버전을 textembedding-gecko@001
또는 textembedding-gecko@002
로 설정합니다.
Vertex AI 임베딩 모델 엔드포인트 ID는 모델 엔드포인트 관리에서 기본적으로 지원되므로 모델 ID로 직접 사용할 수 있습니다. 이러한 모델의 경우 임베딩 함수가 입력 및 출력 변환을 자동으로 실행합니다.
쿼리하는 Cloud SQL 인스턴스와 Vertex AI 모델이 모두 동일한 리전에 있는지 확인하세요.
gemini-embedding-001
모델 엔드포인트를 등록하려면 ml_create_model_registration
함수를 호출하세요.
CALL
mysql.ml_create_model_registration(
'gemini-embedding-001',
'publishers/google/models/gemini-embedding-001',
'google','text_embedding', 'gemini-embedding-001',
'AUTH_TYPE_CLOUDSQL_SERVICE_AGENT_IAM',
NULL,
'mysql.cloudsql_ml_text_embedding_input_transform',
'mysql.cloudsql_ml_text_embedding_output_transform', NULL);
맞춤 호스팅 텍스트 임베딩 모델
이 섹션에서는 Google Cloud내 네트워크에서 호스팅되는 맞춤 모델 엔드포인트를 등록하는 방법을 보여줍니다.
맞춤 호스팅 텍스트 임베딩 모델 엔드포인트를 추가하려면 변환 함수와 선택적으로 맞춤 HTTP 헤더를 만들어야 합니다. 반면, 커스텀 호스팅 일반 모델 엔드포인트를 추가하는 경우 선택적으로 커스텀 HTTP 헤더를 생성하고 모델 요청 URL을 설정해야 합니다.
다음 예에서는 Google Cloud내에 호스팅되는 Cymbal에서 호스팅하는 custom-embedding-model
텍스트 임베딩 모델 엔드포인트를 추가합니다. cymbal_text_input_transform
및 cymbal_text_output_transform
변환 함수는 모델의 입력 및 출력 형식을 예측 함수의 입력 및 출력 형식으로 변환하는 데 사용됩니다.
맞춤 호스팅 텍스트 임베딩 모델 엔드포인트를 등록하려면 다음 단계를 완료하세요.
Secret Manager에 저장된 보안 비밀을 호출합니다.
CALL mysql.ml_create_sm_secret_registration( 'SECRET_ID', 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
다음을 바꿉니다.
SECRET_ID
: 설정하고 나중에 모델 엔드포인트를 등록할 때 사용하는 보안 비밀 ID(예:key1
)SECRET_MANAGER_SECRET_ID
: 보안 비밀을 만들 때 Secret Manager에 설정된 보안 비밀 IDPROJECT_ID
: Google Cloud 프로젝트의 IDVERSION_NUMBER
: 보안 비밀 ID의 버전 번호
텍스트 임베딩 모델 엔드포인트의 예측 함수에 대한 다음 서명을 기반으로 입력 및 출력 변환 함수를 만듭니다. 변환 함수를 만드는 방법에 관한 자세한 내용은 변환 함수 예시를 참조하세요.
다음은
custom-embedding-model
텍스트 임베딩 모델 엔드포인트에 특화된 변환 함수의 예입니다.-- Input Transform Function corresponding to the custom model endpoint DELIMITER $$ CREATE FUNCTION IF NOT EXISTS cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC BEGIN RETURN JSON_OBJECT('prompt', JSON_ARRAY(input_text)); END $$ -- Output Transform Function corresponding to the custom model endpoint CREATE FUNCTION IF NOT EXISTS cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON) RETURNS BLOB DETERMINISTIC BEGIN RETURN STRING_TO_VECTOR( JSON_EXTRACT( content, '$.predictions[0].embeddings.values' ) ); END $$ DELIMITER ;
create model 함수를 호출하여 맞춤 임베딩 모델 엔드포인트를 등록하세요.
CALL
mysql.ml_create_model_registration(
'MODEL_ID',
'REQUEST_URL',
'custom',
'text_embedding',
'MODEL_QUALIFIED_NAME',
'auth_type_secret_manager',
'SECRET_ID'
'database_name.cymbal_text_input_transform',
'database_name.cymbal_text_output_transform', NULL);
다음을 바꿉니다.
MODEL_ID
: (필수 항목) 정의한 모델 엔드포인트의 고유 ID(예:custom-embedding-model
). 이 모델 ID는 모델 엔드포인트가 임베딩을 생성하거나 예측을 호출하는 데 필요한 메타데이터에 대해 참조됩니다.REQUEST_URL
: (필수 항목) 맞춤 텍스트 임베딩 및 일반 모델 엔드포인트를 추가할 때의 모델별 엔드포인트(예:https://cymbal.com/models/text/embeddings/v1
). 내부 IP 주소를 통해 모델 엔드포인트에 액세스할 수 있는지 확인합니다. 모델 엔드포인트 관리는 외부 IP 주소를 지원하지 않습니다.MODEL_QUALIFIED_NAME
: 모델 엔드포인트가 정규화된 이름을 사용하는 경우 필수입니다. 모델 엔드포인트에 버전이 여러 개 있는 경우의 정규화된 이름입니다.SECRET_ID
: 앞의mysql.ml_create_sm_secret_registration()
절차에서 사용한 보안 비밀 ID
일반 모델
이 섹션에서는 Vertex AI Model Garden에서 일반gemini-flash
모델 엔드포인트를 등록하는 방법을 보여줍니다. 이 엔드포인트는 기본적으로 카탈로그에 사전 등록되어 있습니다.
Google Cloud내에서 호스팅되는 일반 모델 엔드포인트를 등록할 수 있습니다.
Cloud SQL은 Vertex AI Model Garden을 통해 사용할 수 있는 모델 엔드포인트와 Google Cloud내 네트워크에 호스팅된 모델 엔드포인트만 지원합니다.
Gemini 모델
다음 예에서는 Vertex AI Model Garden의 gemini-2.5-flash
모델 엔드포인트를 사용합니다.
gemini-2.5-flash
모델 엔드포인트를 등록하려면 mysql.ml_create_model_registration
함수를 호출하세요.
CALL
mysql.ml_create_model_registration(
'MODEL_ID',
'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:streamGenerateContent',
'google',
'auth_type_cloudsql_service_agent_iam',
NULL, NULL, NULL, NULL);
다음을 바꿉니다.
MODEL_ID
: 정의한 모델 엔드포인트의 고유 ID (예:
gemini-1
). 이 모델 ID는 모델 엔드포인트가 임베딩을 생성하거나 예측을 호출하는 데 필요한 메타데이터에 대해 참조됩니다.PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.
자세한 내용은 일반 모델 엔드포인트의 예측을 호출하는 방법을 참고하세요.
다음 단계
- 모델 엔드포인트 관리 참조에 대해 알아보기