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

VertexAITextEmbedder

此组件使用 VertexAI Embeddings API 中的模型来计算文本(例如查询)的嵌入。

🚧

弃用通知

此集成使用了已弃用的 google-generativeai SDK,该 SDK 将于 2025 年 8 月后停止支持。

我们建议改用新的 GoogleGenAITextEmbedder 集成。

pipeline 中的最常见位置在查询/RAG 管道中的 Retriever 之前进行嵌入
必需的初始化变量"model": 通过 VertexAI Embeddings API 使用的模型
强制运行变量“text”: 一个字符串
输出变量“embedding”: 一个浮点数列表
API 参考Google Vertex
GitHub 链接https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/google_vertex

概述

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

要开始使用VertexAITextEmbedder,请使用以下参数进行初始化:

  • model:支持的模型是
    • "text-embedding-004"
    • "text-embedding-005"
    • "textembedding-gecko-multilingual@001"
    • "text-multilingual-embedding-002"
    • "text-embedding-large-exp-03-07"
  • task_type:“RETRIEVAL_QUERY”是默认值。您可以在官方 Google 文档中找到所有任务类型。

身份验证

VertexAITextEmbedder 使用 Google Cloud Application Default Credentials (ADC) 进行身份验证。有关如何设置 ADC 的更多信息,请参阅 官方文档

请记住,使用有权访问已授权使用 Google Vertex AI 端点的项目的帐户至关重要。

您可以在GCP 资源管理器中找到您的项目 ID,或者通过在终端中运行gcloud projects list 来在本地找到。有关 gcloud CLI 的更多信息,请参阅其官方文档

用法

安装要使用此 Embedder,请安装 google-vertex-haystack 包。

pip install google-vertex-haystack

单独使用

from haystack_integrations.components.embedders.google_vertex import VertexAITextEmbedder

text_to_embed = "I love pizza!"

text_embedder = VertexAITextEmbedder(model="text-embedding-005")

print(text_embedder.run(text_to_embed))
# {'embedding': [-0.08127457648515701, 0.03399784862995148, -0.05116401985287666, ...]

在 pipeline 中

from haystack import Document
from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.embedders.google_vertex import VertexAITextEmbedder
from haystack_integrations.components.embedders.google_vertex import VertexAIDocumentEmbedder
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 = VertexAIDocumentEmbedder(model="text-embedding-005")
documents_with_embeddings = document_embedder.run(documents)['documents']
document_store.write_documents(documents_with_embeddings)

query_pipeline = Pipeline()
query_pipeline.add_component("text_embedder", VertexAITextEmbedder(model="text-embedding-005"))
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')