Wtyczka Vertex AI udostępnia interfejsy do kilku usług AI:
- Modele generatywnej AI od Google:
- Generowanie tekstu przez Gemini
- Generowanie obrazu Imagen2
- Generowanie wektora dystrybucyjnego tekstu
- Zbiór wskaźników oceny za pomocą interfejsu Vertex AI Rapid Evaluation API:
- BLEU (w języku angielskim)
- ROUGE
- Płynność
- Bezpieczeństwo
- Zmienialność
- Jakość podsumowania
- Przydatność podsumowania
- Szczegółowość streszczenia
- Wyszukiwanie wektorowe
Instalacja
npm i --save @genkit-ai/vertexai
Jeśli chcesz lokalnie uruchamiać przepływy korzystające z tej wtyczki, musisz też dodać Zainstalowano narzędzie wiersza poleceń Google Cloud.
Konfiguracja
Aby używać tej wtyczki, określ ją, gdy wywołujesz configureGenkit()
:
import { vertexAI } from '@genkit-ai/vertexai';
export default configureGenkit({
plugins: [
vertexAI({ projectId: 'your-cloud-project', location: 'us-central1' }),
],
// ...
});
Wtyczka wymaga podania identyfikatora projektu Google Cloud, region [region] do których chcesz wysyłać żądania do interfejsu Vertex API, a Twój projekt Google Cloud dane logowania.
Możesz określić identyfikator projektu Google Cloud przez ustawienie
projectId
w konfiguracjęvertexAI()
lub przez ustawienie środowiskaGCLOUD_PROJECT
. Jeśli uruchamiasz przepływ ze środowiska Google Cloud (Cloud Funkcje, Cloud Run itp.), w poluGCLOUD_PROJECT
jest automatycznie ustawiona wartość identyfikator projektu środowiska.Możesz określić lokalizację interfejsu API poprzez ustawienie
location
wvertexAI()
lub przez ustawienie środowiskaGCLOUD_LOCATION
.Aby podać dane logowania do interfejsu API, musisz skonfigurować aplikację Google Cloud Domyślne dane logowania.
Aby podać dane logowania:
Jeśli uruchamiasz przepływ ze środowiska Google Cloud (Cloud Functions, Cloud Run itd.), to ustawienie jest ustawiane automatycznie.
W lokalnym środowisku programistycznym uruchom to polecenie:
gcloud auth application-default login
- W przypadku innych środowisk zapoznaj się z sekcją Domyślne dane logowania aplikacji. dokumenty.
Sprawdź też, czy do konta została przypisana rola użytkownika Vertex AI (
roles/aiplatform.user
). Zobacz kontrolę dostępu Vertex AI dokumenty.
Wykorzystanie
Modele generatywnej AI
Ta wtyczka statycznie eksportuje odwołania do obsługiwanych przez nią modeli generatywnej AI:
import { gemini15Flash, gemini15Pro, imagen2 } from '@genkit-ai/vertexai';
Korzystając z tych odwołań, możesz określić, którego modelu używa generate()
:
const llmResponse = await generate({
model: gemini15Flash,
prompt: 'What should I do when I visit Melbourne?',
});
Ta wtyczka statycznie eksportuje też odniesienie do osadzania tekstu geko model:
import { textEmbeddingGecko } from '@genkit-ai/vertexai';
Za pomocą tego odwołania możesz określić, który komponent osadzający, a także używający narzędzi do pobierania, zastosowań. Jeśli na przykład używasz bazy danych Chroma:
configureGenkit({
plugins: [
chroma([
{
embedder: textEmbeddingGecko,
collectionName: 'my-collection',
},
]),
],
});
Wektor dystrybucyjny możesz też wygenerować bezpośrednio:
// import { embed, EmbedderArgument } from '@genkit-ai/ai/embedder';
const embedding = await embed({
embedder: textEmbeddingGecko,
content: 'How many widgets do you have in stock?',
});
Antropikalny Claude 3 w bazie modeli Vertex AI
Jeśli masz dostęp do modeli Claude 3 (haiku, sonnet lub opus) w bazie modeli Vertex AI, możesz ich używać w połączeniu z Genkit.
Przykładowa konfiguracja umożliwiająca włączanie modeli bazy modeli Vertex AI:
import {
vertexAI,
claude3Haiku,
claude3Sonnet,
claude3Opus,
} from '@genkit-ai/vertexai';
export default configureGenkit({
plugins: [
vertexAI({
location: 'us-central1',
modelGarden: {
models: [claude3Haiku, claude3Sonnet, claude3Opus],
},
}),
],
});
Następnie użyj ich jako zwykłych modeli:
const llmResponse = await generate({
model: claude3Sonnet,
prompt: 'What should I do when I visit Melbourne?',
});
Llama 3.1 405b w bazie modeli Vertex AI
Najpierw musisz włączyć usługę interfejsu API Llama 3.1 w bazie modeli Vertex AI.
Przykładowa konfiguracja Llama 3.1 405b we wtyczce Vertex AI:
import { vertexAI, llama31 } from '@genkit-ai/vertexai';
export default configureGenkit({
plugins: [
vertexAI({
location: 'us-central1',
modelGarden: {
models: [llama31],
},
}),
],
});
Następnie użyj go jako zwykłych modeli:
const llmResponse = await generate({
model: llama31,
prompt: 'Write a function that adds two numbers together',
});
Weryfikatorzy
Aby korzystać z weryfikatorów z Vertex AI Rapid Evaluation, dodaj blok evaluation
do konfiguracji wtyczki vertexAI
.
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',
},
},
],
},
}),
],
// ...
});
Powyższa konfiguracja dodaje weryfikatora wskaźników Safety
i ROUGE
. Przykład pokazuje 2 podejścia – dane Safety
korzystają ze specyfikacji domyślnej, a dane ROUGE
zawierają specyfikację niestandardową, która ustawia typ wskaźnika na rougeLsum
.
Oba weryfikatory można uruchomić za pomocą polecenia genkit eval:run
ze zgodnym zbiorem danych, czyli ze zbiorem danych z polami output
i reference
. Weryfikator Safety
można też uruchomić za pomocą polecenia genkit eval:flow -e vertexai/safety
, ponieważ wymaga ono tylko output
.
Moduły indeksujące i moduły do pobierania
Wtyczka Genkit Vertex AI zawiera implementacje indeksera i narzędzia do pobierania korzysta z usługi wyszukiwania wektorowego Vertex AI.
(Informacje o tym, jak roboty indeksujące mogą działać, znajdziesz na stronie Generowanie rozszerzonego przez wyszukiwanie a w implementacji RAG są używane.
Usługa wyszukiwania wektorowego Vertex AI to indeks dokumentów, który działa równolegle wybrany magazyn dokumentów: magazyn dokumentów zawiera treść dokumentów, a indeks wyszukiwania wektorowego Vertex AI zawiera dla każdego dokumentu i odwołania do dokumentu w magazynie dokumentów. Po zindeksowaniu dokumentów przez usługę Vertex AI Vector Search może w odpowiedzi na zapytania, tworząc listy indeksów do magazynu dokumentów.
Implementacje indeksowania i pobierania udostępniane przez wtyczkę Vertex AI używają Cloud Firestore lub BigQuery jako magazyn dokumentów. Wtyczka zawiera interfejsy, które można wdrożyć w celu obsługi innych magazynów dokumentów.
Aby użyć wyszukiwania wektorowego Vertex AI:
Wybierz model wektora dystrybucyjnego. Ten model odpowiada za tworzenie wektorów wektory dystrybucyjne z tekstu. Zaawansowani użytkownicy mogą używać modelu umieszczania zoptymalizowanego dla konkretnych zbiorów danych. Jednak dla większości użytkowników Vertex AI Model
text-embedding-004
to dobry wybór w przypadku tekstu w języku angielskim i Modeltext-multilingual-embedding-002
dobrze sprawdza się w przypadku tekstu wielojęzycznych.za pomocą Wyszukiwania wektorowego, konsoli Google Cloud, utwórz nowy indeks. Najważniejsze ustawienia:
Wymiary: określ wymiarowość wektorów tworzonych przez wybranego modelu umieszczania.
text-embedding-004
i Modeletext-multilingual-embedding-002
generują wektory 768 wymiarów.Metoda aktualizacji: wybierz aktualizacje strumieniowe.
Po utworzeniu indeksu wdróż go w standardowym (publicznym) punkcie końcowym.
Pobierz moduł indeksujący i pobierający dokumenty dla magazynu dokumentów, którego chcesz używać:
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);
Inne
Aby obsługiwać inne magazyny dokumentów, możesz udostępnić własne implementacje z
DocumentRetriever
iDocumentIndexer
:const myDocumentRetriever: DocumentRetriever = async (neighbors: Neighbor[]) => { // Return the documents referenced by `neighbors`. // ... } const myDocumentIndexer: DocumentIndexer = async (documents: Document[]) => { // Add `documents` to storage. // ... }
Przykład znajdziesz w artykule Przykładowe narzędzie do pobierania i indeksowania wtyczek Vertex AI z plikiem lokalnym.
Dodaj blok
vectorSearchOptions
do konfiguracji wtyczkivertexAI
: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, }, ], }), ], });
Podaj komponent do umieszczenia wybrany w pierwszym kroku oraz narzędzie indeksujące dokumenty oraz retrievera utworzonego w poprzednim kroku.
Aby skonfigurować wtyczkę do korzystania z utworzonego wcześniej indeksu wyszukiwania wektorowego, Podaj kilka wartości, które znajdziesz w Wyszukiwarce wektorowej w konsoli Google Cloud:
indexId
: dostępne na karcie IndeksyindexEndpointId
: wymienione na karcie Punkty końcowe indeksudeployedIndexId
ipublicDomainName
: wymienione w indeksie „Wdrożony indeks” info” stronę, którą można otworzyć, klikając nazwę wdrożonego indeksu na jednej ze wspomnianych wcześniej kart
Wszystko jest już skonfigurowane, możesz więc przejść do pobierania programów do pobierania plików i odwołań do indeksujących z wtyczki:
import { vertexAiIndexerRef, vertexAiRetrieverRef, } from '@genkit-ai/vertexai';
Przekaż odniesienia do
index()
iretrieve()
:await index({ indexer: vertexAiIndexerRef({ indexId: VECTOR_SEARCH_INDEX_ID, }), documents, });
const res = await retrieve({ retriever: vertexAiRetrieverRef({ indexId: VECTOR_SEARCH_INDEX_ID, }), query: queryDocument, });
Zobacz przykładowe fragmenty kodu:
- Wyszukiwanie wektorowe Vertex + BigQuery
- Wyszukiwanie wektorowe Vertex + Firestore
- Wyszukiwanie wektorowe Vertex + niestandardowa baza danych