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

在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"])

排查步骤

  1. 先确认客户端版本:
    pip show weaviate-client
    
  2. 根据版本选择对应代码写法,避免混用v3和v4的API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:15:02