AlloyDB AI는 엔터프라이즈 생성형 AI 애플리케이션을 빌드할 수 있는 AlloyDB Omni에 포함된 기능 모음입니다. AlloyDB의 AI/ML 기능에 관한 자세한 내용은 생성형 AI 애플리케이션 빌드를 참고하세요.
AlloyDB AI가 포함된 AlloyDB Omni를 사용하면 원격 ML 모델을 쿼리하여 ML 모델에서 생성된 온라인 예측 및 텍스트 임베딩을 사용할 수 있습니다. AlloyDB AI가 포함된 AlloyDB Omni는 이미지와 같은 다른 콘텐츠의 벡터 임베딩도 처리할 수 있습니다(예: google_ml.predict_row
인터페이스를 사용하고 쿼리에서 직접 번역하는 경우).
원격 모델을 쿼리하도록 AlloyDB Omni 인스턴스 구성
AlloyDB Omni는 google_ml_integration
확장 프로그램을 사용하여 원격 ML 모델을 쿼리할 수 있습니다.
원하는 경우 Vertex AI 모델을 쿼리하려면 AlloyDB Omni를 설치하기 전에 Vertex AI로 AlloyDB Omni 서비스 계정을 구성해야 합니다.
원격 모델을 쿼리하도록 AlloyDB Omni를 구성하려면 다음 단계를 따르세요.
Google Cloud사용을 통해 서비스 계정을 만듭니다.
JSON 형식의 서비스 계정 키를 만들고 다운로드합니다. 이 절차의 뒷부분에서 사용되므로 서비스 계정 키를 기록해 둡니다.
만든 서비스 계정 키를
KEY_PATH
에 복사합니다. 키 경로는 AlloyDB Omni 컨테이너를 실행할 사용자가 액세스하고 소유할 수 있는 호스트의 경로여야 합니다.Google Cloud 프로젝트에서 Vertex AI API를 사용 설정합니다.
gcloud services enable aiplatform.googleapis.com
적절한 프로젝트 및 서비스 계정에 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
: 1단계에서 만든 서비스 계정의 ID입니다. 여기에는 전체@PROJECT_ID.iam.gserviceaccount.com
접미사가 포함됩니다. 예를 들면my-service@my-project.iam.gserviceaccount.com
입니다.
AlloyDB Omni용 AlloyDB AI 구성
AlloyDB Omni를 설치하고 AlloyDB AI를 통합하려면 루트 사용자로 다음 단계를 완료합니다.
클라우드 기반 모델을 쿼리하도록 AlloyDB Omni 구성에 나열된 모든 단계를 완료합니다.
동일한 이름의 기존 컨테이너가 있는 경우 중지하고 삭제합니다.
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
다음을 바꿉니다.
CONTAINER_NAME
: 호스트 머신의 컨테이너 레지스트리에 AlloyDB Omni 컨테이너를 할당할 이름입니다. 예를 들면my-omni-1
입니다.
새 AlloyDB Omni 컨테이너를 시작하여 키를 컨테이너에 마운트합니다.
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v "KEY_PATH":/etc/postgresql/private-key.json \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v "KEY_PATH":/etc/postgresql/private-key.json \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v "KEY_PATH":/etc/postgresql/private-key.json \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v "KEY_PATH":/etc/postgresql/private-key.json \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
다음 변수를 바꿉니다.
CONTAINER_NAME
: 호스트 머신의 컨테이너 레지스트리에 AlloyDB Omni 컨테이너를 할당할 이름입니다. 예를 들면my-omni-1
입니다.NEW_PASSWORD
: 새 컨테이너의postgres
사용자 생성 후 할당된 비밀번호입니다.NEW_PASSWORD
는DATA_DIR
가 새 위치인 경우에만 새 비밀번호를 설정합니다.DATA_DIR
: 데이터가 저장된 호스트 디렉터리 경로입니다.KEY_PATH
: 서비스 계정 키 파일의 경로입니다.HOST_PORT
: 컨테이너가 자체 포트5432
를 게시해야 하는 호스트 머신의 TCP 포트입니다. 호스트 머신에서도 PostgreSQL 기본 포트를 사용하려면5432
를 지정합니다.
AlloyDB Omni 컨테이너 내의
postgres
사용자가 키 파일을 읽을 수 있도록 합니다.Docker
docker exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
docker exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json
Docker
docker exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
docker exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json
Podman
podman exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
podman exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json
Podman
podman exec CONTAINER_NAME chown postgres /etc/postgresql/private-key.json
podman exec CONTAINER_NAME chmod 600 /etc/postgresql/private-key.json
다음 변수를 바꿉니다.
CONTAINER_NAME
: 호스트 머신의 컨테이너 레지스트리에 AlloyDB Omni 컨테이너를 할당할 이름입니다. 예를 들면my-omni-1
입니다.KEY_PATH
: 서비스 계정 키 파일의 호스트 경로입니다.
다음 구성 옵션을 추가하여 AlloyDB Omni를 업데이트합니다.
Docker
docker exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf omni_enable_ml_agent_process = 'on' omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json' EOF"
Docker
docker exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf omni_enable_ml_agent_process = 'on' omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json' EOF"
Podman
podman exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf omni_enable_ml_agent_process = 'on' omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json' EOF"
Podman
podman exec CONTAINER_NAME sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf omni_enable_ml_agent_process = 'on' omni_google_cloud_private_key_file_path = '/etc/postgresql/private-key.json' EOF"
다음 변수를 바꿉니다.
CONTAINER_NAME
: 호스트 머신의 컨테이너 레지스트리에 AlloyDB Omni 컨테이너를 할당할 이름입니다. 예를 들면my-omni-1
입니다.
AlloyDB Omni 컨테이너를 다시 시작합니다.
Docker
docker restart CONTAINER_NAME
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
다음 변수를 바꿉니다.
CONTAINER_NAME
: 호스트 머신의 컨테이너 레지스트리에 AlloyDB Omni 컨테이너를 할당할 이름입니다. 예를 들면my-omni-1
입니다.
컨테이너화된 psql
을 사용하여 연결
자체 컨테이너화된 psql
사본을 사용하여 AlloyDB Omni 데이터베이스 서버에 연결하려면 다음 명령어를 실행합니다.
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Podman
podman exec -it CONTAINER_NAME psql -U postgres
Podman
podman exec -it CONTAINER_NAME psql -U postgres
다음 변수를 바꿉니다.
CONTAINER_NAME
: 호스트 머신의 컨테이너 레지스트리에 AlloyDB Omni 컨테이너를 할당할 이름입니다. 예를 들면my-omni-1
입니다.
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]
입니다.