DocArray 近期更新:全面支持 Pydantic V2

news2024/12/29 11:05:33

DocArray 是一个专门为多模态数据的表示、传输、存储和检索而设计的 Python 库。其设计专为多模式人工智能应用程序的开发而量身定制,可保证与广泛的 Python 和机器学习生态系统的无缝集成。在 2022 年 1 月,DocArray 在 Apache License 2.0 下公开分发,并在 LF AI & Data Foundation 成为了一项沙箱项目。

GitHub 链接:https://github.com/docarray/docarray

文档链接:https://docs.docarray.org/

🆕 新功能

  • 支持 Pydantic v2 🚀 (#1652)

    最重要的功能发布是 全面支持 Pydantic V2,因为 Pydantic V2 的核心部分采用 Rust 编写,这给 DocArray 带来了显著的性能提升:

1. JSON 序列化速度提高了 240%。

2. 对于 BaseDoc 和 DocList 的非本地类型(如 TorchTensor)验证速度提高了 20%。

同时,我们仍会持续支持 Pydantic V1。如果您已升级到 Pydantic V2,可能需要对您的 DocArray 代码进行相应的调整,以适配 Pydantic v2 的新API。更多详细信息,请参考 Pydantic 的迁移指南。https://pydantic-docs.helpmanual.io/pydantic-v2-migration/。

添加 BaseDocWithoutId (#1803)

默认情况下,BaseDoc 内置了一个 id 字段。当您构建一个不包含此 ID 字段的模型的 API 时,可能会出现问题。因此,我们现在引入了一个 BaseDocWithoutId 新字段,顾名思义,它是没有 ID 字段的 BaseDoc。

请注意,DocIndex 需要 id 字段来存储和检索文档,因此 BaseDocWithoutIdDocIndex 或任何需要向量数据库的功能不兼容。

所以只有当您确实不需要 ID 字段时,才应使用 BaseDocWithoutId 作为基类,如果不是,请仍然应使用 BaseDoc 作为基类。

💥 重大变更

  • 移除 Jina AI Cloud 推送/拉取 (#1791)

    由于 Jina AI Cloud 已经停止服务,我们决定移除与其相关的 DocArray Pull/Push 功能。请注意,如果您之前依赖于这一功能,可能需要寻找其他替代方案。

  • DocList.to_json()DocVec.to_json() 的返回类型更改

    为了统一不同类之间的 to_json 方法,DocList.to_json()DocVec.to_json() 现在将返回 str 类型数据,而不是先前的 bytes 类型。如果您在应用中使用了这两个方法,务必更新相关代码以适应这一变更。

🐞 bug 修复

  • 修复 DocList 订阅错误

    修复了用户多次指定 DocList 类型的 bug,现在可以正常使用语法 DocListMyDoc 从 BaseDoc 键入 DocList。

  • 不再支持 DocList[MyDoc1][MyDoc2] (#1800)

    解决了当用户错误地传递如 DocList[doc()] 类型到 DocList 时导致的静默失败问题。

  • 修复 Milvus 连接参数 (#1802):

    修复了错误地设置 Milvus 客户端端口的问题。

  • 调整 .to_json() 方法的返回类型 (#1769):

    为了与 BaseDoc.to_json() 和其他 pydantic 模型保持一致,DocList.to_json()DocVec.to_json() 现在返回 str 而不是 bytes

  • 优化 reduce 辅助函数 (#1758):

    reduce 辅助函数内部添加了类型转换,使得在附加到最终结果前进行输入类型的转换,有助于处理模式兼容但不完全匹配的文档。

  • 优化类型创建 (#1777):

    修复了 create_pure_python_type_model 辅助函数中的一个问题,现在在类型创建时只会考虑类的 __fields__ 属性。

    class MyDoc(BaseDoc):
        endpoint: ClassVar[str] = "my_endpoint"
        input_test: str = ""

    修复避免了先前因为用户在输入类中引入 ClassVar 而导致的应用程序崩溃问题。

12ad8ecbc39b1f1d334f7fc9930aeb9b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1117687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ssm351校园服务平台管理系统+jsp

项目名称:ssm351校园服务平台管理系统jsp 点击这里进入源码目录 声明: 适用范围: 本文档适用于广泛的学术和教育用途,包括但不限于个人学习、毕业设计和课程设计。免责声明: 特此声明,本文仅供参考学习之用…

代码随想录算法训练营第六十天 | 739. 每日温度、496.下一个更大元素 I

739. 每日温度 链接: 代码随想录 (1)代码 496.下一个更大元素 I 链接: 代码随想录 (1)代码

Allegro如何对器件进行等距对齐操作

在用Allegro进行PCB设计时,需要经常用到对齐操作。那如何在不使用skill的情况下,对器件进行对齐操作呢? 本方法同样可对Pins,文本进行对齐操作。 使用软件自带的详细操作方法如下: (1)选择菜单Setup。 选择Application Mode(应用模式)→Placement Edit(放置编辑),…

u-boot和bootloader到底有什么区别

嵌入式软件工程师都听说过 u-boot 和 bootloader,但很多工程师依然不知道他们到底是啥。 今天就来简单讲讲 u-boot 和 bootloader 的内容以及区别。 Bootloader Bootloader从字面上来看就是启动加载的意思。用过电脑的都知道,windows开机时会首先加载bi…

Unity中Shader阴影的投射

文章目录 前言一、我们急需使用之前 Offset 中的Shader作为测试二、生成阴影1、添加"LightMode" "ShadowCaster"的Pass.2、appdata中声明float4 vertex:POSITION;和half3 normal:NORMAL;这是生成阴影所需要的语义.3、v2f中添加V2F_SHADOW_CASTER;用于声明…

java 通用导出接口

每个功能导出文件都单独写接口太过繁琐,出于方便大致讲讲通用导出功能的实现。 导出文件配置表,该表保存导出dto和导出文件名的对应关系等信息: TableName(value "SIMPLE_COMMON_EXPORT_TAB") public class SimpleCommonExportT…

vue3+element-plus 封装列表页,分页,排序,导出

目录 背景描述: 开发流程: 详细开发: 总结: 背景描述: web很多时候,要开发一个列表页,展示大量数据,并且提供一些交互功能,例如排序和分页,导出功能&…

嵌入式硬件库的基本操作方式与分析

本次要介绍的开源软件是 c-periphery: https://github.com/vsergeev/c-periphery一个用 C 语言编写的硬件外设访问库。 我们可以用它来读写 Serial、SPI、I2C 等,非常适合在嵌入式产品上使用。 我们可以基于它优秀的代码框架,不断地扩展出更…

高斯分布与高斯过程

一元高斯分布 我们从最简单最常见的一元高斯分布开始,其概率密度函数为: p ( x ) 1 σ 2 π e x p ( − ( x − μ ) 2 2 σ 2 ) p(x)\frac{1}{\sigma\sqrt{2\pi}}exp(-\frac{(x-\mu)^2}{2\sigma^2}) p(x)σ2π ​1​exp(−2σ2(x−μ)2​) 其中 μ \…

2023年中职组“网络安全”赛项云南省竞赛任务书

2023年中职组“网络安全”赛项 云南省竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…

python接口自动化测试 —— unittest框架suite、runner详细使用

test suite 测试套件,理解成测试用例集一系列的测试用例,或测试套件,理解成测试用例的集合和测试套件的集合当运行测试套件时,则运行里面添加的所有测试用例 test runner 测试运行器用于执行和输出结果的组件 test suite、tes…

HP OfficeJet Pro 8020 如何更换碳粉盒

环境: HP OfficeJet Pro 8020 问题描述: HP OfficeJet Pro 8020 如何更换碳粉盒 解决方案: 更换碳粉盒 更换所有墨水不足的碳粉盒或空碳粉盒。 1.打开前挡盖,然后提起碳粉盒检修门。 打开打印机门 2.等待笔架停止后再继续操作…

外贸人必备的跨境电商常见专有名词!

不管我们在做跨境电商运营、广告或者物流的时候总会遇到很多专有名词或者缩写,但我们接收信息又总是很零散的、不系统的。 所以这边为大家详细整理了常见的专有名词,大家可以保存下来不懂的时候实时查阅噢~ 01 什么是跨境电商 跨境电商是指分属不同关境…

【C++入门系列】——类和对象

​作者主页 📚lovewold少个r博客主页 ⚠️本文重点:C入门知识点以及类和对象的初步了解 😄每日一言:实践能力是自学能力最终转化为真正价值的根本。 目录 前言 auto关键字 auto关键字新用法 auto使用细节 auto与指针和引用结…

VisualStudio(VS)设置程序的版本信息(C-C++)

一、前言 在软件开发过程中,通常需要为生成的程序添加一些重要的元数据,如版本号、公司名称和版权信息。这些信息不仅可以提供对程序的更详细描述,还可以帮助用户了解程序的来源和使用限制。在 Visual Studio (以2017为例)中,可以…

大数据请把这个分离软件推给所有后期~

相信每个后期都要这样一个烦恼,怎样单独提取人声台词?怎么样提取背景音乐,今天就给大家推荐一款超实用的人声分离软件,可以在线提取人声或背景音乐,对于做后期的小伙伴们来说简直就是神器,再也不用到处找音…

C语言指针精简版(三)

目录 字符指针变量 剑指offer中经典题: 数组指针变量 ⼆维数组传参的本质 函数指针变量 typedef关键字 函数指针数组 什么是函数指针数组? 为什么要使用函数指针数组? 转移表 计算器的⼀般实现: 使用函数指针实现&…

MyBatisPlus(二十二)代码生成器

使用场景 使用代码生成器&#xff0c;根据数据库表&#xff0c;自动生成对应的 Entity&#xff0c;Mapper&#xff0c;Service&#xff0c;Controller 。 代码 依赖 两个依赖&#xff1a; 生成器依赖模板依赖 <dependency><groupId>com.baomidou</groupId&…

思维导图Xmind2023安装教程分享

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;xmind 获取 1、解压压缩包得到以下文件。 2、如果“winmm.dll”被系统删除不见&#xff0c;打开屏幕右下角处“windows安全中心”&#xff0c;在历史记录里将已删除的还原即可。 3、以管理员身份打开“Setup”。 4、…