Vertex AI 플러그인

Vertex AI 플러그인은 여러 AI 서비스에 인터페이스를 제공합니다.

설치

npm i --save @genkit-ai/vertexai

이 플러그인을 사용하는 흐름을 로컬에서 실행하려면 Google Cloud CLI 도구 설치

구성

이 플러그인을 사용하려면 configureGenkit()를 호출할 때 지정합니다.

import { vertexAI } from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({ projectId: 'your-cloud-project', location: 'us-central1' }),
  ],
  // ...
});

플러그인을 사용하려면 Google Cloud 프로젝트 ID, Vertex API 요청을 수행할 리전, Google Cloud 프로젝트 사용자 인증 정보를 지정해야 합니다.

  • 다음에서 projectId를 설정하여 Google Cloud 프로젝트 ID를 지정할 수 있습니다. vertexAI() 구성 또는 GCLOUD_PROJECT 환경 설정 변수의 값을 반환합니다. Google Cloud 환경 (Cloud Monitoring)에서 Functions, Cloud Run 등)에서 GCLOUD_PROJECT가 자동으로 환경의 프로젝트 ID입니다.

  • 다음 중 하나에서 location를 설정하여 API 위치를 지정할 수 있습니다. vertexAI() 구성 또는 GCLOUD_LOCATION 환경 설정 변수의 값을 반환합니다.

  • API 사용자 인증 정보를 제공하려면 Google Cloud 애플리케이션 기본 사용자 인증 정보를 설정해야 합니다.

    1. 사용자 인증 정보를 지정하려면 다음 안내를 따르세요.

      • Google Cloud 환경(Cloud Functions, Cloud Run 등)에서 흐름을 실행하는 경우 이는 자동으로 설정됩니다

      • 로컬 개발 환경에서 다음을 실행하여 이 작업을 수행합니다.

      gcloud auth application-default login
      
    2. 또한 계정에 Vertex AI 사용자 IAM 역할(roles/aiplatform.user)이 부여되었는지 확인합니다. Vertex AI 액세스 제어 문서를 참조하세요.

용도

생성형 AI 모델

이 플러그인은 지원되는 생성형 AI 모델에 대한 참조를 정적으로 내보냅니다.

import { gemini15Flash, gemini15Pro, imagen2 } from '@genkit-ai/vertexai';

이러한 참조를 사용하여 generate()에서 사용할 모델을 지정할 수 있습니다.

const llmResponse = await generate({
  model: gemini15Flash,
  prompt: 'What should I do when I visit Melbourne?',
});

또한 이 플러그인은 Gecko 텍스트 임베딩 참조를 정적으로 내보냅니다. 모델:

import { textEmbeddingGecko } from '@genkit-ai/vertexai';

이 참조를 사용하여 색인 생성기 또는 검색기로 사용할 임베딩을 지정할 수 있습니다. 사용합니다 예를 들어 Chroma DB를 사용하는 경우:

configureGenkit({
  plugins: [
    chroma([
      {
        embedder: textEmbeddingGecko,
        collectionName: 'my-collection',
      },
    ]),
  ],
});

또는 임베딩을 직접 생성할 수도 있습니다.

// import { embed, EmbedderArgument } from '@genkit-ai/ai/embedder';
const embedding = await embed({
  embedder: textEmbeddingGecko,
  content: 'How many widgets do you have in stock?',
});

Vertex AI 모델 가든의 Anthropic Claude 3

Vertex AI Model Garden에서 Claude 3 모델 (haiku, sonnet, opus)에 액세스할 수 있는 경우 Genkit와 함께 사용할 수 있습니다.

다음은 Vertex AI Model Garden 모델을 사용 설정하기 위한 샘플 구성입니다.

import {
  vertexAI,
  claude3Haiku,
  claude3Sonnet,
  claude3Opus,
} from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({
      location: 'us-central1',
      modelGarden: {
        models: [claude3Haiku, claude3Sonnet, claude3Opus],
      },
    }),
  ],
});

그런 다음 일반 모델로 사용합니다.

const llmResponse = await generate({
  model: claude3Sonnet,
  prompt: 'What should I do when I visit Melbourne?',
});

Vertex AI 모델 가든의 Llama 3.1 405b

먼저 Vertex AI 모델 가든에서 Llama 3.1 API 서비스를 사용 설정해야 합니다.

다음은 Vertex AI 플러그인의 Llama 3.1 405b의 샘플 구성입니다.

import { vertexAI, llama31 } from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({
      location: 'us-central1',
      modelGarden: {
        models: [llama31],
      },
    }),
  ],
});

그런 다음 일반 모델로 사용합니다.

const llmResponse = await generate({
  model: llama31,
  prompt: 'Write a function that adds two numbers together',
});

평가자

Vertex AI Rapid Evaluation에서 평가자를 사용하려면 vertexAI 플러그인 구성에 evaluation 블록을 추가하세요.

import { vertexAI, VertexAIEvaluationMetricType } from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({
      projectId: 'your-cloud-project',
      location: 'us-central1',
      evaluation: {
        metrics: [
          VertexAIEvaluationMetricType.SAFETY,
          {
            type: VertexAIEvaluationMetricType.ROUGE,
            metricSpec: {
              rougeType: 'rougeLsum',
            },
          },
        ],
      },
    }),
  ],
  // ...
});

위 구성은 SafetyROUGE 측정항목의 평가자를 추가합니다. 이 예에서는 두 가지 접근 방식을 보여줍니다. Safety 측정항목은 기본 사양을 사용하는 반면, ROUGE 측정항목은 루즈 유형을 rougeLsum로 설정하는 맞춤설정된 사양을 제공합니다.

두 평가자는 호환되는 데이터 세트(즉, outputreference 필드가 있는 데이터 세트)와 함께 genkit eval:run 명령어를 사용하여 실행할 수 있습니다. Safety 평가자는 output만 필요하므로 genkit eval:flow -e vertexai/safety 명령어를 사용하여 실행할 수도 있습니다.

색인 생성기 및 검색기

색인 생성기 및 검색기 구현을 포함하는 Genkit Vertex AI 플러그인 Vertex AI 벡터 검색 서비스로 지원됩니다

(색인 생성자가 검색 증강 생성 페이지를 RAG 구현에서 사용됩니다.)

Vertex AI 벡터 검색 서비스는 원하는 문서 저장소: 문서 저장소에는 Vertex AI 벡터 검색 색인에는 각 문서에 대해 문서 저장소의 문서에 대한 참조를 사용합니다. Vertex AI 벡터 검색 서비스에서 문서의 색인을 생성한 후에는 사용하여 문서 저장소에 색인 목록을 생성합니다.

Vertex AI 플러그인에서 제공하는 색인 생성기 및 검색기 구현은 다음을 사용합니다. Cloud Firestore 또는 BigQuery를 문서 저장소로 사용할 수 있습니다. 또한 플러그인은 에는 다른 문서 저장소를 지원하기 위해 구현할 수 있는 인터페이스가 포함되어 있습니다.

Vertex AI 벡터 검색을 사용하려면 다음 안내를 따르세요.

  1. 임베딩 모델을 선택합니다. 이 모델은 벡터를 생성하여 임베딩을 추출할 수 있습니다 고급 사용자는 최적화된 임베딩 모델을 사용할 수 있습니다. 대부분의 사용자를 위해 Vertex AI의 text-embedding-004 모델은 영어 텍스트에 적합하며 text-multilingual-embedding-002 모델은 다국어 텍스트에 적합합니다.

  2. Vector Search 섹션에서 새 색인을 만듭니다. 가장 중요한 설정은 다음과 같습니다.

    • 측정기준: 평가 결과에서 생성된 벡터의 차원을 임베딩 모델입니다. text-embedding-004text-multilingual-embedding-002 모델은 768의 벡터를 생성함 측정기준에 따라 달라집니다.

    • 업데이트 방법: 스트리밍 업데이트를 선택합니다.

    색인을 만든 후 표준 (공개) 엔드포인트에 배포합니다.

  3. 사용하려는 문서 저장소의 문서 색인 생성기와 검색기를 가져옵니다.

    Cloud Firestore

    import {
      getFirestoreDocumentIndexer,
      getFirestoreDocumentRetriever
    } from '@genkit-ai/vertexai';
    
    import { initializeApp } from 'firebase-admin/app';
    import { getFirestore } from 'firebase-admin/firestore';
    
    initializeApp({ projectId: PROJECT_ID });
    const db = getFirestore();
    
    const firestoreDocumentRetriever: DocumentRetriever =
      getFirestoreDocumentRetriever(db, FIRESTORE_COLLECTION);
    const firestoreDocumentIndexer: DocumentIndexer =
      getFirestoreDocumentIndexer(db, FIRESTORE_COLLECTION);
    

    BigQuery

    import {
      getBigQueryDocumentIndexer,
      getBigQueryDocumentRetriever,
    } from '@genkit-ai/vertexai';
    import { BigQuery } from '@google-cloud/bigquery';
    
    const bq = new BigQuery({ projectId: PROJECT_ID });
    
    const bigQueryDocumentRetriever: DocumentRetriever =
      getBigQueryDocumentRetriever(bq, BIGQUERY_TABLE, BIGQUERY_DATASET);
    const bigQueryDocumentIndexer: DocumentIndexer =
      getBigQueryDocumentIndexer(bq, BIGQUERY_TABLE, BIGQUERY_DATASET);
    

    기타

    다른 문서 저장소를 지원하려면 자체 구현을 제공할 수 있습니다. DocumentRetrieverDocumentIndexer 중:

    const myDocumentRetriever: DocumentRetriever = async (neighbors: Neighbor[]) => {
      // Return the documents referenced by `neighbors`.
      // ...
    }
    const myDocumentIndexer: DocumentIndexer = async (documents: Document[]) => {
      // Add `documents` to storage.
      // ...
    }
    

    예시를 보려면 로컬 파일을 사용한 샘플 Vertex AI 플러그인 검색 및 색인 생성기를 참조하세요.

  4. vertexAI 플러그인 구성에 vectorSearchOptions 블록을 추가합니다.

    import { configureGenkit } from '@genkit-ai/core';
    import { vertexAI, textEmbedding004 } from '@genkit-ai/vertexai';
    
    configureGenkit({
      plugins: [
        vertexAI({
          projectId: PROJECT_ID,
          location: LOCATION,
          vectorSearchOptions: [
            {
              indexId: VECTOR_SEARCH_INDEX_ID,
              indexEndpointId: VECTOR_SEARCH_INDEX_ENDPOINT_ID,
              deployedIndexId: VECTOR_SEARCH_DEPLOYED_INDEX_ID,
              publicDomainName: VECTOR_SEARCH_PUBLIC_DOMAIN_NAME,
              documentRetriever: firestoreDocumentRetriever,
              documentIndexer: firestoreDocumentIndexer,
              embedder: textEmbedding004,
            },
          ],
        }),
      ],
    });
    

    첫 번째 단계에서 선택한 삽입기와 문서 색인 생성기를 제공합니다. 및 검색자를 만듭니다.

    앞서 만든 벡터 검색 색인을 사용하도록 플러그인을 구성하려면 여러 값을 제공해야 하는데, 이러한 값은 벡터 검색 섹션으로 이동합니다.

    • indexId: 색인 탭에 나열됩니다.
    • indexEndpointId: 색인 엔드포인트 탭에 나열됩니다.
    • deployedIndexIdpublicDomainName: '배포된 색인'에 나열됨 정보" 페이지: 배포된 색인의 이름을 클릭하여 열 수 있습니다. 앞서 말씀드린 탭 중 하나에서
  5. 이제 모든 구성이 완료되었으므로 검색기와 색인 생성기 참조를 가져옵니다. 를 삭제합니다.

    import {
      vertexAiIndexerRef,
      vertexAiRetrieverRef,
    } from '@genkit-ai/vertexai';
    

    index()retrieve()에 대한 참조를 전달합니다.

    await index({
      indexer: vertexAiIndexerRef({
        indexId: VECTOR_SEARCH_INDEX_ID,
      }),
      documents,
    });
    
    const res = await retrieve({
      retriever: vertexAiRetrieverRef({
        indexId: VECTOR_SEARCH_INDEX_ID,
      }),
      query: queryDocument,
    });
    

다음에 대한 코드 샘플을 참조하세요.