← 返回博客
跳至主要内容

Weaviate 1.33 版本发布

2025年10月2日1 分钟阅读
Ivan Despot

Weaviate v1.33 现在开源并可在 Weaviate Cloud 上使用。此版本带来默认压缩以实现最佳资源利用率,1 位旋转量化 (RQ)OIDC 组管理服务器端批量导入以及集合别名已正式通用 (GA)。

此外,还扩展了过滤功能,新增了 ContainsNoneNot 运算符,以及一些额外的改进。

以下是发布 ⭐️亮点⭐️!

Weaviate 1.33 is released

集合别名正式通用

集合别名作为 Weaviate v1.32 中的预览版引入,现在已正式通用 (GA),可用于生产环境。此功能为无缝集合迁移和生产工作流程提供了优雅的解决方案。

集合别名允许您

  • 创建对集合的引用,这些引用可以在不中断服务的情况下更新
  • 在更改集合设置时执行零停机时间迁移
  • 简化生产部署,并使用稳定的集合引用

创建和使用别名

# Create an alias
client.alias.create(alias_name="ProductsAlias", target_collection="Products_v1")

# Use the alias like a regular collection
products = client.collections.use("ProductsAlias")
results = products.query.near_text("wireless headphones")

# Update the alias to point to a new collection (zero downtime!)
client.alias.update(alias_name="ProductsAlias", new_target_collection="Products_v2")

此 GA 版本包括完整的客户端库支持和全面的文档,使集合别名成为生产环境中的强大工具。

默认压缩(& 8 位 RQ 正式通用)

从 Weaviate v1.33 开始,我们正在使高效的资源利用成为默认体验。8 位旋转量化 (RQ) 现在在创建新集合时默认启用,确保您开箱即用即可获得最佳内存使用率和更快的性能。

这意味着新的集合将自动受益于

  • 高达 4 倍的内存压缩,同时保持 98-99% 的召回率
  • 无需训练阶段 - RQ 在索引创建时立即生效
  • 无需配置 - 只需创建一个新集合即可开始使用

此外,8 位 RQ 现在正式通用 (GA),这意味着它完全受支持并可用于生产工作负载。我们广泛的测试表明,RQ 为大多数用例提供了压缩、性能和召回率的最佳平衡。

如果您需要不同的行为,可以通过 DEFAULT_QUANTIZATION 环境变量进行自定义

# To disable compression by default
DEFAULT_QUANTIZATION=none

# To use a different quantization method
DEFAULT_QUANTIZATION=pq

1 位旋转量化 (RQ)

在 8 位 RQ 成功的基础上,Weaviate v1.33 引入了 1 位旋转量化 (RQ) 作为预览功能。此量化技术提供巨大的压缩率,同时保持良好的搜索质量。

1 位 RQ 通过非对称量化方法工作

  1. 数据向量使用每个维度仅 1 位进行量化(仅存储符号)
  2. 查询向量在搜索期间使用每个维度 5 位,以提高准确性
  3. 快速伪随机旋转在维度之间均匀分布信息

这种非对称设计提供了几个关键优势

  • 随着维度的增加,接近 32 倍的压缩
  • 比二进制量化 (BQ) 更强大 - 即使在某些 BQ 表现不佳的数据集上,也能很好地工作

我们的内部测试表明,1 位 RQ 是二进制量化的良好替代方案,与 BQ 相比,吞吐量仅略有下降,但在某些数据集上召回率明显更高。

预览功能

1 位 RQ 在 v1.33 中添加为预览功能。这意味着它仍在开发中,未来版本可能会发生变化。此时,我们不建议在生产环境中使用它。

OIDC 组管理

使用 OIDC 组管理,大型团队的权限管理变得更加简化。现在,您可以利用身份提供程序(如 Keycloak、Okta 或 Auth0)中定义的组来自动管理 Weaviate 中的权限。

运作方式如下

  1. 组在您的身份提供程序中定义
  2. 用户组会员资格传递到 Weaviate 中的 OIDC 令牌
  3. 角色分配给 Weaviate 中的这些 OIDC 组
  4. 用户自动继承基于其组会员资格的权限

将角色分配给 OIDC 组

# Assign multiple roles to a group
admin_client.groups.oidc.assign_roles(
group_id="/admin-group",
role_names=["testRole", "viewer"]
)

列出分配给组的角色

# Get all roles for a specific group
group_roles = admin_client.groups.oidc.get_assigned_roles(
group_id="/admin-group",
include_permissions=True
)
print(f"Roles assigned to '/admin-group': {list(group_roles.keys())}")

撤销组的角色

# Remove specific roles from a group
admin_client.groups.oidc.revoke_roles(
group_id="/admin-group",
role_names=["testRole"]
)

此功能无需为每个用户单独分配角色,从而更容易管理大型团队的访问权限,并确保权限与组织的结构保持同步。

ContainsNoneNot 过滤器运算符

Weaviate v1.33 通过两个新运算符扩展了您的过滤功能:ContainsNoneNot。这些运算符提供了更灵活和直观的方式来表达复杂的过滤逻辑。

ContainsNone 运算符

ContainsNone 运算符的工作方式与现有的 ContainsAnyContainsAll 运算符类似,但返回属性不包含指定值中的任何一个的对象

# Find articles that contain none of these topics
results = collection.query.fetch_objects(
where=Filter.by_property("topics").contains_none(
["politics", "sports", "entertainment"]
),
return_properties=["title", "content"],
limit=10
)

在内部,ContainsNone 有效地转换为

Not( (prop Equals "politics") Or (prop Equals "sports") Or (prop Equals "entertainment") )

Not 运算符

Not 运算符提供其单个操作数的否定,允许您清晰地表达反向条件

# Find products that are NOT in the electronics category
results = product_collection.query.fetch_objects(
where=wvc.query.Filter.not_(
Filter.by_property("category").equal("electronics")
),
return_properties=["name", "price"],
limit=10
)

这些运算符与 Weaviate 现有的过滤系统无缝协作,并可以与其他运算符结合使用以进行复杂的查询。

服务器端批量导入

预览功能

服务器端批量导入在 v1.33 中添加为预览功能,并且尚未在我们的客户端库中支持

通过 服务器端批量导入(也称为自动批量导入),数据导入变得更加容易。您不再需要手动调整客户端上的批量参数,现在可以让服务器管理数据流速率以实现最佳性能。通过 动态反压,服务器会持续监控其内部队列大小并计算工作负载的指数移动平均值 (EMA)。然后,它会告诉客户端在下一个块中发送的理想对象数量。

在 Python 中使用服务器端批量导入很简单

# Server-side batching automatically optimizes the data ingestion flow
with client.batch.automatic() as batch:
for data_object in data_objects:
batch.add_object(
properties=data_object,
collection="Articles"
)

为什么使用自动批量导入?

  • 简化的客户端代码 - 无需手动调整批量大小和并发请求
  • 改进的稳定性 - 自动反压可防止服务器过载和超时
  • 增强的弹性 - 更好地处理集群扩展事件和长时间运行的向量化任务

社区贡献

Weaviate 是一个开源项目,我们始终很高兴看到我们出色的社区的贡献。

对于此版本,我们非常激动地向以下贡献者致敬,感谢他们对 Weaviate 的贡献。 🎉🎉🎉

如果您有兴趣为 Weaviate 贡献代码,请查看我们的 贡献指南,并浏览 GitHub 上的开放问题。寻找 good-first-issue 标签,找到很好的入门点!

相关资源

总结

Weaviate v1.33 代表着在使向量数据库更高效、更易于使用和更强大方面迈出的重要一步。凭借默认启用的压缩、高级量化选项、简化的批量导入和增强的权限管理,此版本无论您是刚刚开始还是正在扩展到生产环境,都能为您取得成功。

准备好开始了吗?

该版本始终以开源方式提供 在 GitHub 上,并且已经可在 Weaviate Cloud 上的新沙盒中使用。

对于升级自托管版本的人员,请查看 迁移指南,了解特定版本的说明。

它也将很快在 Weaviate Cloud 的 Serverless 集群中可用。

感谢您的阅读,祝您向量搜索愉快! 👋

准备开始构建了吗?

请查看 快速入门教程,或使用 Weaviate Cloud (WCD) 的免费试用版构建令人惊叹的应用程序。

不想错过另一篇博文?

注册我们的双周时事通讯以保持更新!


提交后,我同意 服务条款 隐私政策.