如何在Qdrant DB中过滤Payload列表包含指定元素的搜索结果?
Qdrant过滤列表同时包含多个值的正确方法
要筛选出Payload中Fruit列表同时包含apple和orange的条目,你需要使用Filter的must字段而非should字段——must要求所有条件同时满足,正好符合“同时包含”的需求。
正确代码示例
from qdrant_client.http.models import Filter, FieldCondition, MatchValue filter_condition = Filter( must=[ FieldCondition( key='Fruit', match=MatchValue(value='apple') ), FieldCondition( key='Fruit', match=MatchValue(value='orange') ) ] )
原代码无效的原因
你之前使用的should字段是“或”逻辑,只要满足其中一个条件(包含apple或banana)就会被选中,这和你需要的“同时包含apple和orange”的“与”逻辑完全不符。
另外需注意Qdrant的匹配是大小写敏感的,确保代码中指定的值和Payload里的大小写一致(示例中Payload是小写的apple和orange,代码里也要保持小写)。
内容的提问来源于stack exchange,提问作者Vincenzo Lavorini
相关产品推荐
相关产品推荐

