Plugin Vertex AI menyediakan antarmuka ke beberapa layanan AI:
- Model AI generatif Google:
- Pembuatan teks Gemini
- Pembuatan gambar Imagen2
- Pembuatan embedding teks
- Sebagian metrik evaluasi melalui Rapid Evaluation API Vertex AI:
- Penelusuran Vektor
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 konfigurasivertexAI()
atau dengan menetapkan lingkunganGCLOUD_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 KonfigurasivertexAI()
atau dengan menetapkan lingkunganGCLOUD_LOCATION
variabel.Untuk memberikan kredensial API, Anda perlu menyiapkan Kredensial Default Aplikasi Google Cloud.
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
- Untuk lingkungan lainnya, lihat dokumen Kredensial Default Aplikasi.
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:
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 Modeltext-multilingual-embedding-002
cocok untuk teks multibahasa.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 Modeltext-multilingual-embedding-002
menghasilkan vektor 768 dimensi kustom.Metode update: Pilih update streaming.
Setelah Anda membuat indeks, deploy ke endpoint standar (publik).
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
danDocumentIndexer
: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.
Tambahkan blok
vectorSearchOptions
ke konfigurasi pluginvertexAI
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 IndexesindexEndpointId
: tercantum di tab Index EndpointsdeployedIndexId
danpublicDomainName
: tercantum di "Indeks yang di-deploy " yang dapat dibuka dengan mengklik nama indeks yang di-deploy pada salah satu tab yang disebutkan sebelumnya
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()
danretrieve()
: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: