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]입니다.