Bug描述:
Sentence Transformer 可以使用 CLIP 等嵌入模型,但 HuggingFaceEmbedding 无法正常工作。
版本:
0.10.67.post1
重现步骤:
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/clip-ViT-B-32")
相关日志/回溯:
AttributeError Traceback (most recent call last)
Cell In[27], line 13
10 from llama_index.embeddings.huggingface import HuggingFaceEmbedding
12 # Initialize the embedding model
---> 13 embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/clip-ViT-B-32")
15 # Function to download and embed image
16 def embed_image(url):
File ~/anaconda3/envs/xrx-reasoning/lib/python3.10/site-packages/llama_index/embeddings/huggingface/base.py:169, in HuggingFaceEmbedding.init(self, model_name, tokenizer_name, pooling, max_length, query_instruction, text_instruction, normalize, model, tokenizer, embed_batch_size, cache_folder, trust_remote_code, device, callback_manager, parallel_process, target_devices, **model_kwargs)
167 self._model.max_seq_length = max_length
168 else:
--> 169 max_length = self._model.max_seq_length
171 super().init(
172 embed_batch_size=embed_batch_size,
173 callback_manager=callback_manager,
(...)
178 text_instruction=text_instruction,
179 )
File ~/anaconda3/envs/xrx-reasoning/lib/python3.10/site-packages/torch/nn/modules/module.py:1729, in Module.getattr(self, name)
1727 if name in modules:
1728 return modules[name]
-> 1729 raise AttributeError(f"'{type(self).name}' object has no attribute '{name}'")
AttributeError: 'SentenceTransformer' object has no attribute 'max_seq_length'
4条答案
按热度按时间zdwk9cvp1#
嘿@alessandro-neri!我在这里帮助解决bug、问题等,当你等待人工维护者时。让我们一起解决这些bug吧!🐞
你在使用模型"sentence-transformers/clip-ViT-B-32"时遇到的
AttributeError
与HuggingFaceEmbedding
类的问题,是由于SentenceTransformer
类没有为这个特定模型的max_seq_length
属性。clip-ViT-B-32
模型主要设计用于视觉任务,不支持通常用于文本模型的max_seq_length
属性。以下是尝试设置
max_seq_length
的相关代码片段:由于
clip-ViT-B-32
模型没有max_seq_length
属性,尝试设置或访问它会导致AttributeError
1(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/llama_index/embeddings/huggingface/base.py)错误。要解决这个问题,你可以:
max_length
:这避免了访问max_seq_length
属性的需求。max_seq_length
属性的模型。对于像
clip-ViT-B-32
这样的模型,它们没有max_position_embeddings
属性,代码会引发错误。因此,通过明确指定max_length
或使用不同的模型来处理这种情况是必要的。relj7zay2#
我们有一个专门的剪辑类,你可能应该使用它?
zfciruhq3#
pip install llama-index-embeddings-clip
brtdzjyr4#
你好,是的,我猜它可以工作,但在我看来,它增加了复杂性。如果可以通过句子转换器或Huggingface嵌入(文档更好)来实现,那会容易得多。关于这个特定类有没有什么文档?我在文档中找不到任何信息,除了一个空的API参考。