이 페이지에서는 AlloyDB Omni를 설치하고 AlloyDB AI를 통합하는 방법을 보여줍니다.
AlloyDB AI는 엔터프라이즈 생성형 AI 애플리케이션을 빌드할 수 있는 AlloyDB Omni에 포함된 기능 모음입니다. AlloyDB의 ML 기능에 관한 자세한 내용은 생성형 AI 애플리케이션 빌드를 참고하세요.
AlloyDB AI가 포함된 AlloyDB Omni를 사용하면 원격 ML 모델을 쿼리하여 ML 모델에서 생성된 온라인 예측 및 텍스트 임베딩을 사용할 수 있습니다. AlloyDB AI가 포함된 AlloyDB Omni는 이미지와 같은 다른 콘텐츠의 벡터 임베딩도 처리할 수 있습니다(예: google_ml.predict_row
인터페이스를 사용하고 쿼리에서 직접 번역하는 경우).
AlloyDB AI와 함께 AlloyDB Omni를 설치할 위치에 따라 다음 옵션 중 하나를 선택합니다.
원격 모델을 쿼리하도록 AlloyDB Omni 인스턴스 구성
데이터베이스 클러스터 매니페스트에서 googleMLExtension
를 사용 설정하여 모델 엔드포인트 관리를 사용하여 원격 모델을 쿼리할 수 있습니다.
원하는 경우 Vertex AI 모델을 쿼리하려면 Vertex AI로 AlloyDB 서비스 계정을 구성하고, 키를 사용하여 Kubernetes 비밀을 만들고, 데이터베이스 클러스터 매니페스트에 Kubernetes 비밀을 설정해야 합니다.
AlloyDB 서비스 계정에 Vertex AI 권한 추가
원격 Vertex AI 모델을 쿼리하도록 AlloyDB Omni를 구성하려면 다음 단계를 따르세요.
Google Cloud로 서비스 계정을 만듭니다.
서비스 계정 키를 만들고 JSON 형식으로
private-key.json
파일에 저장한 후 다운로드합니다.키를 파일 시스템의 영구 위치에 저장합니다. 이 파일은 AlloyDB Omni 서버의 전체 기간 동안 이 위치에 있습니다.
파일 시스템의 위치를 기록해 둡니다. 이후 단계에서 필요합니다.
적절한 프로젝트 및 서비스 계정에 Vertex AI Identity and Access Management (IAM) 권한을 추가합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role="roles/aiplatform.user"
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.SERVICE_ACCOUNT_ID
: 이전 단계에서 만든 서비스 계정의 ID입니다. 여기에는 전체@PROJECT_ID.iam.gserviceaccount.com
접미사가 포함됩니다(예:my-service@my-project.iam.gserviceaccount.com
).
서비스 계정 키를 사용하여 Kubernetes 보안 비밀 만들기
이전 단계에서 다운로드한 서비스 계정 키를 기반으로 Kubernetes 보안 비밀을 만들려면 다음 명령어를 실행합니다.
kubectl create secret generic SECRET_NAME \
--from-file=PATH_TO_SERVICE_ACCOUNT_KEY/private-key.json \
-n NAMESPACE
다음을 바꿉니다.
SECRET_NAME
: AlloyDB Omni가 AlloyDB AI 기능에 액세스할 수 있도록DBCluster
매니페스트를 만들 때 사용되는 보안 비밀의 이름입니다. 예를 들면vertex-ai-key-alloydb
입니다.PATH_TO_SERVICE_ACCOUNT_KEY
:private-key.json
서비스 계정 키를 다운로드한 위치의 경로입니다.NAMESPACE
: 데이터베이스 클러스터의 네임스페이스입니다.
AlloyDB Omni 연산자 설치
AlloyDB Omni 연산자 설치에 나와 있는 단계에 따라 AlloyDB Omni 연산자를 설치합니다.
AlloyDB AI로 데이터베이스 클러스터 만들기
AlloyDB AI로 데이터베이스 클러스터를 만듭니다.
googleMLExtension
필드에서enabled
를true
로 설정하면 원격 모델을 쿼리할 수 있습니다. Vertex AI 모델을 쿼리하려면vertexAIKeyRef
를 Kubernetes 보안 비밀로 설정합니다.apiVersion: v1 kind: Secret metadata: name: db-pw-DB_CLUSTER_NAME type: Opaque data: DB_CLUSTER_NAME: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: databaseVersion: "15.7.0" primarySpec: adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME features: googleMLExtension: enabled: true config: vertexAIKeyRef: VERTEX_AI_SECRET_NAME vertexAIRegion: VERTEX_AI_REGION resources: cpu: CPU_COUNT memory: MEMORY_SIZE disks: - name: DataDisk size: DISK_SIZE storageClass: standard
다음을 바꿉니다.
DB_CLUSTER_NAME
: 이 데이터베이스 클러스터의 이름입니다(예:my-db-cluster
).VERTEX_AI_SECRET_NAME
(선택사항): 이전 단계에서 만든 Vertex AI 보안 비밀입니다. Vertex AI 모델을 호출하려면 이 옵션을 설정해야 합니다.VERTEX_AI_REGION
(선택사항): 요청을 전송할 Vertex AI 리전 엔드포인트입니다(예:us-west4
). 기본값은us-central1
입니다.ENCODED_PASSWORD
: 기본postgres
사용자 역할의 데이터베이스 로그인 비밀번호로, base64 문자열로 인코딩됩니다(예:ChangeMe123
의 경우Q2hhbmdlTWUxMjM=
).CPU_COUNT
: 이 데이터베이스 클러스터의 각 데이터베이스 인스턴스에서 사용할 수 있는 CPU 수입니다.MEMORY_SIZE
: 이 데이터베이스 클러스터의 데이터베이스 인스턴스당 메모리 양입니다. CPU당 8GB로 설정하는 것이 좋습니다. 예를 들어 이 매니페스트에서 앞서cpu
를2
로 설정한 경우memory
를16Gi
로 설정하는 것이 좋습니다.DISK_SIZE
: 데이터베이스 인스턴스당 디스크 크기입니다(예:10Gi
).
매니페스트를 적용합니다.
kubectl apply -f DB_CLUSTER_YAML
다음을 바꿉니다.
DB_CLUSTER_YAML
: 이 데이터베이스 클러스터 매니페스트 파일의 이름입니다(예:alloydb-omni-db-cluster.yaml
).
사전 설치된 psql을 사용하여 연결
데이터베이스를 실행하는 팟에 이미 설치된 psql
클라이언트를 사용하여 테스트 연결을 설정할 수 있습니다.
이렇게 하려면 다음 명령어를 실행합니다.
export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -c database -- psql -h localhost -U postgres
DB_CLUSTER_NAME
을 데이터베이스 클러스터 이름으로 바꿉니다. 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.
명령어를 입력하면 데이터베이스 서버에서 비밀번호를 묻는 메시지가 표시됩니다.
데이터베이스 클러스터를 만들 때 base64로 인코딩된 버전을 Kubernetes 보안 비밀로 제공한 비밀번호를 입력합니다. 예를 들어 Q2hhbmdlTWUxMjM=
보안 비밀로 데이터베이스 클러스터를 만들었다면 여기에서 사용할 로그인 비밀번호는 ChangeMe123
입니다.
AlloyDB AI 설치를 통해 AlloyDB Omni 확인
설치가 완료되었으며 모델 예측을 사용하는지 확인하려면 다음을 입력합니다.
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
SELECT array_dims(embedding( 'text-embedding-005', 'AlloyDB AI')::real[]);
결과는 다음과 유사합니다.
array_dims
------------
[1:768]
(1 row)
이전 쿼리에서 embedding()
호출은 입력 텍스트 AlloyDB AI
의 임베딩을 생성합니다.
array_dims
는 embedding()
에서 반환된 배열의 크기를 반환합니다.
text-embedding-005
모델은 768개의 측정기준이 있는 출력을 반환하므로 출력은 [768]
입니다.