llama_index 在创建知识图谱的代码中,执行到retrieve时,发生了下面的错误,表示ValueError: too many values to unpack (expected 2),通常表示在解包操作中,右侧提供的值数量多于左侧预期接收的变量数量,

fdbelqdn  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(21)

从代码中可以看出,这是一个使用HuggingFaceLLM和HuggingFaceEmbedding构建知识图谱查询系统的问题。主要步骤如下:

  1. 导入所需的库和模块。
  2. 定义一个提示模板(query_wrapper_prompt)。
  3. 创建一个HuggingFaceLLM示例,设置相关参数。
  4. 创建一个HuggingFaceEmbedding示例,设置模型名称。
  5. 定义一个graph_ground_process函数,用于处理文档和问题。
  6. 在main函数中,加载数据并调用graph_ground_process函数。

代码中存在一些错误,例如在graph_ground_process函数中,index = KnowledgeGraphIndex.from_documents( 这一行代码应该改为 index = KnowledgeGraphIndex.from_nodes(,因为我们需要从节点构建索引。同时,return self.build_index_from_nodes(nodes, **build_kwargs) 这一行代码中的 **build_kwargs 应该改为 **kwargs
这个错误是由于在解包kv_cache时,期望得到2个值,但实际上得到了更多的值。为了解决这个问题,你需要检查self_attention函数的实现,确保它返回一个包含两个元素的元组。你可以尝试修改self_attention函数的返回语句,使其返回一个包含两个元素的元组,如下所示:

def self_attention(self, query, key, value, key_padding_mask=None, need_weights=False, attn_mask=None):
    # ... 其他代码 ...

    attention_output = self.attention(query, key, value)

    return attention_output, (kv_cache[0], kv_cache[1])

这样,在调用self_attention函数时,你将获得一个包含两个元素的元组,可以避免ValueError: too many values to unpack (expected 2)错误。

ghhaqwfi

ghhaqwfi1#

看起来像是huggingface/transformers的问题,而不是llamaindex的问题。

gg0vcinb

gg0vcinb2#

看起来像是huggingface/transformers的问题,而不是llamaindex的问题。
好的,谢谢。真的很奇怪,我之前相同的代码都能正常运行,今天突然发生这样的问题。

相关问题