跳到主要内容
版本:v2.5.x

Gemini

Milvus 通过 GeminiEmbeddingFunction 类与 Gemini 的模型集成。该类提供使用预训练的 Gemini 模型对文档和查询进行编码的方法,并将嵌入作为与 Milvus 索引兼容的稠密向量返回。要使用该功能,请通过在 Gemini 平台上创建账户从 Gemini 获取 API 密钥。

要使用此功能,请安装必要的依赖项:

Shell
pip install --upgrade pymilvus
pip install "pymilvus[model]"

然后,实例化 GeminiEmbeddingFunction

Python
from pymilvus import model

gemini_ef = model.dense.GeminiEmbeddingFunction(
model_name='gemini-embedding-exp-03-07', # Specify the model name
api_key='YOUR_API_KEY', # Provide your OpenAI API key
)

参数

  • model_name*(字符串)*

用于编码的 Gemini 模型名称。可选值包括 gemini-embedding-exp-03-07 (默认)、models/embedding-001models/text-embedding-004。有关可用模型的完整列表,请参阅 Gemini 官方文档

  • api_key*(字符串)*

访问 Gemini API 的 API 密钥。

  • config*(type.EmbedContentConfig*)Embedding 模型的可选配置。

  • output_dimensionality 可以指定输出嵌入的数量。

  • 可以指定 task_type,以便为特定任务生成优化的 Embedding 模型,从而节省时间和成本并提高性能。仅支持 gemini-embedding-exp-03-07 模型。

模型名称尺寸
gemini-embedding-exp-03-073072(默认)、1536、768
models/embedding-001768
models/text-embedding-004768
任务类型说明
SEMANTIC_SIMILARITY用于生成针对文本相似度评估优化的 Embedding。
CLASSIFICATION用于生成针对预设标签文本分类优化的 Embedding。
CLUSTERING用于生成针对文本相似度聚类优化的 Embedding。
RETRIEVAL_DOCUMENT、RETRIEVAL_QUERY、QUESTION_ANSWERING 和 FACT_VERIFICATION用于生成针对文档搜索或信息检索优化的 Embedding。
CODE_RETRIEVAL_QUERY用于根据自然语言查询检索代码块,如数组排序或链表反向。代码块的 Embedding 使用 RETRIEVAL_DOCUMENT 计算。

要为文档创建 Embedding,请使用 encode_documents() 方法:

Python
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]

docs_embeddings = gemini_ef.encode_documents(docs)

# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", gemini_ef.dim, docs_embeddings[0].shape)

预期输出类似于下图:

Text
Embeddings: [array([-0.00894029,  0.00573813,  0.013351  , ..., -0.00042766,
-0.00603091, -0.00341043], shape=(3072,)), array([ 0.00222347, 0.03725113, 0.01152256, ..., 0.01047272,
-0.01701597, 0.00565377], shape=(3072,)), array([ 0.00661134, 0.00232328, -0.01342973, ..., -0.00514429,
-0.02374139, -0.00701721], shape=(3072,))]
Dim: 3072 (3072,)

要为查询创建 Embedding,请使用 encode_queries() 方法:

Python
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]

query_embeddings = gemini_ef.encode_queries(queries)

# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension and shape of embeddings
print("Dim", gemini_ef.dim, query_embeddings[0].shape)

预期输出类似于下面的内容:

Text
Embeddings: [array([-0.02066572,  0.02459551,  0.00707774, ...,  0.00259341,
-0.01797572, -0.00626168], shape=(3072,)), array([ 0.00674969, 0.03023903, 0.01230692, ..., 0.00160009,
-0.01710967, 0.00972728], shape=(3072,))]
Dim 3072 (3072,)