Qdrant客户端滚动过滤器不工作
我正在通过Python客户端使用Qdrant数据库。我需要在数据库中找到某些元数据字段设置为特定值的条目(不使用向量相似性)。我尝试这样做:
from qdrant_client.http import models
condition = models.FieldCondition(key="field_name", match=models.MatchValue(value="some_value"))
scroll_filter = models.Filter(must=[condition])
results = client.scroll(collection_name="my_collection", scroll_filter=scroll_filter)
我知道有些点的元数据是“field_name=some_value”,但无论我怎么尝试,返回的结果都是([], None)
。有没有办法仅根据元数据查询数据库呢?
(注意:client.scroll(collection_name="my_collection")
确实返回了一些结果,其中一些包含所需的键/值对在元数据中。但过滤器似乎不起作用。)
编辑:问题在于数据最初是通过LangChain插入的,它将元数据对象放在了有效载荷中。这意味着,使用时不能直接用condition=FieldCondition(key="field_name", ...
,而是要用condition=FieldCondition(key="metadata.field_name", ...
。
1 个回答
0
乍一看似乎没什么问题。你能分享一下运行 client.scroll(collection_name="my_collection")
这个命令的结果吗?最好能有至少一个符合条件的点。我想确认一下数据的结构。