You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qdrant Python客户端scroll过滤器失效,如何仅基于元数据查询?

基于元数据查询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插入的,LangChain会将元数据对象嵌套在payload的metadata字段内。因此过滤器的键需要指定完整的嵌套路径,而非直接使用字段名。

修正后的代码如下:

from qdrant_client.http import models

# 修正字段路径,指向LangChain存入的嵌套元数据
condition = models.FieldCondition(key="metadata.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)

内容的提问来源于stack exchange,提问作者Lovro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:04:53