在Weaviate向量数据库中调用with_additional报错:GetBuilder对象无该属性
解决Weaviate中调用with_additional出现AttributeError的问题
问题原因
这个错误通常是Weaviate Python客户端版本不兼容或API调用方式错误导致的:
- Weaviate v3和v4版本的查询API结构差异极大,v4已移除
GetBuilder对象,改用全新的集合式API; - 若使用v3版本却错误调整了调用顺序,也可能触发该错误。
分版本解决方案
1. 客户端v4.x+版本
v4废弃了旧的client.query.get()链式调用,改用集合查询API,直接通过additional参数指定要获取的附加字段(如ID):
from weaviate.classes.query import Filter # 获取目标集合实例 collection = client.collections.get("你的类名") # 执行带过滤器和附加ID的查询 response = collection.query.fetch_objects( filters=Filter.by_property("你的属性名").equal("匹配值"), additional=["id"] # 指定返回对象ID ) # 提取结果中的ID for obj in response.objects: print(obj.uuid)
2. 客户端v3.x版本
v3需使用链式调用,注意with_additional需在query.get()之后调用:
# 构建带过滤器和附加ID的查询 response = client.query.get("你的类名", ["要返回的属性列表"]) \ .with_additional(["id"]) \ .with_where({ "path": ["你的属性名"], "operator": "Equal", "valueString": "匹配值" }) \ .do() # 提取结果中的ID for obj in response["data"]["Get"]["你的类名"]: print(obj["_additional"]["id"])
排查步骤
- 先确认客户端版本:
pip show weaviate-client - 根据版本选择对应代码写法,避免混用v3和v4的API。
内容的提问来源于stack exchange,提问作者Chethana Wickramaarachchi
相关产品推荐
相关产品推荐

