Jina AI正式将DocArray捐赠给Linux基金会

news2024/11/26 14:53:50

0e57eec6d6daf2bcd87ba13a10a4e749.png

DocArray 是一个用于处理、传输和存储多模态数据的 Python 工具包。DocArray 提供便捷的多模态数据处理功能,具备基于 Protobuf 提供高性能的网络传输性能,同时也为多种向量存储方案提供统一的 API 接口。

现在 Jina AI 正式将 DocArray 项目捐赠给 Linux 基金会,打造一个中立、包容和通用的标准多模态数据模型。

自 11 月起,DocArray 由 Linux Foundation AI & Data 基金会托管,Linux Foundation AI & Data 是一个综合性组织,支持人工智能、数据方面的开源创新,DocArray 会在这里迎来全新的开始。

DocArray 是一款可以表示、嵌入、检索、存储和转换多模态数据的强大工具,为开发者提供了便捷的多模态数据处理功能,具备基于 Protobuf 提供的高性能网络传输性能,同时也为多种向量存储方案提供统一的 API 接口。

从 DocArray 首次发布到现在十个月的时间里,我们看到了开源社区越来越多的采用和贡献。截至今日,DocArray 的每月下载量超过 150,000 次,并为数百个多模态 AI 应用提供了支持。现在,我们向我们的社区用户以及合作伙伴们承诺,我们把 DocArray 捐赠给 LF AI & Data,将构建一个中立、包容和通用的标准多模态数据模型。把 DocArray 捐赠给 LF AI & Data,会让它在更广阔的天空展翅翱翔。

由 LF AI & Data 托管 DocArray 意味着什么?

在 Linux 基金会托管项目,项目的管理将遵循开放治理[1]的方式,这意味着没有任何公司或个人可以控制一个项目。当开源项目的维护者决定将其托管在 Linux Foundation 时,会将该项目的商标所有权转让给 Linux Foundation。

🎉 在这篇文章中,我们将和大家一起回顾 DocArray 的重要时刻,并分享我们接下来更具突破性的 Roadmap,此外还将预告 DocArray 已经完成开发,并即将发布的功能!

回顾 DocArray 发展

我们在 2020 年底发布的 Jina 0.8 中引入了 DocArray 的概念,它是jina.types的模块,旨在用非结构化的数据表征和完善神经搜索系统的设计模式。相比于直接使用 Protobuf ,Document类为表征多模态数据提供了一个安全高效的API。

5e9d49aa989ddb7f1f0bf89aead1f6ac.png

右图中标有 jina.types 的绿框是 DocArray 的第一个版本

随着时间的推移,我们扩展了 jina.types 并且超越了 Protobuf 的 Pythonic API。为了简化 DocumentArray 的批处理操作,我们添加了 DocumentArray 。然后我们为不同模态的数据(例如,文本、图像、视频、语音和 3D 网格)提供了 IO 和预处理函数。 Executor 开始使用 DocumentArray 作为输入输出。2021 年发布的 Jina 2.0 设计更加强大, Document , ExecutorFlow 成为了 Jina 的三个基本元素
  • • Document 是 Jina 中的基本数据类型。

  • • Executor 是 Jina 处理 Document 的基本算法单元。

  • • Flow 将 Executor 连接成 pipeline,从而用于具体的任务。

这受到了社区使用者们的一致好评,因为它通过封装复杂性的操作提升了开发人员的使用体验,使得开发者更专注于自己的任务。

a543e478f054d62160e304d7f850281f.png自 Jina 2.0 以来,jina.types一直是搭建多模态 AI 服务的基本元素。

随着jina.types的发展,它在概念上逐渐独立于 Jina。jina.types更多的是在本地创建,而 Jina 则更专注于服务化。试图在一个代码库中实现两个完全不同的目标会带来维护方面的障碍:一方面 Jina AI 需要不断地迭代更新并且添加新的功能以满足 AI 社区的发展需求。另一方面,Jina 作为基础架构必须保证稳定性和鲁棒性。维护障碍导致 Jina 的发展放缓。

在 2021 年末,我们通过将jina.types和 Jina 解耦解决了维护障碍的问题。这次重构也为后来的 DocArray 奠定了基础。它为 AI 工程师提供了一个可以表示、存储和嵌入多模态数据的数据结构。DocArray 更专注于本地用户的使用体验,并针对快速原型设计进行了优化。而 Jina 能将原型设计快速提升到生产服务中, 我们在 2022 年初与 Jina 3.0 同步发布了 DocArray 0.1,并且将 DocArray 0.1 作为一个新的开源项目独立发布。DocArray 的第一个版本就受到了社区的热烈欢迎。

💡 我们之所以取名为 DocArray,是因为想让它像 NumPy 的 ndarray 一样被广泛使用。

现在,DocArray 已经成为很多多模态 AI 应用的入口,比如 DALLE-Flow[2] 和 DiscoArt[3]。为了进一步提高可用性,我们还引入了 dataclass 和document store。除此之外,为了达成通用标准,DocArray 已经与 Weaviate, Qdrant, Redis, Elasticsearch, FastAPI, pydantic 和 Jupyter 等开源合作伙伴结盟,并实现功能整合。随着 AI 模型向多模态的范式转换[4],我们也见证了 DocArray 作为这场革命的关键参与者的巨大潜力。

fecacbdd07c95fa3db6efa0d20a51a0a.gifDocArray 0.19(2022年11月15日发布),支持对三维网格数据的表示和处理。

下一代 DocArray 

DocArray 捐赠给 LF AI & Data 是一个重要的里程碑,这标志着我们与开源社区开放、公开地、包容地、建设性地共享我们的研究。

下一代 DocArray 聚焦于以下 4 个任务:

  • • 表示:支持 Python idioms,用于简化复杂、嵌套的多模态数据的表征。

  • • 嵌入:为主流深度学习模型提供流畅的接口,用来高效地嵌入数据。

  • • 存储:支持多个向量数据库,以实现有效持久性以及相似性搜索。

  •  传输:允许快速(反)序列化,并且可以通过 gRPC、Websocket 或 HTTP  三种方式对外提供服务。

我们邀请了 DocArray 的两位核心维护者 Sami Jaghouar 和 Johannes Messner,带领大家预览下一代的 DocArray。

All in dataclass

105b75e366c479160305d20ce6a4d9f2.png

dataclass是 DocArray 中用于表示多模态 document 的高级 API,它遵循标准 Python 数据类[5] 的设计和习惯。让用户可以直观地表示复杂的多模态 document,并通过 DocArray 的 API 轻松处理它们。 新版本通过使用 pydantic V2 重构了旧版本的 dataclass,使得 dataclass 成为了“一级函数”。

让我们一起预览如何使用新的dataclass。首先,Document 是一个带有随机 ID 和 Protobuf 接口的 pydantic 模型:

from docarray import Document

为了创建自己的多模态数据类,你只需要继承 Document

from docarray import Document
from docarray.typing import Tensor
import numpy as np

class Banner(Document):
    alt_text: str
    image: Tensor

banner = Banner(text='DocArray is amazing', image=np.zeros((3, 224, 224)))

一旦你定义了Banner,你就可以把它作为模块来表示更复杂的数据:

class BlogPost(Document):
    title: str
    excerpt: str
    banner: Banner
    tags: List[str]
    content: str

在BlogPost中添加一个嵌入字段很容易:你可以使用预定义的文档模型TextImage,它们都带有嵌入字段。

from typing import Optional
from docarray.typing import Embedding

class Image(Document):
    src: str
    embedding: Optional[Embedding]

class Text(Document):
    content: str
    embedding: Optional[Embedding]

然后你就可以表示自己的BlogPost

class Banner(Document):
    alt_text: str
    image: Image

class BlogPost(Document):
    title: Text
    excerpt: Text
    banner: Banner
    tags: List[str]
    content: Text

新版本的 DocArray 为你的多模态 BlogPost 提供了四种嵌入表示:titleexcerptcontent 和 banner

Milvus 支持

37e9be99439bc8cf2c3473d3c177758c.png

Milvus 是一个开源向量数据库,也是一个托管在 LF AI & Data 下的开源项目。它高度灵活、可靠且速度极快,并支持大规模地添加、删除、更新和近乎实时的搜索向量。作为 DocArray 迈向更具包容性的第一步,Johannes Messner 一直在极力促成 DocArray 和 Milvus 的集成[6] 。

与其他文档存储一样,你很容易就能用 Milvus 实例化 DocumentArray,config 是 Milvus 集合的配置文件,其中, n_dim 是用于指定嵌入向量维度的强制字段。

from docarray import DocumentArray

da = DocumentArray(storage='milvus', config={'n_dim': 10})

下面代码展示了一个在 localhost 上运行 Milvus 服务器的示例,你需要指定collection_namehostport,才能访问其他服务器的持久数据。

import numpy as np

from docarray import DocumentArray

N, D = 5, 128

da = DocumentArray.empty(
    N, storage='milvus', config={'n_dim': D, 'distance': 'IP'}
)# initwith da:
    da.embeddings = np.random.random([N, D])

print(da.find(np.random.random(D), limit=10))

DocArray 和 Milvus 的集成使得用户可以通过统一熟悉的 DocArray API 就能享受 Milvus 所有的优势。

拥抱开源治理

dd435935a0b7e75d03c2822e5c6a44ea.png

最后,让我们谈谈 DocArray 未来的管理方式。“Open Governance” (开放治理)指的是项目的管理模式,即如何制定决策,如何搭建项目以及项目由谁负责。在开源软件的背景下,“Open Governance”意味着项目的技术活动,代码以及配置的开发都将公开透明地进行,并且允许公众参与开发过程。

开放治理 DocArray 将带来很多好处:

  • • DocArray 将民主化地运行,并且每个人都有话语权。

  • • 由于任何人都可以参与到开发中,所以 DocArray 会更方便和包容。

  • • 因为决策会以公开透明的方式进行,所以 DocArray 的质量也会更高。

同时,我们也将主动拥抱开放治理,包括:

  • • 创建一个 DocArray 技术指导委员会 (TSC) 来帮助指导该项目。

  • • 开放开发的过程以便获取更多来自于社区的贡献和反馈。

  • • 提高 DocArray 开发的包容性,使得开发对新的贡献者更友好。

  •  关于 Linux Foundation 

Linux Foundation(LF)是一个成立于 2000 年的非营利性技术联盟,由开源开发实验室和自由标准组织合并而成。LF 的成立旨在促进、保护、标准化 Linux、并且推进它的商业化。此外,LF 还负责托管和促进开源软件项目的协作开发,目前,它已经成为了促进 Linux 以及开源软件社区多样性和包容性的支柱力量。Linux Foundation 为开发人员编码、管理和扩展开放技术项目提供了一个中立、可靠的中心。

 关于 Linux Foundation AI & Data 

LF AI & Data 是 Linux 基金会的一个伞形基金会,支持人工智能和数据的开源创新。创建 LF AI & Data 是为了支持开源 AI 和数据,并创建一个可持续的开源 AI 系统,让开源技术创建AI以及数据变得更加容易。LF AI & Data 促进项目在中立的环境下以开放的治理进行协作,以支持开放源技术项目的协调和加速。

 关于 Jina AI 

Jina AI 是一家专注于神经搜索和生成式 AI 技术的商业化开源软件公司,我们围绕核心的 Jina 和 DocArray 两个开源项目,打造了针对多模态应用的 MLOps 平台,帮助企业高效率且高质量的开发包括神经搜索系统和生成式 AI 在内的各种多模态应用,在 GitHub 累计收到来自全球开发者超过 36k Star 的关注。

作者:Jina AI 工程团队

译者:吴书凝 

原文链接:https://jina.ai/news/donate-docarray-lf-for-inclusive-standard-multimodal-data-model/

引用链接

[1]

开放治理: https:/github.com/opengovernance/opengovernance.dev

[2]

DALLE-Flow: https://github.com/jina-ai/dalle-flow

[3]

DiscoArt: https://github.com/jina-ai/discoart

[4]

AI 模型向多模态的范式转换: https://jina.ai/news/paradigm-shift-towards-multimodal-ai/

[5]

Python数据类: https://docs.python.org/3/library/dataclasses.html

[6]

DocArray 和 Milvus 的集成: https://github.com/docarray/docarray/pull/587

DocArray更多资料

💻 GitHub: github.com/docarray【阅读原文

📖 文档docarray.jina.ai

🔗 原文链:https://jina.ai/news/donate-docarray-lf-for-inclusive-standard-multimodal-data-model/

92a6c813187712582194ef7efabe33b7.png

更多精彩内容(点击图片阅读)

6c23abc1752a14a1c778cbe3d013de7d.jpeg161afb700b5593acf4663f13596805d3.jpeg

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

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

相关文章

JAVA助农电商商城平台毕业设计,JAVA助农销售网站系统设计与实现,毕设作品参考

功能清单 【后台管理功能模块】 系统设置:设置关于我们、联系我们、加入我们、法律声明的信息。 广告管理:设置网站首页轮播图和链接地址。 留言管理:显示用户通过前台留言的列表,支持删除。 会员中心:显示所有注册用户…

鲲鹏devkit性能分析工具介绍(四)

鲲鹏devkit性能分析工具介绍(四) 前面我们已经介绍了鲲鹏devkit性能分析工具的全景分析、热点函数分析、进程/线程分析、微架构分析、和访存分析,由此可见进行性能调优绝对不能够仅仅去进行一方面的考察而是需要全方面的数据分析进行一定的舍…

外汇天眼:经济衰退无阻加息,欧美货币政策齐收紧

美联储和欧洲央行官员在近两日发表讲话,先后释放进一步加息信号,美股、欧股事后均收跌,市场预计美元、欧元近期将下跌。 通胀仍高于目标,两大央行将进一步加息 除了非农报告等关键通胀数据,本周央行动态同样备受市场关…

软件测试 -- 进阶 5 软件测试用例

及之而后知,履之而后艰,乌有不行而能知者乎?。-- 魏源 释译:实际接触之后才知道真相,新自做了之后才知道困难,哪有不实践就能够知道的呢? 需求 -> 分析 -> 设计 -> 策略&#xff0…

大数据中Hadoop、Hive、Spark的关系

文章总括图 数据存储 单机数据库时代 所有数据在单机都能存的下,数据处理的任务都是IO密集型,更谈不上分布式系统 一个典型的2U服务器可以插6块硬盘,每块硬盘4T,共24T原始容量,再加上一些数据包的可用冗余&#xf…

A Self-Attentive model for Knowledge Tracing论文笔记和代码解析

原文链接和代码链接A Self-Attentive model for Knowledge Tracing | Papers With Code motivation:传统方法面临着处理稀疏数据时不能很好地泛化的问题。 本文提出了一种基于自注意力机制的知识追踪模型 Self Attentive Knowledge Tracing (SAKT)。其本质是用 Tra…

【博学谷学习记录】超强总结,用心分享|架构师-Spring核心组件介绍

文章目录一、Bean组件二、Context组件一、Bean组件 Bean组件定义在Spring的org.springframework.beans包下,解决了以下几个问题: 这个包下的所有类主要解决了三件事: Bean的定义 Bean的创建 Bean的解析 Spring Bean的创建是典型的工厂模式…

centos7安装字体和中文字体

文章目录1.查看自己的操作系统2. 安装字体库3.安装更新字体命令4.查看中文字体5.新建目录6.拷贝 fonts.scale 和windows上的字体到chinese文件夹中.将字体文件放在chinese目录7.授权,该目录及其下所有文件需要有执行权限8.重新建立字体索引、更新缓存9.查看字体是否…

信号包络及其提取方法(Matlab)

信号包络及其提取方法 介绍信号包络,以及信号包络的提取方法。 一、信号包络 直观地从时域来讲,信号包络就是信号波形的轮廓。 本质上,信号包络是带通信号的基带部分。 一个实带通信号记为x(t),将它频谱的中心频点搬移到零频…

数据结构初阶--栈和队列(讲解+类模板实现)

栈的概念和结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)加粗样式的原则。 入…

debug - 用Procmon记录目标程序启动后的操作

文章目录debug - 用Procmon记录目标程序启动后的操作概述笔记备注ENDdebug - 用Procmon记录目标程序启动后的操作 概述 想看看 D:\Cadence\SPB_17.4\tools\bin\Capture.exe 开始页中的recent projects 从哪里读的. 想用Procmon记录Capture.exe启动后的动作, 再记录成文本日志…

【Spring】一文带你吃透AOP面向切面编程技术(上篇)

个人主页: 几分醉意的CSDN博客_传送门 文章目录💖AOP概念✨AOP作用✨AOP术语✨什么时候需要用AOP💖Aspectj框架介绍✨Aspectj的5个通知注解✨Aspectj切入点表达式✨前置通知Before💖投票传送门(欢迎伙伴们投票&#xf…

Nginx加载Lua脚本lua_shared_dict缓存

1、介绍 lua_shared_dict缓存是nginx为lua提供的一个多进程共享空间,为了避免多进程修改造成脏数据,lua_shared_dict修改数据是用锁来实现的。这样就会有qps访问瓶颈变小的问题。这是性能缺点。 2、使用 1)首先在nginx.conf里申请一块共享…

数据分享|PYTHON用决策树分类预测糖尿病和可视化实例

全文下载链接:http://tecdat.cn/?p23848在本文中,决策树是对例子进行分类的一种简单表示。它是一种有监督的机器学习技术,数据根据某个参数被连续分割。决策树分析可以帮助解决分类和回归问题(点击文末“阅读原文”获取完整代码数…

大一学生WEB前端静态网页——唯品会1页 包含hover效果

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业,Web大学生网页 HTML&a…

SpringCloud:使用Nacos作为配置中心

目录 一、nacos配置中心简介 二、nacos配置实时更新及同一个微服务不同环境的差异化配置 准备工作 针对商品微服务实现实时更新(以商品微服务为例) 三、nacos同一个微服务不同环境的共享配置 同一个微服务修改配置才能访问不同环境 四、nacos不同微…

【JavaEE】MyBatis

文章目录1.MyBatis介绍2.MyBatis快速入门3.Mapper代理开发4.MyBatis核心配置文件5.配置文件完成增删改查5.1 查询5.2 添加/修改5.3 删除6.MyBatis参数传递7.注解完成增删改查1.MyBatis介绍 1.什么是MyBatis? MyBatis是一款优秀的 持久层框架,用于简化JDBC开发MyBat…

STC 51单片机46——看门狗测试

#include <reg52.h> sfr WDT_CONTR 0xE1; //声明WDT_CONTR void delay(void){ //改变延时长度&#xff0c;可以观测是否触发看门狗 unsigned char i,j,k; for(i0;i<255;i) for(j0;j<255;j) for(k0;k<255;k); } void…

图神经网络

前言 图与图的表示 图是由一些点和一些线构成的&#xff0c;能表示一些实体之间的关系&#xff0c;图中的点就是实体&#xff0c;线就是实体间的关系。如下图&#xff0c;v就是顶点&#xff0c;e是边&#xff0c;u是整张图。attrinbutes是信息的意思&#xff0c;每个点、每条…

MFC界面控件BCGControlBar v33.3 - 升级Ribbon Bar自定义功能

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 该版本包含了增强的Ribbon自定义、新的日期/时间数字指示器、带有文本对齐的组控件、多行支持以及其他一些新功…