【Bug?】v1.13.0后,知识搜索节点的元数据过滤器不起作用
一周前(v1.13.0发布前后)还正常运行的工作流,元数据过滤器突然失效了。
环境
情况
- 在知识库中设置了
product_name = "ProductA" 的元数据
- 在知识搜索节点的元数据过滤器中设置了
product_name = [Variable: user_input]
- 即使以
user_input = "ProductA" 执行,也返回 { "result": [] }
cencern 的值可能没有正确传递给知识库,导致没有通过元数据进行搜索。
尝试过的操作
- 已确认字段名匹配
- 即使将 Variable 更改为 Constant(固定值
\"ProductA\"),也返回 []
- 将工作流回滚到上个月的版本也没有改善
v1.11.3 中修复了 fix DatasetRetrieval._process_metadata_filter_func miss in operator(#30199),但后续更新可能导致了回归。
有人遇到过类似问题吗?
2 个赞
我也遇到了同样的问题。通过变量过滤元数据对我不起作用。常量值按预期工作。
1 个赞
如果附图中所示的部分是变量,则无法搜索;如果是常量,则可以正常搜索。不久前还可以用变量进行搜索,所以如果有什么方法可以用变量来查找元数据,请告诉我。
1 个赞
Toshi
4
我也正为完全相同的症状所困扰。
以前是能搜到的吗?
这似乎是一个bug,并且已经在 GitHub 上报告了。
我打算修复它,但这可能要等到明天以后,或许内部人员的行动会更快。
以前是可以命中的。
进入3月以来,突然感觉变量无法命中了…
在我开始之前,似乎已经迅速处理了。
将在下个版本中修复,请等待版本发布 
有没有其他解决方案?问题如下:
Dify 系统遇到了一个问题。我最初上传的文件 kb2-test (文本) 在 KB2 阶段被使用,输入为 b9101,这是由上一个节点识别的文件名。KB2 节点能够读取该文件并相应地回答(表明该文件已被调用)。然而,后来上传的文件在绑定后无法在此节点被调用。
系统显然基于 KB2 处输入的文件名调用了原始的 kb2-test 文件(即使我从文件中删除了 b9101,它仍然可以检索内容)。我不知道为什么,但后来上传的 KB2 文件无法被调用。
我确信对于 kb2-test,无论是否添加元数据过滤器(metadata filter)(上传后添加,因为上传时没有添加元数据过滤器参数的选项),系统仍然可以调用它(也就是说,KB2 节点可以根据输入 b9101 正确调用文件)。然而,对于后来上传的文件,无论是否设置了元数据(上传后),它们都无法被调用。
我甚至更改了文件名(改为 b1234),系统仍然可以调用它。因此很明显,系统对文件 kb2-test 使用的是基于内容的检索(content-based retrieval),而不是基于名称的检索,也不是基于文档内文件名字段的检索。
我的问题是:
-
Dify 系统能否使用元数据过滤器(metadata filter)(我认为这是一个基本功能),包括在上传时设置它(我上传知识文件时没有看到任何添加元数据过滤器的功能;在嵌入(embedding)页面只有“从 Notion 同步”以及“访问 API”,或者“从流水线创建知识”——这些功能是什么?),以及在文件设置了元数据之后,在系统中使用该元数据过滤器?
-
如果元数据不能被使用,为什么系统不能直接通过文件名来调用文件?如果 Dify 只能基于文档内的语义内容进行检索,这难道不荒谬吗?
-
有没有更好的方法来实现以下任何一种情况:
如果系统只能基于所有文档内容的语义意义进行检索,这就像读者去图书馆找书,图书管理员不得不把所有的书都拿出来一本一本地查找。这难道不荒谬吗?
1 个赞