텍스트 임베딩 생성

google_ml_integration 확장 프로그램에는 publicgoogle_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가 임베딩을 생성할 수 있도록 하려면 다음을 수행하세요.

임베딩 생성

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');

다음 단계