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

HuggingFaceAPITextEmbedder

使用此组件通过各种 Hugging Face API 嵌入字符串。

pipeline 中的最常见位置在查询/RAG 管道中的嵌入 检索器 之前
必需的初始化变量"api_type": 要使用的 Hugging Face API 类型

"api_params": 一个包含以下键之一的字典

- model: Hugging Face 模型 ID。当api_typeSERVERLESS_INFERENCE_API 时必需。 -url: 推理终结点​​的 URL。当api_typeINFERENCE_ENDPOINTSTEXT_EMBEDDINGS_INFERENCE 时必需。.

"token": Hugging Face API 令牌。可以通过HF_API_TOKENHF_TOKEN 环境变量设置。
强制运行变量“text”: 一个字符串
输出变量“embedding”: 一个浮点数列表
API 参考Embedders (嵌入器)
GitHub 链接https://github.com/deepset-ai/haystack/blob/main/haystack/components/embedders/hugging_face_api_text_embedder.py

概述

HuggingFaceAPITextEmbedder 可用于通过不同的 Hugging Face API 嵌入字符串。

📘

此组件应用于嵌入纯文本。要嵌入文档列表,请使用 HuggingFaceAPIDocumentEmbedder

该组件默认使用HF_API_TOKEN 环境变量。否则,您可以在初始化时使用 token 传入 Hugging Face API 令牌——请参阅下面的代码示例。
令牌是必需的

  • 如果您使用无服务器推理 API,或者
  • 如果您使用推理终结点​​。

用法

与其他文本嵌入器类似,此组件允许添加前缀(和后缀)以包含指令。
有关更精细的细节,请参阅组件的 API 参考

单独使用

使用免费无服务器推理 API

以前称为(免费)Hugging Face 推理 API,此 API 允许您快速尝试 Hugging Face Hub 上托管的许多模型,将推理卸载到 Hugging Face 服务器。它有速率限制,不适合生产环境。

要使用此 API,您需要一个 免费的 Hugging Face 令牌
嵌入器期望modelapi_params.

from haystack.components.embedders import HuggingFaceAPITextEmbedder
from haystack.utils import Secret

text_embedder = HuggingFaceAPITextEmbedder(api_type="serverless_inference_api",
                                           api_params={"model": "BAAI/bge-small-en-v1.5"},
                                           token=Secret.from_token("<your-api-key>"))

print(text_embedder.run("I love pizza!"))

# {'embedding': [0.017020374536514282, -0.023255806416273117, ...]}

使用付费推理终结点​​

在这种情况下,Hugging Face 会部署模型的私有实例,您通常按小时付费。

要了解如何启动推理终结点​​,请访问 Hugging Face 文档

此外,在这种情况下,您需要提供您的 Hugging Face 令牌。
嵌入器期望url 的您的终结点​​在api_params.

from haystack.components.embedders import HuggingFaceAPITextEmbedder
from haystack.utils import Secret
text_embedder = HuggingFaceAPITextEmbedder(api_type="inference_endpoints",
                                           api_params={"model": "BAAI/bge-small-en-v1.5"},
                                           token=Secret.from_token("<your-api-key>"))

print(text_embedder.run("I love pizza!"))

# {'embedding': [0.017020374536514282, -0.023255806416273117, ...]}

使用自托管文本嵌入推理 (TEI)

Hugging Face Text Embeddings Inference 是一个用于高效部署和提供文本嵌入模型的工具包。

虽然它支持无服务器推理 API 和推理终结点​​的最新版本,但也可以通过 Docker 轻松地在本地使用。

例如,您可以如下运行 TEI 容器

model=BAAI/bge-large-en-v1.5
revision=refs/pr/5
volume=$PWD/data # share a volume with the Docker container to avoid downloading weights every run

docker run --gpus all -p 8080:80 -v $volume:/data --pull always ghcr.io/huggingface/text-embeddings-inference:1.2 --model-id $model --revision $revision

有关更多信息,请参阅 官方 TEI 仓库

嵌入器期望url 的您的 TEI 实例在api_params.

from haystack.components.embedders import HuggingFaceAPITextEmbedder
from haystack.utils import Secret

text_embedder = HuggingFaceAPITextEmbedder(api_type="text_embeddings_inference",
                                           api_params={"url": "https://:8080"})

print(text_embedder.run("I love pizza!"))

# {'embedding': [0.017020374536514282, -0.023255806416273117, ...],

在 pipeline 中

from haystack import Document
from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.embedders import HuggingFaceAPITextEmbedder, HuggingFaceAPIDocumentEmbedder
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 = HuggingFaceAPIDocumentEmbedder(api_type="serverless_inference_api",
				                                           api_params={"model": "BAAI/bge-small-en-v1.5"})
documents_with_embeddings = document_embedder.run(documents)['documents']
document_store.write_documents(documents_with_embeddings)

text_embedder = HuggingFaceAPITextEmbedder(api_type="serverless_inference_api",
                                           api_params={"model": "BAAI/bge-small-en-v1.5"})

query_pipeline = Pipeline()
query_pipeline.add_component("text_embedder", text_embedder)
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', ...)

相关链接

在我们的 API 参考中查看参数详情