Google Vertex AI
入门
要开始使用,请按照 Vertex AI Gemini 集成教程 的 入门 部分中概述的步骤创建
Google Cloud Platform 账户并建立一个可以访问 Vertex AI API 的新项目。
添加依赖
将以下依赖项添加到您项目的 pom.xml 中:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-vertex-ai</artifactId>
<version>1.0.0-beta3</version>
</dependency>
或项目的 build.gradle 中:
implementation 'dev.langchain4j:langchain4j-vertex-ai:1.0.0-beta3'
尝试示例代码:
PROJECT_ID 字段表示您在创建新 Google Cloud 项目时设置的变量。
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.output.Response;
import dev.langchain4j.model.vertexai.VertexAiEmbeddingModel;
public class VertexAiEmbeddingModelExample {
private static final String PROJECT_ID = "YOUR-PROJECT-ID";
private static final String MODEL_NAME = "textembedding-gecko@latest";
public static void main(String[] args) {
EmbeddingModel embeddingModel = VertexAiEmbeddingModel.builder()
.project(PROJECT_ID)
.location("us-central1")
.endpoint("us-central1-aiplatform.googleapis.com:443")
.publisher("google")
.modelName(MODEL_NAME)
.build();
Response<Embedding> response = embeddingModel.embed("你好,你好吗?");
Embedding embedding = response.content();
int dimension = embedding.dimension(); // 768
float[] vector = embedding.vector(); // [-0.06050122, -0.046411075, ...
System.out.println(dimension);
System.out.println(embedding.vectorAsList());
}
}
可用的嵌入模型
| 英语模型 | 多语言模型 | 多模态嵌入 |
|---|---|---|
textembedding-gecko@001 | textembedding-gecko-multilingual@001 | multimodalembedding |
textembedding-gecko@003 | text-multilingual-embedding-002 | |
text-embedding-004 |
带有 @latest 后缀的模型名称引用模型的最新版本。
默认情况下,大多数嵌入模型输出 768 维向量嵌入(除了接受可配置较低维度的"套娃"模型)。
API 每个段接受最多 2,048 个输入令牌进行嵌入。
您最多可以发送 250 个文本段。
当您同时请求嵌入超过 250 个段时,VertexAiEmbeddingModel 类会自动透明地将请求分批处理。
嵌入 API 每次调用限制总 共 20,000 个令牌(所有段)。当达到该限制时,VertexAiEmbeddingModel 将再次批处理请求以避免达到该限制。
配置嵌入模型
EmbeddingModel embeddingModel = VertexAiEmbeddingModel.builder()
.project(PROJECT_ID)
.location("us-central1")
.endpoint("us-central1-aiplatform.googleapis.com:443") // 可选
.publisher("google")
.modelName(MODEL_NAME)
.maxRetries(3) // 默认为 3
.maxSegmentsPerBatch(250) // 每批最多 250 个段
.maxTokensPerBatch(2048) // 每个段最多 2048 个令牌
.taskType() // 请参阅下面不同的任务类型
.titleMetadataKey() // 对于 RETRIEVAL_DOCUMENT 任务,您可以为文本段指定标题
// 以识别其文档来源
.autoTruncate(false) // 默认为 false:截断长度超过 2,048 个输入令牌的段
.outputDimensionality(512) // 对于支持不同输出向量维度的模型
.build();
嵌入任务类型
嵌入模型可用于不同的用例。 要获得更好的嵌入值,您可以在以下任务中指定一个_任务_:
RETRIEVAL_QUERYRETRIEVAL_DOCUMENTSEMANTIC_SIMILARITYCLASSIFICATIONCLUSTERINGQUESTION_ANSWERINGFACT_VERIFICATIONCODE_RETRIEVAL_QUERY
查看支持的模型列表。