Плагин Vertex AI предоставляет интерфейсы к нескольким службам AI:
- Генеративные модели искусственного интеллекта Google :
- Генерация текста Близнецов
- Генерация изображений Imagen2 и Imagen3
- Генерация встраивания текста
- Подмножество показателей оценки через API Vertex AI Rapid Evaluation API :
- Векторный поиск
Установка
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, регион , к которому вы хотите отправлять запросы Vertex API, и учетные данные вашего проекта Google Cloud.
Вы можете указать идентификатор своего проекта Google Cloud, задав
projectId
в конфигурацииvertexAI()
или установив переменную средыGCLOUD_PROJECT
. Если вы запускаете поток из среды Google Cloud (Cloud Functions, Cloud Run и т. д.), дляGCLOUD_PROJECT
автоматически устанавливается идентификатор проекта среды.Вы можете указать местоположение API, задав
location
в конфигурацииvertexAI()
или установив переменную средыGCLOUD_LOCATION
.Чтобы предоставить учетные данные API, вам необходимо настроить учетные данные Google Cloud Application по умолчанию.
Чтобы указать свои учетные данные:
Если вы запускаете поток из среды Google Cloud (Cloud Functions, Cloud Run и т. д.), это устанавливается автоматически.
В вашей локальной среде разработки сделайте это, запустив:
gcloud auth application-default login
- Информацию о других средах см. в документации по учетным данным приложения по умолчанию .
Кроме того, убедитесь, что учетной записи предоставлена роль IAM пользователя Vertex AI (
roles/aiplatform.user
). См. документацию по контролю доступа Vertex 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?',
});
Этот плагин также поддерживает обоснование текстовых ответов Gemini с помощью поиска Google или ваших собственных данных .
Пример:
await generate({
model: gemini15Flash,
prompt: ...,
config: {
googleSearchRetrieval: {
disableAttribution: true,
}
vertexRetrieval: {
datastore: {
projectId: 'your-cloud-project',
location: 'us-central1',
collection: 'your-collection',
},
disableAttribution: true,
}
}
})
Этот плагин также статически экспортирует ссылку на модель встраивания текста 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?',
});
Модель Imagen3 позволяет генерировать изображения из командной строки пользователя:
import { imagen3 } from '@genkit-ai/vertexai';
const response = await generate({
model: imagen3,
output: { format: 'media' },
prompt: 'a banana riding a bicycle',
});
return response.media();
Антропный Клод 3 в саду моделей Vertex AI
Если у вас есть доступ к моделям Claude 3 ( haiku , sonnet или opus ) в Vertex AI Model Garden, вы можете использовать их с 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?',
});
Лама 3.1 405b в саду моделей Vertex AI
Сначала вам нужно включить службу API Llama 3.1 в Vertex AI Model Garden.
Вот пример конфигурации для Llama 3.1 405b в плагине Vertex AI:
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, добавьте блок evaluation
в конфигурацию плагина 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',
},
},
],
},
}),
],
// ...
});
В приведенной выше конфигурации добавляются оценщики для метрик Safety
и ROUGE
. В примере показаны два подхода: метрика Safety
использует спецификацию по умолчанию, тогда как метрика ROUGE
предоставляет настраиваемую спецификацию, которая устанавливает тип румян на rougeLsum
.
Оба оценщика можно запустить с помощью команды genkit eval:run
с совместимым набором данных: то есть набором данных с полями output
и reference
. Оценщик Safety
также можно запустить с помощью команды genkit eval:flow -e vertexai/safety
поскольку для этого требуется только output
.
Индексаторы и ретриверы
Плагин Genkit Vertex AI включает реализации индексатора и ретривера, поддерживаемые службой векторного поиска Vertex AI.
(См. страницу генерации с расширенным поиском, чтобы узнать, как индексаторы и ретриверы используются в реализации RAG.)
Служба векторного поиска Vertex AI — это индекс документов, который работает вместе с выбранным вами хранилищем документов: хранилище документов содержит содержимое документов, а индекс векторного поиска Vertex AI содержит для каждого документа его векторное встраивание и ссылку на документ в хранилище документов. После того как ваши документы проиндексированы службой Vertex AI Vector Search, она может отвечать на поисковые запросы, создавая списки индексов в вашем хранилище документов.
Реализации индексатора и ретривера, предоставляемые плагином Vertex AI, используют Cloud Firestore или BigQuery в качестве хранилища документов. Плагин также включает в себя интерфейсы, которые вы можете реализовать для поддержки других хранилищ документов.
Чтобы использовать векторный поиск Vertex AI:
Выберите модель внедрения. Эта модель отвечает за создание векторных вложений из текста. Опытные пользователи могут использовать модель внедрения, оптимизированную для их конкретных наборов данных, но для большинства пользователей модель
text-embedding-004
от Vertex AI является хорошим выбором для английского текста, а модельtext-multilingual-embedding-002
хороша для многоязычного текста.В разделе «Векторный поиск» консоли Google Cloud создайте новый индекс. Наиболее важные настройки:
Размеры: укажите размерность векторов, создаваемых выбранной вами моделью внедрения. Модели
text-embedding-004
иtext-multilingual-embedding-002
создают векторы размером 768 измерений.Метод обновления: выберите потоковые обновления.
После создания индекса разверните его в стандартной (общедоступной) конечной точке.
Получите индексатор и средство извлечения документов для хранилища документов, которое вы хотите использовать:
Облачный пожарный магазин
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);
Большой запрос
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);
Другой
Для поддержки других хранилищ документов вы можете предоставить свои собственные реализации
DocumentRetriever
иDocumentIndexer
:const myDocumentRetriever: DocumentRetriever = async (neighbors: Neighbor[]) => { // Return the documents referenced by `neighbors`. // ... } const myDocumentIndexer: DocumentIndexer = async (documents: Document[]) => { // Add `documents` to storage. // ... }
Пример см. в разделе «Пример извлечения и индексатора плагинов Vertex AI с локальным файлом» .
Добавьте блок
vectorSearchOptions
в конфигурацию плагинаvertexAI
: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, }, ], }), ], });
Укажите средство внедрения, которое вы выбрали на первом шаге, а также индексатор и средство извлечения документов, созданное на предыдущем шаге.
Чтобы настроить плагин для использования индекса векторного поиска, созданного вами ранее, вам необходимо указать несколько значений, которые вы можете найти в разделе «Векторный поиск» консоли Google Cloud:
-
indexId
: указан на вкладке Индексы . -
indexEndpointId
: указан на вкладке «Конечные точки индекса» . -
deployedIndexId
иpublicDomainName
: перечислены на странице «Информация о развернутом индексе», которую можно открыть, щелкнув имя развернутого индекса на любой из вкладок, упомянутых ранее.
-
Теперь, когда все настроено, импортируйте ссылки на ретривер и индексатор из плагина:
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, });
См. примеры кода для:
- Вершинный векторный поиск + BigQuery
- Вершинный векторный поиск + Firestore
- Вершинный векторный поиск + собственная БД