google_ml_integration
확장 프로그램에는 public
및 google_ml
의 두 가지 네임스페이스에 삽입 함수가 포함되어 있습니다. 이 페이지에서는 이러한 네임스페이스의 함수를 사용하여 텍스트 임베딩을 생성하는 방법을 설명합니다.
public
스키마의 embedding()
함수는 엔드포인트를 등록하지 않고도 모든 Vertex AI 임베딩 모델과 함께 사용할 수 있습니다. 태스크 유형과 같은 맞춤 정보를 전달하려면 엔드포인트를 등록한 후 google_ml
스키마에서 google_ml.embedding()
함수를 사용하세요. 엔드포인트 등록에 대한 자세한 내용은 모델 등록을 참고하세요.
삽입 작동 방식
다음과 같은 특성을 가진 데이터베이스가 AlloyDB에서 실행된다고 가정해 보겠습니다.
데이터베이스에는
items
테이블이 포함되어 있습니다. 이 테이블의 각 행은 비즈니스에서 판매하는 상품을 설명합니다.items
테이블에는complaints
열이 포함되어 있습니다. 이TEXT
열에는 각 항목에 대해 로깅된 구매자 불만사항이 저장됩니다.데이터베이스는 Vertex AI Model Garden과 통합되어
gemini-embedding-001
영어 모델에 대한 액세스 권한을 부여합니다.
이 데이터베이스에 상품에 대한 불만사항이 저장되어 있지만 이러한 불만사항은 일반 텍스트로 저장되므로 쿼리하기가 어렵습니다. 예를 들어 잘못된 색상의 상품을 받은 고객이 불만사항을 가장 많이 제기한 상품이 무엇인지 확인하려면 테이블에서 일반 SQL 쿼리를 수행하여 다양한 키워드 일치를 찾으면 됩니다. 하지만 이 방법은 정확한 키워드가 포함된 행만 일치시킵니다.
예를 들어 SELECT * FROM item WHERE complaints LIKE
"%wrong color%"
와 같은 기본 SQL 쿼리는 The picture shows a blue one, but the one I received was red
만 포함된 complaints
필드가 있는 행을 반환하지 않습니다.
LLM 기반 임베딩을 사용하는 SQL 쿼리는 이러한 쿼리에 대해 의미상 유사한 응답을 반환하는 데 도움이 될 수 있습니다. 임베딩을 적용하면 이 예시의 테이블에서 특정 텍스트 프롬프트(예: It was the
wrong color
)와 의미론적으로 유사한 불만사항이 있는 상품을 쿼리할 수 있습니다.
임베딩을 생성하려면 다음 스키마 중 하나를 선택합니다.
시작하기 전에
AlloyDB가 임베딩을 생성할 수 있도록 하려면 다음을 수행하세요.
postgres
사용자로psql
또는 PostgreSQL용 AlloyDB Studio를 사용하여 데이터베이스에 연결합니다.google_ml_integration
확장 프로그램이 설치되어 있는지 확인합니다.google_ml_integration.enable_model_support
플래그가on
으로 설정되어 있는지 확인합니다.- AlloyDB 데이터베이스에서 임베딩을 생성하려면 먼저 AlloyDB에서 Vertex AI를 사용하도록 구성해야 합니다. 자세한 내용은 Vertex AI와 데이터베이스 통합을 참고하세요.
데이터베이스 사용자에게 임베딩 함수를 실행하여 임베딩을 생성할 수 있는 권한을 부여합니다.
\c DB_NAME; GRANT EXECUTE ON FUNCTION google_ml.embedding TO USER_NAME;
다음을 바꿉니다.
DB_NAME: 권한을 부여해야 하는 데이터베이스의 이름
USER_NAME: 권한을 부여해야 하는 사용자의 이름
임베딩 생성
google_ml.embedding()
SQL 함수를 사용하여 텍스트 임베딩 모델을 호출합니다.
모델을 호출하고 임베딩을 생성하려면 다음 쿼리를 실행하세요.
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
다음을 바꿉니다.
MODEL_ID
: 정규화된 모델 ID(예:gemini-embedding-001
)CONTENT
: 벡터 임베딩으로 변환할 텍스트입니다.
임베딩 생성 예
이 섹션에는 등록된 모델 엔드포인트를 사용하여 임베딩을 생성하는 몇 가지 예시가 나와 있습니다.
Gemini 임베딩 모델
등록된 gemini-embedding-001
모델 엔드포인트에 대해 임베딩을 생성하려면 다음 문을 실행합니다.
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
AlloyDB 클러스터와 Vertex AI 엔드포인트가 서로 다른 프로젝트에 있는 경우 model_id
를 엔드포인트의 정규화된 경로(예: projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001
)로 설정합니다.
등록된 gemini-embedding-001
모델 엔드포인트에 대해 임베딩을 생성하려면 다음 문을 실행합니다.
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
OpenAI 임베딩 모델
OpenAI에서 등록된 text-embedding-ada-002
모델 엔드포인트에 대한 임베딩을 생성하려면 다음 문을 실행합니다.
SELECT
google_ml.embedding(
model_id => 'text-embedding-ada-002',
content => 'e-mail spam');
OpenAI에서 등록된 text-embedding-3-small
또는 text-embedding-3-large
모델 엔드포인트에 대한 임베딩을 생성하려면 다음 문을 실행합니다.
SELECT
google_ml.embedding(
model_id => 'text-embedding-3-small',
content => 'Vector embeddings in AI');
다음 단계
- 벡터 유사성 검색 실행
- AlloyDB, pgvector, 모델 엔드포인트 관리로 스마트 쇼핑 어시스턴트를 빌드하는 방법 알아보기
- 색인 생성 및 벡터 쿼리
- 임베딩 워크플로 예시 알아보기