Plugin Vertex AI

Plugin Vertex AI menyediakan antarmuka ke beberapa layanan AI:

Penginstalan

npm i --save @genkit-ai/vertexai

Jika ingin menjalankan alur yang menggunakan plugin ini secara lokal, Anda juga memerlukan Google Cloud CLI tool.

Konfigurasi

Untuk menggunakan plugin ini, tentukan saat Anda memanggil configureGenkit():

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

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

Plugin ini mengharuskan Anda menentukan project ID Google Cloud, region tempat Anda ingin membuat permintaan Vertex API, dan kredensial project Google Cloud Anda.

  • Anda dapat menentukan ID project Google Cloud dengan menyetel projectId di konfigurasi vertexAI() atau dengan menetapkan lingkungan GCLOUD_PROJECT variabel. Jika Anda menjalankan alur dari lingkungan Google Cloud (Cloud Functions, Cloud Run, dan sebagainya), GCLOUD_PROJECT secara otomatis disetel ke project ID lingkungan.

  • Anda dapat menentukan lokasi API dengan menyetel location di Konfigurasi vertexAI() atau dengan menetapkan lingkungan GCLOUD_LOCATION variabel.

  • Untuk memberikan kredensial API, Anda perlu menyiapkan Kredensial Default Aplikasi Google Cloud.

    1. Untuk menentukan kredensial Anda:

      • Jika Anda menjalankan flow dari lingkungan Google Cloud (Cloud Functions, Cloud Run, dan sebagainya), kredensial tersebut ditetapkan secara otomatis.

      • Di lingkungan pengembangan lokal Anda, lakukan hal ini dengan menjalankan:

      gcloud auth application-default login
      
    2. Selain itu, pastikan akun diberi peran IAM Vertex AI User (roles/aiplatform.user). Lihat dokumen kontrol akses Vertex AI.

Penggunaan

Model AI Generatif

Plugin ini secara statis mengekspor referensi ke model AI generatif yang didukungnya:

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

Anda dapat menggunakan referensi ini untuk menentukan model mana yang digunakan generate():

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

Plugin ini juga mengekspor referensi ke penyematan teks Gecko secara statis model:

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

Anda dapat menggunakan referensi ini untuk menentukan sematan mana dari pengindeks atau retriever pengguna. Misalnya, jika Anda menggunakan Chroma DB:

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

Atau Anda dapat membuat embedding secara langsung:

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

Anthropic Claude 3 di Vertex AI Model Garden

Jika Anda memiliki akses ke model Claude 3 (haiku, sonnet, atau opus) di Vertex AI Model Garden, Anda dapat menggunakannya dengan Genkit.

Berikut adalah contoh konfigurasi untuk mengaktifkan model 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],
      },
    }),
  ],
});

Kemudian gunakan sebagai model reguler:

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

Llama 3.1 405b di Vertex AI Model Garden

Pertama, Anda harus mengaktifkan Llama 3.1 API Service di Vertex AI Model Garden.

Berikut adalah contoh konfigurasi untuk Llama 3.1 405b di plugin Vertex AI:

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

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

Kemudian gunakan sebagai model reguler:

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

Evaluator

Untuk menggunakan evaluator dari Vertex AI Rapid Evaluation, tambahkan blok evaluation ke konfigurasi plugin vertexAI Anda.

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',
            },
          },
        ],
      },
    }),
  ],
  // ...
});

Konfigurasi di atas menambahkan evaluator untuk metrik Safety dan ROUGE. Contoh ini menunjukkan dua pendekatan - metrik Safety menggunakan spesifikasi default, sedangkan metrik ROUGE memberikan spesifikasi yang disesuaikan yang menetapkan jenis rouge ke rougeLsum.

Kedua evaluator dapat dijalankan menggunakan perintah genkit eval:run dengan set data yang kompatibel: yaitu set data dengan kolom output dan reference. Evaluator Safety juga dapat dijalankan menggunakan perintah genkit eval:flow -e vertexai/safety karena hanya memerlukan output.

Pengindeks dan pengambil

Plugin Genkit Vertex AI menyertakan implementasi pengindeks dan retriever didukung oleh layanan Vertex AI Vector Search.

(Lihat halaman Pembuatan yang ditingkatkan untuk mempelajari cara pengindeks dan retriever digunakan dalam implementasi RAG.)

Layanan Vertex AI Vector Search adalah indeks dokumen yang berfungsi bersama penyimpanan dokumen pilihan Anda: penyimpanan dokumen berisi konten dari dokumen, dan indeks Vertex AI Vector Search berisi, untuk setiap dokumen, embedding vektornya dan sebuah referensi ke dokumen di penyimpanan dokumen. Setelah dokumen Anda diindeks oleh layanan Vertex AI Vector Search, merespons kueri penelusuran, menghasilkan daftar indeks ke penyimpanan dokumen Anda.

Implementasi pengindeks dan pengambil yang disediakan oleh plugin Vertex AI menggunakan menggunakan Cloud Firestore atau BigQuery sebagai penyimpanan dokumen. Plugin ini juga mencakup antarmuka yang dapat Anda implementasikan untuk mendukung penyimpanan dokumen lainnya.

Untuk menggunakan Vertex AI Vector Search:

  1. Pilih model penyematan. Model ini bertanggung jawab untuk membuat vektor embedding dari teks. Pengguna lanjutan mungkin menggunakan model penyematan yang dioptimalkan untuk set data khusus mereka, tetapi bagi sebagian besar pengguna, Model text-embedding-004 adalah pilihan yang baik untuk teks bahasa Inggris dan Model text-multilingual-embedding-002 cocok untuk teks multibahasa.

  2. Di Vector Search di Konsol Google Cloud, buat indeks baru. Yang paling penting setelannya adalah:

    • Dimensi: Menentukan dimensialitas vektor yang dihasilkan oleh model embedding yang dipilih. text-embedding-004 dan Model text-multilingual-embedding-002 menghasilkan vektor 768 dimensi kustom.

    • Metode update: Pilih update streaming.

    Setelah Anda membuat indeks, deploy ke endpoint standar (publik).

  3. Dapatkan pengindeks dokumen dan retriever untuk penyimpanan dokumen yang ingin Anda gunakan:

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

    Lainnya

    Untuk mendukung penyimpanan dokumen lainnya, Anda dapat memberikan implementasi Anda sendiri dari DocumentRetriever dan DocumentIndexer:

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

    Sebagai contoh, lihat Contoh Pengambil dan Pengindeks Plugin Vertex AI dengan File Lokal.

  4. Tambahkan blok vectorSearchOptions ke konfigurasi plugin vertexAI Anda:

    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,
            },
          ],
        }),
      ],
    });
    

    Berikan sematan yang Anda pilih pada langkah pertama dan pengindeks dokumen dan retriever yang Anda buat di langkah sebelumnya.

    Untuk mengonfigurasi plugin agar menggunakan indeks Vector Search yang Anda buat sebelumnya, Anda perlu menyediakan beberapa nilai, yang dapat Anda temukan di kolom Vector Search bagian Konsol Google Cloud:

    • indexId: tercantum di tab Indexes
    • indexEndpointId: tercantum di tab Index Endpoints
    • deployedIndexId dan publicDomainName: tercantum di "Indeks yang di-deploy " yang dapat dibuka dengan mengklik nama indeks yang di-deploy pada salah satu tab yang disebutkan sebelumnya
  5. Sekarang setelah semuanya dikonfigurasi, pilih {i>import retriever<i} dan {i>indexer<i} dari plugin:

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

    Teruskan referensi ke index() dan retrieve():

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

Lihat contoh kode untuk: