텍스트 임베딩 가져오기

이 문서에서는 Vertex AI 텍스트 임베딩 API를 사용하여 텍스트 임베딩을 만드는 방법을 설명합니다.

텍스트 임베딩은 텍스트의 밀집 벡터 표현입니다. 예를 들어 gemini-embedding-001 모델은 주어진 텍스트에 대해 3072차원 벡터를 생성합니다. 이러한 고밀도 벡터 임베딩은 대규모 언어 모델에서 사용하는 것과 유사한 심층 학습 방법을 사용하여 생성됩니다.

단어를 숫자에 매핑하는 희소 벡터와 달리 밀집 벡터는 텍스트의 시맨틱 의미를 나타내도록 설계되었습니다. 밀집 벡터 임베딩을 사용하는 주요 이점은 시맨틱 검색을 실행할 수 있다는 것입니다. 직접 단어 또는 문법 일치를 검색하는 대신 문구의 언어가 다른 경우에도 쿼리의 의미와 일치하는 텍스트 문구를 검색할 수 있습니다.

임베딩 벡터가 정규화되므로 코사인 유사성, 내적 또는 유클리드 거리를 사용하여 동일한 유사성 순위를 얻을 수 있습니다.

질문과 답변이 의미론적으로 유사하지 않음
그림 1. 텍스트 임베딩을 가져옵니다.

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. 임베딩 작업의 태스크 유형을 선택합니다.
  7. 지원되는 모델

    다음 모델을 사용하여 텍스트 임베딩을 가져올 수 있습니다.

    모델 이름 설명 출력 측정기준 최대 시퀀스 길이 지원되는 텍스트 언어
    gemini-embedding-001 영어, 다국어, 코드 작업에서 최첨단 성능을 제공합니다. 이전의 전문 모델(예: text-embedding-005, text-multilingual-embedding-002)을 통합하고 각 도메인에서 더 나은 성능을 달성합니다. 자세한 내용은 기술 보고서를 참고하세요. 최대 3,072개 토큰 2048개 지원되는 텍스트 언어
    text-embedding-005 영어 및 코드 작업에 특화되어 있습니다. 최대 768 토큰 2048개 영어
    text-multilingual-embedding-002 다국어 작업에 특화되어 있습니다. 최대 768 토큰 2048개 지원되는 텍스트 언어

    우수한 임베딩 품질을 위해 gemini-embedding-001은 최고의 성능을 제공하도록 설계된 대규모 모델입니다. gemini-embedding-001는 요청당 하나의 인스턴스를 지원합니다.

    텍스트 스니펫의 텍스트 임베딩 가져오기

    Vertex AI API 또는 Python용 Vertex AI SDK를 사용하여 텍스트 스니펫의 텍스트 임베딩을 가져올 수 있습니다.

    API 한도

    요청마다 입력 텍스트가 250개로 제한됩니다. API의 최대 입력 토큰 한도는 20,000개입니다. 이 한도를 초과하는 입력은 400 오류가 발생합니다. 각 개별 입력 텍스트는 토큰 2,048개로 제한되며 초과하는 부분은 자동으로 잘립니다. autoTruncatefalse로 설정하여 자동 잘림을 사용 중지할 수도 있습니다.

    자세한 내용은 텍스트 임베딩 한도를 참고하세요.

    임베딩 차원 선택

    모든 모델은 기본적으로 전체 길이 임베딩 벡터를 생성합니다. gemini-embedding-001의 경우 이 벡터는 3,072차원이고 다른 모델은 768차원 벡터를 생성합니다. 하지만 output_dimensionality 매개변수를 사용하면 사용자가 출력 삽입 벡터의 크기를 제어할 수 있습니다. 더 작은 출력 크기를 선택하면 저장용량을 절약하고 다운스트림 애플리케이션의 계산 효율성을 높일 수 있으며 품질 면에서는 거의 손실이 없습니다.

    다음 예시에서는 gemini-embedding-001 모델을 사용합니다.

    Python

    설치

    pip install --upgrade google-genai

    자세한 내용은 SDK 참고 문서를 참조하세요.

    Vertex AI에서 Gen AI SDK를 사용하도록 환경 변수를 설정합니다.

    # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
    # with appropriate values for your project.
    export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
    export GOOGLE_CLOUD_LOCATION=global
    export GOOGLE_GENAI_USE_VERTEXAI=True

    from google import genai
    from google.genai.types import EmbedContentConfig
    
    client = genai.Client()
    response = client.models.embed_content(
        model="gemini-embedding-001",
        contents="How do I get a driver's license/learner's permit?",
        config=EmbedContentConfig(
            task_type="RETRIEVAL_DOCUMENT",  # Optional
            output_dimensionality=3072,  # Optional
            title="Driver's License",  # Optional
        ),
    )
    print(response)
    # Example response:
    # embeddings=[ContentEmbedding(values=[-0.06302902102470398, 0.00928034819662571, 0.014716853387653828, -0.028747491538524628, ... ],
    # statistics=ContentEmbeddingStatistics(truncated=False, token_count=13.0))]
    # metadata=EmbedContentMetadata(billable_character_count=112)

    벡터 데이터베이스에 임베딩 추가

    임베딩을 생성한 후 벡터 검색과 같은 벡터 데이터베이스에 임베딩을 추가할 수 있습니다. 이렇게 하면 지연 시간이 짧은 검색이 가능하며, 데이터 크기가 커질수록 매우 중요합니다.

    벡터 검색에 대한 자세한 내용은 벡터 검색 개요를 참조하세요.

    다음 단계