🆕 新功能

  • 支持 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


JinaAI
21 声望12 粉丝

Jina AI 的愿景是铺设通往多模态 AI 的未来之路,我们是您通往多模态人工智能的最佳通道!