文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

GoogleGenAITextEmbedder

此组件使用 Google AI 嵌入模型将字符串转换为捕获其语义的向量。执行嵌入检索时,您可以使用此组件将查询转换为向量。然后,嵌入检索器会查找相似或相关的文档。

pipeline 中的最常见位置在查询/RAG 管道中的嵌入 检索器 之前
必需的初始化变量"api_key": Google API 密钥。可以使用以下方式设置GOOGLE_API_KEYGEMINI_API_KEY 环境变量。
强制运行变量"text": 字符串
输出变量"embedding": 浮点数列表

"meta": 元数据字典
API 参考Google AI
GitHub 链接https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/google_genai

概述

GoogleGenAITextEmbedder 将简单的字符串(如查询)嵌入到向量中。要嵌入文档列表,请使用 GoogleGenAIDocumentEmbedder,它会使用计算出的嵌入(也称为向量)来丰富文档。

该组件支持以下 Google AI 模型

  • text-embedding-004 (默认)
  • text-embedding-004-v2

要开始将此集成与 Haystack 一起使用,请使用以下命令安装它:

pip install google-genai-haystack

身份验证

Google Gen AI 与 Gemini Developer API 和 Vertex AI API 都兼容。

要将此组件与 Gemini Developer API 配合使用并获取 API 密钥,请访问Google AI Studio
要将此组件与 Vertex AI API 配合使用,请访问Google Cloud > Vertex AI

该组件默认使用GOOGLE_API_KEYGEMINI_API_KEY 环境变量。否则,您可以在初始化时通过SecretSecret.from_token 静态方法传递 API 密钥。

embedder = GoogleGenAITextEmbedder(api_key=Secret.from_token("<your-api-key>"))

以下示例显示了如何将该组件与 Gemini Developer API 和 Vertex AI API 结合使用。

Gemini Developer API (API 密钥认证)

from haystack_integrations.components.embedders.google_genai import GoogleGenAITextEmbedder

# set the environment variable (GOOGLE_API_KEY or GEMINI_API_KEY)
chat_generator = GoogleGenAITextEmbedder()

Vertex AI (Application Default Credentials)

from haystack_integrations.components.embedders.google_genai import GoogleGenAITextEmbedder

# Using Application Default Credentials (requires gcloud auth setup)
chat_generator = GoogleGenAITextEmbedder(
    api="vertex",
    vertex_ai_project="my-project",
    vertex_ai_location="us-central1",
)

Vertex AI (API 密钥认证)

from haystack_integrations.components.embedders.google_genai import GoogleGenAITextEmbedder

# set the environment variable (GOOGLE_API_KEY or GEMINI_API_KEY)
chat_generator = GoogleGenAITextEmbedder(api="vertex")

用法

单独使用

您可以通过以下方式单独使用该组件。您需要通过 Secret 传入您的 Google API 密钥,或将其设置为名为GOOGLE_API_KEYGEMINI_API_KEY 的环境变量。以下示例假设您已设置环境变量。

from haystack_integrations.components.embedders.google_genai import GoogleGenAITextEmbedder

text_to_embed = "I love pizza!"

text_embedder = GoogleGenAITextEmbedder()

print(text_embedder.run(text_to_embed))
# {'embedding': [0.017020374536514282, -0.023255806416273117, ...],
#  'meta': {'model': 'text-embedding-004',
#           'usage': {'prompt_tokens': 4, 'total_tokens': 4}}}

在 pipeline 中

from haystack import Document
from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.embedders.google_genai import GoogleGenAITextEmbedder
from haystack_integrations.components.embedders.google_genai import GoogleGenAIDocumentEmbedder
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever

document_store = InMemoryDocumentStore(embedding_similarity_function="cosine")

documents = [Document(content="My name is Wolfgang and I live in Berlin"),
             Document(content="I saw a black horse running"),
             Document(content="Germany has many big cities")]

document_embedder = GoogleGenAIDocumentEmbedder()
documents_with_embeddings = document_embedder.run(documents)['documents']
document_store.write_documents(documents_with_embeddings)

query_pipeline = Pipeline()
query_pipeline.add_component("text_embedder", GoogleGenAITextEmbedder())
query_pipeline.add_component("retriever", InMemoryEmbeddingRetriever(document_store=document_store))
query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")

query = "Who lives in Berlin?"

result = query_pipeline.run({"text_embedder":{"text": query}})

print(result['retriever']['documents'][0])

# Document(id=..., content: 'My name is Wolfgang and I live in Berlin')