🆕 新功能
支持 Pydantic v2 🚀 (#1652)
此版本最重要的功能是对 Pydantic v2 的全面支持!同时我们将继续支持 Pydantic v1。
如果您使用 Pydantic v2,您需要调整您的 DocArray 代码以适配新的 Pydantic API。请查看他们的 迁移指南。
Pydantic v2 的核心部分采用 Rust 编写,并为 DocArray 提供了显著的性能改进:JSON 序列化速度提高了 240%,并且使用 TorchTensor 等非本地类型验证 BaseDoc 和 DocList 时,速度提高了 20%。
添加
BaseDocWithoutId
(#1803)默认情况下,BaseDoc 包含一个
id
字段。如果您希望构建一个不包含此 ID 字段的模型的 API,这可能会出现问题。因此,我们现在提供了一个BaseDocWithoutId
,顾名思义,它是没有 ID 字段的 BaseDoc。请谨慎使用 Document,除非您明确需要删除 ID,否则仍然应使用 BaseDoc 作为基类。
⚠️
DocIndex
需要id
字段来存储和检索文档,因此 BaseDocWithoutId 与 DocIndex 或任何需要向量数据库的功能不兼容。
🐞 bug 修复
修复 DocList 订阅错误
可以使用语法
DocList[MyDoc]()
从 BaseDoc 键入 DocList。在此版本中,允许用户多次指定
DocList
类型的 bug 已被修复。不再支持
DocList[MyDoc1][MyDoc2]
(#1800)此外,我们还修复了一个错误:当用户向
DocList
传递诸如DocList[doc()]
的错误类型时,该错误会导致静默失败。 (#1794)Milvus 连接参数缺失 (#1802)
错误设置 Milvus 客户端端口的 bug 已被修复。
使
DocList.to_json()
和DocVec.to_json()
返回str
而不是bytes
(#1769)为与 BaseDoc
.to_json()
和其他 pydantic 模型保持一致,该版本更改了DocList.to_json()
和DocVec.to_json()
方法的返回类型。在之后的版本中,这些方法将返回str
类型的数据,而不是bytes
。💥 由于返回类型已更改,因此这被视为一个重大变更。
在附加之前进行类型转换 (#1758)
此版本在
reduce
辅助函数内部引入了类型转换,在附加到最终结果之前对输入进行类型转换。可能能够减少模式兼容但不完全相同的文档。跳过
__annotations__
中的文档属性,但不跳过__fields__
(#1777)此版本修复了
create_pure_python_type_model
辅助函数中的一个问题。从这个版本开始,类型创建期间将只考虑类__fields__
中的属性。之前的行为在用户在输入类中引入 ClassVar 时会导致应用程序崩溃:class MyDoc(BaseDoc): endpoint: ClassVar[str] = "my_endpoint" input_test: str = "" field_info = model.__fields__[field_name].field_info
KeyError: 'endpoint'
感谢 @NarekA 在 Jina 项目中提出并修复。该修复已移植到 DocArray 中。
💥 重大变更
移除 Jina AI Cloud 推送/拉取 (#1791)
Jina AI Cloud 已停用。因此,我们正在移除与 Jina AI Cloud 相关的推送/拉取功能。
DocList.to_json()
和DocVec.to_json()
的返回类型更改为了使
to_json
方法在不同类之间保持一致,我们将其在 DocList 和 DocVec 中的返回类型更改为str
。如果您在您的应用程序中使用了这个方法,请更新您的代码以返回str
而不是bytes
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。