Trình bổ trợ Vertex AI cung cấp giao diện cho một số dịch vụ AI:
- Các mô hình AI tạo sinh của Google:
- Tạo văn bản trên Gemini
- Tạo hình ảnh Imagen2 và Imagen3
- Tạo văn bản nhúng
- Một số chỉ số đánh giá thông qua Quick Đánh giá API của Vertex AI:
- Tìm kiếm vectơ
Lắp đặt
npm i --save @genkit-ai/vertexai
Nếu muốn chạy cục bộ các luồng sử dụng trình bổ trợ này, bạn cũng cần có Đã cài đặt công cụ Google Cloud CLI.
Cấu hình
Để sử dụng trình bổ trợ này, hãy chỉ định trình bổ trợ đó khi bạn gọi configureGenkit()
:
import { vertexAI } from '@genkit-ai/vertexai';
export default configureGenkit({
plugins: [
vertexAI({ projectId: 'your-cloud-project', location: 'us-central1' }),
],
// ...
});
Trình bổ trợ này yêu cầu bạn chỉ định mã dự án trên Google Cloud, khu vực mà bạn muốn đưa ra yêu cầu Vertex API và dự án Google Cloud của bạn thông tin xác thực.
Bạn có thể chỉ định mã dự án Google Cloud bằng cách đặt
projectId
trong cấu hìnhvertexAI()
hoặc bằng cách đặt biến môi trườngGCLOUD_PROJECT
. Nếu bạn đang chạy flow từ một môi trường Google Cloud (Cloud Functions, Cloud Run, v.v.),GCLOUD_PROJECT
sẽ tự động được đặt thành mã dự án của môi trường đó.Bạn có thể chỉ định vị trí API bằng cách đặt
location
trong phần Cấu hìnhvertexAI()
hoặc bằng cách đặt môi trườngGCLOUD_LOCATION
biến.Để cung cấp thông tin đăng nhập API, bạn cần thiết lập Google Cloud Application Thông tin xác thực mặc định.
Cách chỉ định thông tin xác thực:
Nếu bạn đang chạy quy trình từ môi trường Google Cloud (Đám mây Hàm, Cloud Run, v.v.), các hàm này sẽ được đặt tự động.
Trên môi trường phát triển cục bộ, hãy thực hiện việc này bằng cách chạy:
gcloud auth application-default login
- Đối với các môi trường khác, hãy xem tài liệu về Thông tin xác thực mặc định của ứng dụng.
Ngoài ra, hãy đảm bảo tài khoản được cấp vai trò IAM của người dùng Vertex AI (
roles/aiplatform.user
). Xem chế độ kiểm soát quyền truy cập của Vertex AI tài liệu.
Cách sử dụng
Mô hình AI tạo sinh
Trình bổ trợ này xuất tham chiếu tĩnh đến các mô hình AI tạo sinh được hỗ trợ:
import { gemini15Flash, gemini15Pro, imagen2 } from '@genkit-ai/vertexai';
Bạn có thể sử dụng các tham chiếu này để chỉ định mô hình mà generate()
sử dụng:
const llmResponse = await generate({
model: gemini15Flash,
prompt: 'What should I do when I visit Melbourne?',
});
Trình bổ trợ này cũng hỗ trợ việc trả lời bằng văn bản Gemini dựa trên cơ sở Google Tìm kiếm hoặc dữ liệu của riêng bạn.
Ví dụ:
await generate({
model: gemini15Flash,
prompt: ...,
config: {
googleSearchRetrieval: {
disableAttribution: true,
}
vertexRetrieval: {
datastore: {
projectId: 'your-cloud-project',
location: 'us-central1',
collection: 'your-collection',
},
disableAttribution: true,
}
}
})
Trình bổ trợ này cũng xuất tĩnh một tham chiếu đến văn bản Gecko mô hình:
import { textEmbeddingGecko } from '@genkit-ai/vertexai';
Bạn có thể sử dụng tài liệu tham khảo này để chỉ định trình nhúng mà trình lập chỉ mục hoặc trình truy xuất sử dụng. Ví dụ: nếu bạn sử dụng Chroma DB:
configureGenkit({
plugins: [
chroma([
{
embedder: textEmbeddingGecko,
collectionName: 'my-collection',
},
]),
],
});
Hoặc bạn có thể tạo nhúng trực tiếp:
// import { embed, EmbedderArgument } from '@genkit-ai/ai/embedder';
const embedding = await embed({
embedder: textEmbeddingGecko,
content: 'How many widgets do you have in stock?',
});
Mô hình Imagen3 cho phép tạo hình ảnh theo câu lệnh của người dùng:
import { imagen3 } from '@genkit-ai/vertexai';
const response = await generate({
model: imagen3,
output: { format: 'media' },
prompt: 'a banana riding a bicycle',
});
return response.media();
Anthropic Claude 3 trên Vertex AI Model Garden
Nếu có quyền sử dụng mô hình CRO 3 (haiku, sonnet hoặc opus) trong Vertex AI Model Garden, bạn có thể sử dụng các mô hình đó với Genkit.
Dưới đây là cấu hình mẫu để bật các mô hình 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],
},
}),
],
});
Sau đó, hãy sử dụng các mô hình này dưới dạng mô hình thông thường:
const llmResponse = await generate({
model: claude3Sonnet,
prompt: 'What should I do when I visit Melbourne?',
});
Llama 3.1 405b trên Vertex AI Model Garden
Trước tiên, bạn cần bật Dịch vụ API Llama 3.1 trong Vertex AI Model Garden.
Dưới đây là cấu hình mẫu cho Llama 3.1 405b trong trình bổ trợ Vertex AI:
import { vertexAI, llama31 } from '@genkit-ai/vertexai';
export default configureGenkit({
plugins: [
vertexAI({
location: 'us-central1',
modelGarden: {
models: [llama31],
},
}),
],
});
Sau đó, sử dụng mô hình này như các mô hình thông thường:
const llmResponse = await generate({
model: llama31,
prompt: 'Write a function that adds two numbers together',
});
Người đánh giá
Để sử dụng người đánh giá của chương trình Đánh giá nhanh của Vertex AI, hãy thêm một khối evaluation
vào cấu hình trình bổ trợ 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',
},
},
],
},
}),
],
// ...
});
Cấu hình ở trên sẽ thêm các trình đánh giá cho chỉ số Safety
và ROUGE
. Ví dụ này cho thấy hai cách tiếp cận: chỉ số Safety
sử dụng quy cách mặc định, trong khi chỉ số ROUGE
cung cấp quy cách tuỳ chỉnh để đặt loại lộ trình thành rougeLsum
.
Bạn có thể chạy cả hai trình đánh giá bằng lệnh genkit eval:run
với một tập dữ liệu tương thích: tức là một tập dữ liệu có các trường output
và reference
. Bạn cũng có thể chạy trình đánh giá Safety
bằng lệnh genkit eval:flow -e vertexai/safety
vì lệnh này chỉ yêu cầu output
.
Trình lập chỉ mục và chó tha mồi
Trình bổ trợ Vertex AI của Genkit bao gồm các hoạt động triển khai cho trình lập chỉ mục và trình truy xuất do dịch vụ Vertex AI Vector Search hỗ trợ.
(Xem trang Tạo bằng tính năng truy xuất tăng cường để tìm hiểu cách sử dụng trình lập chỉ mục và trình truy xuất trong quá trình triển khai RAG.)
Dịch vụ Vertex AI Vector Search là một chỉ mục tài liệu hoạt động cùng với kho lưu trữ tài liệu mà bạn chọn: kho tài liệu chứa nội dung của tài liệu và chỉ mục Vertex AI Vector Search chứa (đối với mỗi tài liệu) việc nhúng vectơ và tham chiếu đến tài liệu trong kho tài liệu. Sau khi tài liệu của bạn được dịch vụ Vertex AI Vector Search lập chỉ mục, công cụ này có thể phản hồi các truy vấn tìm kiếm, tạo danh sách chỉ mục vào kho tài liệu của bạn.
Các hoạt động triển khai chỉ mục và trình truy xuất do trình bổ trợ Vertex AI cung cấp sử dụng Cloud Firestore hoặc BigQuery làm kho tài liệu. Trình bổ trợ này cũng bao gồm các giao diện mà bạn có thể triển khai để hỗ trợ các kho tài liệu khác.
Cách sử dụng tính năng Tìm kiếm vectơ của Vertex AI:
Chọn một mô hình nhúng. Mô hình này chịu trách nhiệm tạo vectơ mục nhúng từ văn bản. Người dùng nâng cao có thể sử dụng mô hình nhúng được tối ưu hoá cho tập dữ liệu cụ thể của mình, nhưng đối với hầu hết người dùng, Vertex AI Mô hình
text-embedding-004
là lựa chọn tốt cho văn bản tiếng Anh và Mô hìnhtext-multilingual-embedding-002
phù hợp với văn bản đa ngôn ngữ.Trong công cụ Tìm kiếm vectơ của bảng điều khiển Google Cloud, hãy tạo một chỉ mục mới. Quan trọng nhất cài đặt là:
Thứ nguyên: Chỉ định lượng chiều của các vectơ do bạn tạo ra mô hình nhúng đã chọn. Mô hình
text-embedding-004
vàtext-multilingual-embedding-002
tạo ra các vectơ có 768 chiều.Phương pháp cập nhật: Chọn bản cập nhật truyền trực tuyến.
Sau khi bạn tạo chỉ mục, hãy triển khai chỉ mục đó đến một điểm cuối (công khai) tiêu chuẩn.
Tải trình lập chỉ mục và truy xuất tài liệu cho kho tài liệu bạn muốn sử dụng:
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);
Khác
Để hỗ trợ các kho tài liệu khác, bạn có thể cung cấp cách triển khai
DocumentRetriever
vàDocumentIndexer
của riêng mình:const myDocumentRetriever: DocumentRetriever = async (neighbors: Neighbor[]) => { // Return the documents referenced by `neighbors`. // ... } const myDocumentIndexer: DocumentIndexer = async (documents: Document[]) => { // Add `documents` to storage. // ... }
Để biết ví dụ, hãy xem phần Trình truy xuất và lập chỉ mục trình bổ trợ Vertex AI mẫu bằng tệp cục bộ.
Thêm một khối
vectorSearchOptions
vào cấu hình trình bổ trợ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, }, ], }), ], });
Cung cấp trình nhúng mà bạn đã chọn ở bước đầu tiên, cũng như trình lập chỉ mục và trình truy xuất tài liệu mà bạn đã tạo ở bước trước.
Để định cấu hình trình bổ trợ sử dụng chỉ mục Tìm kiếm vectơ mà bạn đã tạo trước đó, bạn cần cung cấp một số giá trị. Bạn có thể tìm thấy các giá trị này trong mục Tìm kiếm vectơ của Google Cloud Console:
indexId
: được liệt kê trên thẻ Chỉ mụcindexEndpointId
: được liệt kê trên thẻ Điểm cuối chỉ mụcdeployedIndexId
vàpublicDomainName
: được liệt kê trên trang "Thông tin về chỉ mục đã triển khai". Bạn có thể mở trang này bằng cách nhấp vào tên của chỉ mục đã triển khai trên một trong các thẻ được đề cập ở trên
Giờ đây, mọi thứ đã được định cấu hình, hãy nhập thông tin tham chiếu đến trình truy xuất và lập chỉ mục từ trình bổ trợ:
import { vertexAiIndexerRef, vertexAiRetrieverRef, } from '@genkit-ai/vertexai';
Truyền tham chiếu đến
index()
vàretrieve()
:await index({ indexer: vertexAiIndexerRef({ indexId: VECTOR_SEARCH_INDEX_ID, }), documents, });
const res = await retrieve({ retriever: vertexAiRetrieverRef({ indexId: VECTOR_SEARCH_INDEX_ID, }), query: queryDocument, });
Xem mã mẫu cho:
- Tìm kiếm vectơ trên đỉnh + BigQuery
- Vertex Vector Search + Firestore
- Tìm kiếm vectơ đỉnh + cơ sở dữ liệu tuỳ chỉnh