이 페이지에서는 Cloud SQL에서 모델 엔드포인트 관리를 사용하여 AI 모델 엔드포인트를 등록하고 예측을 호출하는 방법을 설명합니다. 프로덕션 환경에서 AI 모델을 사용하려면 Cloud SQL을 사용하여 생성형 AI 애플리케이션 빌드 및 벡터 임베딩 사용을 참고하세요.
개요
모델 엔드포인트 관리를 사용하면 모델 엔드포인트를 등록하고 Cloud SQL 인스턴스에서 모델 엔드포인트 메타데이터를 관리한 후 SQL 쿼리를 사용하여 모델과 상호작용할 수 있습니다. Cloud SQL은 모델과 관련된 모델 엔드포인트 메타데이터를 추가하고 등록하는 함수가 포함된 google_ml_integration
확장 프로그램을 제공합니다. 이러한 모델을 사용하여 벡터 임베딩을 생성하거나 예측을 호출할 수 있습니다.
모델 엔드포인트 관리를 사용하여 다음 모델 유형을 등록할 수 있습니다.
- Vertex AI 텍스트 임베딩 모델
- Google Cloud 내 네트워크에 호스팅되는 맞춤 호스팅 텍스트 임베딩 모델입니다.
- JSON 기반 API가 있는 일반 모델 이러한 모델의 예는 다음과 같습니다.
- Vertex AI Model Garden의
gemini-pro
모델 - OpenAI 모델의
open_ai
모델 - Google Cloud 내 네트워크에 호스팅된 모델
- Vertex AI Model Garden의
기능 소개
모델 엔드포인트 관리를 사용하여 다음을 준수하는 모델 엔드포인트를 등록할 수 있습니다.
- 모델 입력과 출력은 JSON 형식을 지원합니다.
- REST 프로토콜을 사용하여 모델을 호출할 수 있습니다.
모델 엔드포인트 관리에 모델 엔드포인트를 등록하면 모델 엔드포인트 관리는 각 엔드포인트를 모델 참조로 고유한 모델 ID와 함께 등록합니다. 이 모델 ID를 사용하여 다음과 같이 모델을 쿼리할 수 있습니다.
임베딩을 생성하여 텍스트 프롬프트를 숫자 벡터로 변환합니다. 데이터베이스에서
pgvector
확장 프로그램이 사용 설정된 경우 생성된 임베딩을 벡터 데이터로 저장할 수 있습니다. 자세한 내용은 pgvector를 사용하여 임베딩 쿼리 및 색인 생성을 참고하세요.트랜잭션 내에서 SQL을 사용하여 모델을 호출하려면 예측을 호출합니다.
애플리케이션은 google_ml_integration
확장 프로그램을 사용하여 모델 엔드포인트를 관리할 수 있습니다. 이 확장 프로그램은 다음과 같은 SQL 함수를 제공합니다.
google_ml.create_model()
: 예측 또는 임베딩 함수에 사용되는 모델 엔드포인트를 등록합니다.google_ml.create_sm_secret()
: API 키가 저장된 Google Cloud Secret Manager의 보안 비밀을 사용합니다.google_ml.embedding()
: 텍스트 임베딩을 생성합니다.google_ml.predict_row()
: JSON 입력 및 출력 형식을 지원하는 일반 모델을 호출할 때 예측을 생성합니다.
주요 개념
모델 엔드포인트 관리를 사용하기 전에 모델에 연결하고 이를 사용하는 데 필요한 개념을 이해하세요.
모델 제공업체
모델 제공업체는 지원되는 모델 호스팅 제공업체입니다. 다음 표에는 사용하는 모델 제공자에 따라 설정해야 하는 모델 제공자 값이 나와 있습니다.
모델 제공업체 | 함수에서 다음과 같이 설정합니다. |
---|---|
Vertex AI (Gemini 포함) | google |
OpenAI | open_ai |
Vertex AI 외부에서 호스팅되는 기타 모델 | custom |
기본 모델 제공업체는 custom
입니다.
모델 유형
모델 유형은 AI 모델의 유형입니다. 모델 엔드포인트를 등록할 때 엔드포인트의 text-embedding
또는 generic
모델 유형을 설정할 수 있습니다.
- 기본 지원되는 텍스트 임베딩 모델
- 모델 엔드포인트 관리는 모든 버전의
textembedding-gecko
모델을 기본적으로 지원합니다. 이러한 모델 엔드포인트를 등록하려면google_ml.create_model()
함수를 사용하세요. Cloud SQL은 이러한 모델에 대한 기본 변환 함수를 자동으로 설정합니다. - 이러한 모델의 모델 유형은
text-embedding
입니다. - 기타 텍스트 임베딩 모델
- 다른 텍스트 임베딩 모델의 경우 모델이 지원하는 입력 및 출력 형식을 처리할 변환 함수를 만들어야 합니다. 원하는 경우 모델에 필요한 맞춤 헤더를 생성하는 HTTP 헤더 생성 함수를 사용할 수 있습니다.
- 이러한 모델의 모델 유형은
text-embedding
입니다. - 일반 모델
- 모델 엔드포인트 관리는 텍스트 임베딩 모델 외에도 다른 모든 모델 유형의 등록도 지원합니다. 일반 모델의 예측을 호출하려면
google_ml.predict_row()
함수를 사용하세요. 모델에만 해당하는 요청 엔드포인트 및 HTTP 헤더와 같은 모델 엔드포인트 메타데이터를 설정할 수 있습니다. - 일반 모델 엔드포인트를 등록할 때 변환 함수를 전달할 수 없습니다. 예측을 호출할 때 함수의 입력이 JSON 형식이고 JSON 출력을 파싱하여 최종 출력을 가져오는지 확인합니다.
- 이러한 모델의 모델 유형은
generic
입니다.generic
는 기본 모델 유형이므로 이 유형의 모델 엔드포인트를 등록하는 경우 모델 유형을 설정하는 것은 선택사항입니다.
인증 방식
google_ml_integration
확장 프로그램을 사용하여 모델에 액세스하는 다양한 인증 방법을 지정할 수 있습니다. 이러한 메서드를 설정하는 것은 선택사항이며 모델에 액세스하기 위해 인증해야 하는 경우에만 필요합니다.
Vertex AI 모델의 경우 Cloud SQL 서비스 계정이 인증에 사용됩니다. 다른 모델의 경우 Secret Manager에 보안 비밀로 저장된 API 키 또는 보유자 토큰을 google_ml.create_sm_secret()
SQL 함수와 함께 사용할 수 있습니다.
다음 표에는 설정할 수 있는 인증 방법이 나와 있습니다.
인증 방법 | 함수에서 다음과 같이 설정합니다. | 모델 제공업체 |
---|---|---|
Cloud SQL 서비스 에이전트 | cloudsql_service_agent_iam |
Vertex AI 제공업체 |
Secret Manager | secret_manager |
Vertex AI 외부에서 호스팅되는 모델 |
예측 함수
google_ml_integration
확장 프로그램에는 다음과 같은 예측 함수가 포함되어 있습니다.
google_ml.embedding()
- 등록된 텍스트 임베딩 모델 엔드포인트를 호출하여 임베딩을 생성합니다. Vertex AI의
textembedding-gecko
모델에 대한 기본 제공 지원이 포함되어 있습니다. - 기본 제공 지원이 없는 텍스트 임베딩 모델의 경우 입력 및 출력 매개변수는 모델에 고유하며 함수가 모델을 호출하려면 변환해야 합니다. 예측 함수의 입력을 모델별 입력으로 변환하는 변환 입력 함수와 모델별 출력을 예측 함수 출력으로 변환하는 변환 출력 함수를 만듭니다.
google_ml.predict_row()
- 엔드포인트가 예측을 호출하는 JSON 기반 API를 지원하는 경우 등록된 일반 모델 엔드포인트를 호출합니다.
변환 함수
변환 함수는 입력을 모델이 이해하는 형식으로 수정하고 모델 응답을 예측 함수가 예상하는 형식으로 변환합니다. 변환 함수는 내장 지원 없이 text-embedding
모델 엔드포인트를 등록할 때 사용됩니다. 변환 함수의 서명은 모델 유형의 예측 함수에 따라 다릅니다.
generic
모델 엔드포인트를 등록할 때는 변환 함수를 사용할 수 없습니다.
다음은 텍스트 임베딩 모델의 예측 함수 서명을 보여줍니다.
// define custom model specific input/output transform functions.
CREATE OR REPLACE FUNCTION input_transform_function(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
CREATE OR REPLACE FUNCTION output_transform_function(model_id VARCHAR(100), response_json JSON) RETURNS real[];
변환 함수를 만드는 방법에 관한 자세한 내용은 변환 함수 예를 참고하세요.
HTTP 헤더 생성 함수
HTTP 헤더 생성 함수는 HTTP 헤더로 사용되는 JSON 키-값 쌍으로 출력을 생성합니다. 예측 함수의 서명은 헤더 생성 함수의 서명을 정의합니다.
다음 예는 google_ml.embedding()
예측 함수의 서명을 보여줍니다.
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input TEXT) RETURNS JSON;
google_ml.predict_row()
예측 함수의 서명은 다음과 같습니다.
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input JSON) RETURNS JSON;
헤더 생성 함수를 만드는 방법에 관한 자세한 내용은 헤더 생성 함수 예시를 참고하세요.
제한사항
- Cloud SQL 인스턴스에서 AI 모델을 사용하려면 인스턴스의 유지보수 버전이
R20240910.01_02
이상이어야 합니다. 인스턴스를 이 버전으로 업그레이드하려면 셀프서비스 유지보수를 참조하세요.
다음 단계
- 모델 제공업체의 인증을 설정합니다.
- 모델 엔드포인트 관리에 모델 엔드포인트 등록
- 모델 엔드포인트 관리 참조에 대해 알아보세요.