GoogleGenAIDocumentEmbedder
此组件计算的向量对于对文档集合执行 embedding 检索是必需的。在检索时,代表查询的向量将与文档的向量进行比较,以找到最相似或最相关的文档。
| pipeline 中的最常见位置 | 在索引管道中的DocumentWriter之前 |
| 必需的初始化变量 | "api_key": Google API 密钥。可以通过以下方式设置GOOGLE_API_KEY 或GEMINI_API_KEY 环境变量。 |
| 强制运行变量 | "documents": 要嵌入的文档列表 |
| 输出变量 | "documents": 文档列表(已添加 embedding) "meta": 元数据字典 |
| API 参考 | Google AI |
| GitHub 链接 | https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/google_genai |
概述
GoogleGenAIDocumentEmbedder 会用内容的嵌入来丰富文档的元数据。要嵌入字符串,您应该使用GoogleGenAITextEmbedder。
该组件支持以下 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_KEY 或GEMINI_API_KEY 环境变量。否则,您可以在初始化时通过Secret 和Secret.from_token 静态方法传递 API 密钥。
embedder = GoogleGenAIDocumentEmbedder(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 GoogleGenAIDocumentEmbedder
# set the environment variable (GOOGLE_API_KEY or GEMINI_API_KEY)
chat_generator = GoogleGenAIDocumentEmbedder()
Vertex AI (Application Default Credentials)
from haystack_integrations.components.embedders.google_genai import GoogleGenAIDocumentEmbedder
# Using Application Default Credentials (requires gcloud auth setup)
chat_generator = GoogleGenAIDocumentEmbedder(
api="vertex",
vertex_ai_project="my-project",
vertex_ai_location="us-central1",
)
Vertex AI (API 密钥认证)
from haystack_integrations.components.embedders.google_genai import GoogleGenAIDocumentEmbedder
# set the environment variable (GOOGLE_API_KEY or GEMINI_API_KEY)
chat_generator = GoogleGenAIDocumentEmbedder(api="vertex")
用法
Embedding 元数据
文本文档通常附带一组元数据。如果它们具有辨识度和语义意义,您可以将它们与文档文本一起 embedding,以提高检索效果。
您可以通过使用 Document Embedder 来做到这一点
from haystack import Document
from haystack_integrations.components.embedders.google_genai import GoogleGenAIDocumentEmbedder
doc = Document(content="some text", meta={"title": "relevant title", "page number": 18})
embedder = GoogleGenAIDocumentEmbedder(api_key=Secret.from_token("<your-api-key>"), meta_fields_to_embed=["title"])
docs_w_embeddings = embedder.run(documents=[doc])["documents"]
用法
单独使用
以下是您如何单独使用该组件。您需要通过 Secret 传入您的 Google API 密钥,或将其设置为名为GOOGLE_API_KEY 或GEMINI_API_KEY 的环境变量。以下示例假设您已设置环境变量。
from haystack import Document
from haystack_integrations.components.embedders.google_genai import GoogleGenAIDocumentEmbedder
doc = Document(content="I love pizza!")
document_embedder = GoogleGenAIDocumentEmbedder()
result = document_embedder.run([doc])
print(result['documents'][0].embedding)
# [0.017020374536514282, -0.023255806416273117, ...]
在 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.writers import DocumentWriter
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")]
indexing_pipeline = Pipeline()
indexing_pipeline.add_component("embedder", GoogleGenAIDocumentEmbedder())
indexing_pipeline.add_component("writer", DocumentWriter(document_store=document_store))
indexing_pipeline.connect("embedder", "writer")
indexing_pipeline.run({"embedder": {"documents": documents}})
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')
更新于 3 个月前
