Gemini
Milvus 通过 GeminiEmbeddingFunction 类与 Gemini 的模型集成。该类提供了使用预训练 Gemini 模型对文档和查询进行编码的方法,并返回与 Milvus 索引兼容的密集向量嵌入。要使用此功能,请通过在 Gemini 平台上创建账户来获取 API 密钥。
要使用此功能,请安装必要的依赖项:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
然后,实例化 GeminiEmbeddingFunction:
from pymilvus import model
gemini_ef = model.dense.GeminiEmbeddingFunction(
model_name='gemini-embedding-exp-03-07', # 指定模型名称
api_key='YOUR_API_KEY', # 提供您的 Gemini API 密钥
)
参数:
-
model_name (string)
用于编码的 Gemini 模型名称。有效选项为 gemini-embedding-exp-03-07(默认)、models/embedding-001 和 models/text-embedding-004。
-
api_key (string)
访问 Gemini API 的 API 密钥。
-
config (types.EmbedContentConfig) 嵌入模型的可选配置。
- 可以指定 output_dimensionality 为结果输出嵌入的数量。
- 可以指定 task_type 为特定任务生成优化的嵌入,节省时间和成本并提高性能。仅在 gemini-embedding-exp-03-07 模型中支持。
模型名称 | 维度 |
---|---|
gemini-embedding-exp-03-07 | 3072(默认),1536,768 |
models/embedding-001 | 768 |
models/text-embedding-004 | 768 |
任务类型 | 描述 |
---|---|
SEMANTIC_SIMILARITY | 用于生成优化以评估文本相似性的嵌入。 |
CLASSIFICATION | 用于生成优化以根据预设标签对文本进行分类的嵌入。 |
CLUSTERING | 用于生成优化以根据相似性对文本进行聚类的嵌入。 |
RETRIEVAL_DOCUMENT、RETRIEVAL_QUERY、QUESTION_ANSWERING 和 FACT_VERIFICATION | 用于生成优化用于文档搜索或信息检索的嵌入。 |
CODE_RETRIEVAL_QUERY | 用于基于自然语言查询检索代码块,例如排序数组或反转链表。代码块的嵌入使用 RETRIEVAL_DOCUMENT 计算。 |
要为文档创建嵌入,请使用 encode_documents() 方法:
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:", docs_embeddings)
# 打印嵌入的维度和形状
print("Dim:", gemini_ef.dim, docs_embeddings[0].shape)
预期输出类似于以下内容:
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,)
要为查询创建嵌入,请使用 encode_queries() 方法:
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = gemini_ef.encode_queries(queries)
# 打印嵌入
print("Embeddings:", query_embeddings)
# 打印嵌入的维度和形状
print("Dim", gemini_ef.dim, query_embeddings[0].shape)
预期输出类似于以下内容:
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,)