支持 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 或任何需要向量数据库的功能不兼容。
修复 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
。
本文由 mdnice 多平台发布