跳至主要内容
前往文档
⌘U
Weaviate 数据库

使用 Weaviate 的 APIs 和工具开发 AI 应用

部署

部署、配置和维护 Weaviate 数据库

Weaviate Agents

使用 Weaviate 构建和部署智能代理

Weaviate Cloud

在云端管理和扩展 Weaviate

更多资源

集成
贡献者指南
活动 & 工作坊
Weaviate Academy

需要帮助?

Weaviate Logo询问 AI 助手⌘K
社区论坛

Python

Python 客户端 (SDK)

最新的 Python 客户端版本是 v4.19.2

此页面广泛介绍了 Weaviate Python 客户端 (v4 版本)。有关不特定于 Python 客户端的使用信息,例如代码示例,请参阅 操作手册和指南 中的相关页面。

安装

Python 客户端库使用 Python 3.8+ 开发和测试。它在 PyPI.org 上可用,可以使用以下命令安装

pip install -U weaviate-client
要安装 Beta 版本
pip install --pre -U "weaviate-client==4.*"`
要求:Weaviate 版本兼容性 & gRPC

Weaviate 版本兼容性

v4 Python 客户端需要 Weaviate 1.23.7 或更高版本。通常,我们建议您使用最新版本的 Python 客户端和 Weaviate 数据库。

在 Weaviate Cloud 中,沙盒与 2024 年 1 月 31 日起兼容 v4 客户端。在此日期之前创建的沙盒将不兼容 v4 客户端。

gRPC

v4 客户端在底层使用远程过程调用 (RPC)。因此,必须向您的 Weaviate 服务器开放 gRPC 端口。

docker-compose.yml 示例

如果您使用 Docker 运行 Weaviate,可以通过将以下内容添加到您的 docker-compose.yml 文件中来映射默认端口 (50051)

ports:
- 8080:8080
- 50051:50051

Weaviate Agents

您可以使用以下命令安装带有可选 agents extras 的 Weaviate 客户端库,以使用 Weaviate Agents

pip install -U weaviate-client[agents]

入门

先决条件

如果您尚未这样做,我们建议您首先完成 快速入门教程,以便充分利用本节。

使用此 Python 示例开始使用 Weaviate。代码将引导您完成以下关键步骤

  1. 连接到 Weaviate:建立到本地(或 Cloud)Weaviate 实例的连接。
  2. 创建集合:定义 Question 集合的数据模式,使用 Ollama 模型对数据进行向量化。
  3. 导入数据:获取示例 Jeopardy 问题,并使用 Weaviate 的批量导入进行高效摄取和自动向量嵌入生成。
  4. 搜索/查询数据库:执行向量搜索,以查找与查询 biology 语义相似的问题。
.Vectors.text2vec_xxx 与 AutoSchema

使用 Python 客户端库 4.16.0-4.16.3 使用 Configure.Vectors.text2vec_xxx() 定义集合,如果在未定义任何属性且未将 vectorize_collection_name 设置为 True 的情况下,将引发错误。

这在 Weaviate Python 客户端的 4.16.4 中得到解决。有关更多详细信息,请参阅此常见问题解答条目:Python 客户端版本 4.16.0 到 4.16.3 中出现无效属性错误

import weaviate
import requests, json
from weaviate.classes.config import Configure

client = weaviate.connect_to_local()

questions = client.collections.create(
name="Question",
vector_config=Configure.Vectors.text2vec_ollama(
api_endpoint="http://ollama:11434", # If using Docker you might need: http://host.docker.internal:11434
model="nomic-embed-text", # The model to use
), # Configure the Ollama embedding model
)

resp = requests.get(
"https://raw.githubusercontent.com/weaviate-tutorials/quickstart/main/data/jeopardy_tiny.json"
)
data = json.loads(resp.text)

with questions.batch.dynamic() as batch:
for d in data:
batch.add_object(
{
"answer": d["Answer"],
"question": d["Question"],
"category": d["Category"],
}
)
if batch.number_errors > 10:
print("Batch import stopped due to excessive errors.")
break

failed_objects = questions.batch.failed_objects
if failed_objects:
print(f"Number of failed imports: {len(failed_objects)}")
print(f"First failed object: {failed_objects[0]}")

response = questions.query.near_text(query="biology", limit=2)

for obj in response.objects:
print(json.dumps(obj.properties, indent=2))

client.close() # Free up resources

有关更多代码示例,请查看 操作手册和指南 部分。

异步使用

Python 客户端库默认提供同步 API,通过 WeaviateClient 类实现,该类在本页介绍。从 weaviate-client v4.7.0 及更高版本开始,也提供了一个异步 API,通过 WeaviateAsyncClient 类实现。有关更多详细信息,请参阅 异步客户端 API 页面

发布版本

转到 GitHub 发布页面,以查看 Python 客户端库的发布历史记录和更改日志。

点击此处查看 Weaviate 和相应客户端版本的表格

此表列出了最新的五个 Weaviate 数据库版本和相应的客户端库版本。

Weaviate 数据库
(GitHub)
首次
发布日期
Python
(GitHub)
TypeScript/
JavaScript
(GitHub)
Go
(GitHub)
Java
(GitHub)
1.35.x2025-12-174.19.xN/AN/AN/A
1.34.x2025-11-054.18.x3.10.x5.6.x6.0.0
1.33.x2025-09-254.17.x3.9.x5.5.x5.5.x
1.32.x2025-07-144.16.x3.8.x5.3.x5.4.x
1.31.x2025-05-304.15.x3.6.x5.2.x5.3.x
1.30.x2025-04-034.12.x3.5.x5.1.x5.2.x
1.29.x2025-02-174.11.x3.4.x5.0.x5.1.x
旧版本发布
Weaviate 数据库
(GitHub)
首次
发布日期
Python
(GitHub)
TypeScript/
JavaScript
(GitHub)
Go
(GitHub)
Java
(GitHub)
1.28.x2024-12-114.10.x3.3.x4.16.x5.0.x
1.27.x2024-10-164.9.x3.2.x4.16.x5.0.x
4.9.x
1.26.x2024-07-224.7.x3.1.x4.15.x4.8.x
1.25.x2024-05-104.6.x2.1.x4.13.x4.6.x
1.24.x2024-02-274.5.x2.0.x4.10.x4.4.x
1.23.x2023-12-183.26.x1.5.x4.10.x4.4.x
1.22.x2023-10-273.25.x1.5.x4.10.x4.3.x
1.21.x2023-08-173.22.x1.4.x4.9.x4.2.x
1.20.x2023-07-063.22.x1.1.x4.7.x4.2.x
1.19.x2023-05-043.17.x1.1.x14.7.x4.0.x
1.18.x2023-03-073.13.x2.14.x4.6.x3.6.x
1.17.x2022-12-203.9.x2.14.x4.5.x3.5.x
1.16.x2022-10-313.8.x2.13.x4.4.x3.4.x
1.15.x2022-09-073.6.x2.12.x4.3.x3.3.x
1.14.x2022-07-073.6.x2.11.x4.2.x3.2.x
1.13.x2022-05-033.4.x2.9.x4.0.x2.4.x
1.12.x2022-04-053.4.x2.8.x3.0.x2.3.x
1.11.x2022-03-143.2.x2.7.x2.6.x2.3.x
1.10.x2022-01-273.1.x2.5.x2.4.x2.1.x
1.9.x2021-12-103.1.x2.4.x2.4.x2.1.x
1.8.x2021-11-303.1.x2.4.x2.3.x1.1.x
1.7.x2021-09-013.1.x2.4.x2.3.x1.1.x
1.6.x2021-08-112.4.x2.3.x2.2.x1.0.x
1.5.x2021-07-132.2.x2.1.x2.1.x1.0.x
1.4.x2021-06-092.2.x2.1.x2.1.x1.0.x
1.3.x2021-04-232.2.x2.1.x2.1.x1.0.x
1.2.x2021-03-152.2.x2.0.x1.1.x-
1.1.x2021-02-102.1.x---
1.0.x2021-01-142.0.x---

TypeScript 客户端变更

TypeScript 客户端 于 2023-03-17 替换了 JavaScript 客户端

矢量化器 API 变更 v4.16.0

.Vectors.text2vec_xxx 与 AutoSchema

使用 Python 客户端库 4.16.0-4.16.3 使用 Configure.Vectors.text2vec_xxx() 定义集合,如果在未定义任何属性且未将 vectorize_collection_name 设置为 True 的情况下,将引发错误。

这在 Weaviate Python 客户端的 4.16.4 中得到解决。有关更多详细信息,请参阅此常见问题解答条目:Python 客户端版本 4.16.0 到 4.16.3 中出现无效属性错误

从 Weaviate Python 客户端 v4.16.0 开始,在创建集合时对矢量化器配置 API 进行了多项更改

  • .vectorizer_config 已替换为 .vector_config
  • Configure.NamedVectors 已替换为 Configure.VectorsConfigure.MultiVectors
  • Configure.NamedVectors.noneConfigure.Vectorizer.none 已替换为 Configure.Vectors.self_providedConfigure.MultiVectors.self_provided

Python 客户端 v3 弃用

Weaviate Python 客户端 v3 已弃用,不应再使用。如果您需要 v3 客户端的文档,请参阅 文档存档。如果您正在从 Python v3 客户端迁移到 v4 客户端,请参阅此 迁移指南

Beta 版本

迁移指南 - Beta 版本

v4.4b9 中的变更

weaviate.connect_to_x 方法

timeout 参数现在是 additional_config 参数的一部分。它接受类 weaviate.config.AdditionalConfig 作为输入。

查询

query 命名空间中方法的所有可选参数现在都强制为关键字参数。

现在有运行时逻辑来解析查询参数,强制正确的类型。

批量处理

引入了使用不同的批量处理风格在底层实现的三种不同的算法

  • client.batch.dynamic()
  • client.batch.fixed_size()
  • client.batch.rate_limit()

client.batch.dynamic() as batch 是对以前的 client.batch as batch 的直接替换,后者现已弃用,将在发布时删除。

with client.batch.dynamic() as batch:
...

等效于

with client.batch as batch:
...

client.batch.fixed_size() as batch 是一种配置批量处理算法以仅使用固定大小的方法。

with client.batch.dynamic() as batch:
...

等效于

client.batch.configure_fixed_size()
with client.batch as batch:
...

client.batch.rate_limit() as batch 是一种帮助避免命中第三方矢量化 API 速率限制的新方法。通过在 rate_limit() 方法中指定 request_per_minute,您可以强制批量处理算法以第三方 API 能够处理对象的速度向 Weaviate 发送对象。

这些方法现在返回完全本地化的上下文管理器。这意味着一个批次中的 failed_objectsfailed_references 不会包含在任何后续调用中。

最后,如果负责发送批次的后台线程引发异常,则现在会在主线程中重新引发该异常,而不是静默地出错。

过滤器

Filter.by_propertyprop 参数已重命名为 name

现在可以使用 Filter.by_ref_count(ref) 而不是 Filter([ref]) 实现引用计数。

v4.4b8 中的变更

引用过滤器

引用过滤器具有简化的语法。新的语法如下所示

Filter.by_ref("ref").by_property("target_property")

v4.4b7 中的变更

库导入

直接从 weaviate 导入已弃用。请使用 import weaviate.classes as wvc 代替。

关闭客户端连接

从 v4.4b7 开始,您必须显式关闭客户端连接。有两种方法可以关闭客户端连接。

使用 client.close() 显式关闭客户端连接。

import weaviate
client = weaviate.connect_to_local()

print(client.is_ready())

client.close()

使用上下文管理器为您关闭客户端连接。

import weaviate

with weaviate.connect_to_local() as client:
print(client.is_ready())

# Python closes the client when you leave the 'with' block
批量处理

v4.4b7 客户端对 client.batch 进行了更改。

  • client.batch 需要一个上下文管理器。
  • 删除了手动模式,您无法使用 .create_objects 发送批次。
  • 批量大小和并发请求的数量是动态分配的。使用 batch.configure_fixed_size 指定值。
  • add_reference 方法已更新。
  • 删除了 to_object_collection 方法。

更新的 client.batch 参数

旧值v4.4b7 中的值
from_object_uuid: UUIDfrom_uuid: UUID
from_object_collection: strfrom_collection: str
from_property_name: strfrom_property: str
to_object_uuid: UUIDto: Union[WeaviateReference, List[UUID]]
to_object_collection: Optional[str] = None
tenant: Optional[str] = Nonetenant: Optional[str] = None
过滤器语法

v4.4b7 中更新了过滤器语法。

注意引用过滤器语法 在 4.4b8 中进行了简化。

旧语法v4.4b7 中的新语法
Filter(path=property)Filter.by_property(property)
Filter(path=["ref", "target_class", "target_property"])Filter.by_ref().link_on("ref").by_property("target_property")
FilterMetadata.ByXXFilter.by_id()
Filter.by_creation_time()
Filter.by_update_time()

4.4b7 之前的过滤器语法已弃用。新的 v4.4b7 语法如下所示。

import weaviate
import datetime
import weaviate.classes as wvc

client = weaviate.connect_to_local()

jeopardy = client.collections.use("JeopardyQuestion")
response = jeopardy.query.fetch_objects(
filters=wvc.query.Filter.by_property("round").equal("Double Jeopardy!") &
wvc.query.Filter.by_creation_time().greater_or_equal(datetime.datetime(2005, 1, 1)) |
wvc.query.Filter.by_creation_time().greater_or_equal(datetime.datetime(2000, 12, 31)),
limit=3
)


client.close()
reference_add_many 已更新

reference_add_many 语法已更新;DataReferenceOneToMany 现在是 DataReference

collection.data.reference_add_many(
[
DataReference(
from_property="ref",
from_uuid=uuid_from,
to_uuid=*one or a list of UUIDs*,
)
]
)
参考

多目标引用已更新。这些是新的函数

  • ReferenceProperty.MultiTarget
  • DataReference.MultiTarget
  • QueryReference.MultiTarget

对于多目标引用,请使用 ReferenceToMulti

旧版客户端变更

参考文献
  • 现在可以通过在集合创建、对象插入和查询期间的 references 参数添加引用。
  • FromReference 类现在称为 QueryReference
类/参数重组
  • weaviate.classes 子模块进一步拆分为
    • weaviate.classes.config
    • weaviate.classes.data
    • weaviate.classes.query
    • weaviate.classes.generic
  • vector_index_config 参数工厂函数,用于 wvc.config.Configurewvc.config.Reconfigure,已更改为例如:
    client.collections.create(
    name="MyCollection",
    vector_index_config=wvc.config.Configure.VectorIndex.hnsw(
    distance_metric=wvc.config.VectorDistances.COSINE,
    vector_cache_max_objects=1000000,
    quantizer=wvc.config.Configure.VectorIndex.Quantizer.pq()
    ),
    )
    • vector_index_type 参数已被移除。
  • Property 构造方法中,vectorize_class_name 参数已更改为 vectorize_collection_name
  • [collection].data.update() / .replace() *args 顺序已更改,旨在适应在更新时无需提供属性的情况。
  • [collection].data.reference_add / .reference_delete / .reference_replace 中的 ref 关键字已重命名为 to
  • collections.create() / get():提供泛型的 data_model kwarg 已重命名为 data_model_properties
  • [object].metadata.uuid 现在是 [object].uuid
  • [object].metadata.creation_time_unix 现在是 [object].metadata.creation_time
  • [object].metadata.last_update_time_unix 现在是 [object].metadata.last_update
  • quantitizer 已重命名为 quantizer
  • 要请求返回数据中的向量,请使用 include_vector 参数。
数据类型
  • 时间元数据(用于创建时间和最后更新时间)现在返回一个 datetime 对象,并且参数已重命名为 creation_timelast_update_time,位于 MetadataQuery 下。
    • metadata.creation_time.timestamp() * 1000 将返回与之前相同的值。
  • query.fetch_object_by_id() 现在在底层使用 gRPC(而不是 REST),并以与其他查询相同的格式返回对象。
  • UUIDDATE 属性作为类型化对象返回。

代码示例和更多资源

可以在 Weaviate 文档中找到有关各种操作和功能的用法信息。



Weaviate API 参考页面中的 搜索REST 也可能是很好的起点。

Weaviate Academy

课程您的第一个 AI 应用(搜索和 RAG)

一个实践课程,您将使用 Weaviate 和 FastAPI 构建一个电影推荐 API。

打开学院课程

问题和反馈

如果您有任何问题或反馈,请在 用户论坛 中告诉我们。