为文档添加基于图像的嵌入。
模块 haystack_experimental.components.embedders.image.sentence_transformers_doc_image_embedder
SentenceTransformersDocumentImageEmbedder
一个组件,用于使用 Sentence Transformers 模型根据图像计算文档嵌入。
每个 Document 的嵌入存储在Document 的 embedding 字段中。
使用示例
from haystack import Document
from haystack_experimental.components.embedders.image import SentenceTransformersDocumentImageEmbedder
embedder = SentenceTransformersDocumentImageEmbedder(model="sentence-transformers/clip-ViT-B-32")
embedder.warm_up()
documents = [
Document(content="A photo of a cat", meta={"file_path": "cat.jpg"}),
Document(content="A photo of a dog", meta={"file_path": "dog.jpg"}),
]
result = embedder.run(documents=documents)
documents_with_embeddings = result["documents"]
print(documents_with_embeddings)
# [Document(id=...,
# content='A photo of a cat',
# meta={'file_path': 'cat.jpg',
# 'embedding_source': {'type': 'image', 'file_path_meta_field': 'file_path'}},
# embedding=vector of size 512),
# ...]
SentenceTransformersDocumentImageEmbedder.__init__
def __init__(*,
file_path_meta_field: str = "file_path",
root_path: Optional[str] = None,
model: str = "sentence-transformers/clip-ViT-B-32",
device: Optional[ComponentDevice] = None,
token: Optional[Secret] = Secret.from_env_var(
["HF_API_TOKEN", "HF_TOKEN"], strict=False),
batch_size: int = 32,
progress_bar: bool = True,
normalize_embeddings: bool = False,
trust_remote_code: bool = False,
local_files_only: bool = False,
model_kwargs: Optional[Dict[str, Any]] = None,
tokenizer_kwargs: Optional[Dict[str, Any]] = None,
config_kwargs: Optional[Dict[str, Any]] = None,
precision: Literal["float32", "int8", "uint8", "binary",
"ubinary"] = "float32",
encode_kwargs: Optional[Dict[str, Any]] = None,
backend: Literal["torch", "onnx", "openvino"] = "torch") -> None
创建一个 SentenceTransformersDocumentEmbedder 组件。
参数:
file_path_meta_field: Document 中包含图像或 PDF 文件路径的元数据字段。root_path: 存储文档文件的根目录路径。如果提供,文档元数据中的文件路径将相对于此路径解析。如果为 None,则文件路径被视为绝对路径。model: 用于计算嵌入的 Sentence Transformers 模型。可以传递本地路径或 Hugging Face 上的模型 ID。为了与此组件兼容,模型必须能够将图像和文本嵌入到同一个向量空间。兼容模型包括:- "sentence-transformers/clip-ViT-B-32"
- "sentence-transformers/clip-ViT-L-14"
- "sentence-transformers/clip-ViT-B-16"
- "sentence-transformers/clip-ViT-B-32-multilingual-v1"
- "jinaai/jina-embeddings-v4"
- "jinaai/jina-clip-v1"
- "jinaai/jina-clip-v2"。
device: 用于加载模型的设备。覆盖默认设备。token: 用于从 Hugging Face 下载私有模型的 API 令牌。batch_size:一次嵌入的文档数量。progress_bar: 如果True,在嵌入文档时显示进度条。normalize_embeddings: 如果为True,则使用 L2 范数对嵌入进行归一化,使每个嵌入的范数为 1。trust_remote_code: 如果为False,则只允许 Hugging Face 经过验证的模型架构。如果为True,则允许自定义模型和脚本。local_files_only: 如果为True,则不尝试从 Hugging Face Hub 下载模型,只查找本地文件。model_kwargs: 加载模型时传递给AutoModelForSequenceClassification.from_pretrained的额外关键字参数。有关可用 kwargs,请参阅特定模型的文档。tokenizer_kwargs: 加载分词器时传递给AutoTokenizer.from_pretrained的额外关键字参数。有关可用 kwargs,请参阅特定模型的文档。config_kwargs: 加载模型配置时传递给AutoConfig.from_pretrained的额外关键字参数。precision: 用于嵌入的精度。所有非 float32 的精度都经过量化。量化后的嵌入体积更小,计算速度更快,但准确性可能较低。它们对于减小语料库嵌入的尺寸以用于语义搜索等任务非常有用。encode_kwargs: 在嵌入文档时传递给SentenceTransformer.encode的额外关键字参数。此参数用于进行精细定制。请注意不要与已设置的参数冲突,并避免传递会改变输出类型的参数。backend: 用于 Sentence Transformers 模型的后端。选择 "torch"、"onnx" 或 "openvino"。有关加速和量化选项的更多信息,请参阅 Sentence Transformers 文档。
SentenceTransformersDocumentImageEmbedder.to_dict
def to_dict() -> Dict[str, Any]
将组件序列化为字典。
返回值:
包含序列化数据的字典。
SentenceTransformersDocumentImageEmbedder.from_dict
@classmethod
def from_dict(
cls, data: Dict[str,
Any]) -> "SentenceTransformersDocumentImageEmbedder"
从字典反序列化组件。
参数:
data: 要反序列化的字典。
返回值:
反序列化后的组件。
SentenceTransformersDocumentImageEmbedder.warm_up
def warm_up() -> None
Initializes the component.
SentenceTransformersDocumentImageEmbedder.run
@component.output_types(documents=List[Document])
def run(documents: List[Document]) -> Dict[str, List[Document]]
嵌入文档列表。
参数:
documents: 要嵌入的 Documents。
返回值:
包含以下键的字典
documents: 带有嵌入的 Documents。
