头图

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

GitHub:http://github.com/docarray/do...
文档:docarray.jina.aiDocArray

基于 Apache 2.0 License 协议,于 2022 年 1 月正式发布,目前是 LF AI & Data 基金会的沙盒项目。同时,DocArray 也是 Jina 生态使用的通用数据结构。

本次发布新增了对 Milvus 向量数据库的支持,现在可以将 Milvus 作为 DocArray 后端存储;新增了支持在嵌套级别检索 Root document;DocArray 现已支持不同格式的 3D 模型表示,此版本新增了 RGB-D 格式表示的支持;同时新增了对 Qdrant 基于关键字的文本过滤的支持,以及支持加载多页 tiff 图像到chunk等等。

重要新功能

1. 新增 Milvus 后端存储支持

DocArray 现在支持 Milvus 向量数据库作为后端存储。Milvus 提供了高性能的向量搜索和分析功能,并支持大规模地添加、删除、更新和近乎实时的搜索向量。有了 Milvus,DocArray 可以提供更快、更准确的搜索结果。

DocArray 和 Milvus 的集成使得用户可以通过统一熟悉的 DocArray API 就能享受 Milvus 所有的优势。与其他后端存储一样,配置起来非常简单:

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

2. 通过 root_id 更好地支持嵌套搜索

在处理嵌套数据时,我们通常在给定的嵌套级别上比较数据,例如视频中的帧,但我们实际需要的返回结果是整个视频。

也就是说,在使用向量数据库时,即使在嵌套级别(例如在 chunk 级别)使用 sub-indices(子索引)进行搜索时,也可以检索 root-document(根文档)。在存储配置中设置root_id=True,就可以启用此功能。

top_level_matches = da.find(query=np.random.rand(512), on='@.[image]', return_root=True)

3. 新增 RGB-D 格式的 3D 模型表示

DocArray 已经支持不同格式的 3D 模型表示,这个版本增加了对 RGB-D 格式表示的支持。
doc.load_uris_to_rgbd_tensor()

其它新增功能

将多页 tiff 文件加载到 Chunk 中

现在通过load_uri_to_image_tensor()可以加载多页 tiff 图像。

d = Document(uri="foo.tiff")
d.load_uri_to_image_tensor()
print(d)
<Document ('id', 'uri', 'chunks') at 7f907d786d6c11ec840a1e008a366d49>
  └─ chunks
     ├─ <Document ('id', 'parent_id', 'granularity', 'tensor') at 7aa4c0ba66cf6c300b7f07fdcbc2fdc8>
     ├─ <Document ('id', 'parent_id', 'granularity', 'tensor') at bc94a3e3ca60352f2e4c9ab1b1bb9c22>
     └─ <Document ('id', 'parent_id', 'granularity', 'tensor') at 36fe0d1daf4442ad6461c619f8bb25b7>

基于 Qdrant 的文本关键字过滤

filter = {
    'must': [
        {"key": "info", "match": {"text": "shoes"}}
    ]
}

results = da.find(np.random.rand(n_dim), filter=filter)

上面的代码将在所有包含 "shoes" 关键字的 Document 中进行搜索,并返回相应的结果。

从 uri 加载视频向量时存储关键帧索引

当从 uri 加载视频向量时,会在 Document 的 tags 中存储 key_frame_indices。这样,就可以提取视频中关键帧之间的部分。

d = Document(uri="video.mp4").load_uri_to_video_tensor()
print(d.tags['keyframe_indices'])
[0, 25, 196, ...]

更好地绘制嵌套和复杂数据的 embedding 图

您现在可以选择在调用 DocumentArray 的方法 plot_embedding()排除哪些元字段,这使得绘制复杂和嵌套数据的 embedding 图变得更加容易。

docs.plot_embeddings(exclude_fields_metas=['chunks'])

更好地支持信息检索评估

此版本向评估函数增加了 max_rel_per_label 参数,它提供了每个标签的相关文档数,即集合中具有该标签的文档数。

metrics = da.evaluate(['recall_at_k'], max_rel_per_label={i: 1 for i in range(3)})

bug 修复

支持独立于类列表行为的长度计算

本次发布中,我们修复了在 DocArray 0.19 版本里引入的 Redis 后端存储的长度计算,使其独立于类列表行为。

删除有错误赋值的余弦相似度字段

在 Weaviate 的后端存储中,余弦距离不会g再被错误地分配给 cosine_similarity 字段。

清除存储后重建索引

当调用 _clear_storage 时,就可以重建 Redis 和 Elasticsearch 文档存储的索引。更多详细信息请点击 https://jina.ai/news/docarray...

文档更新

这一部分主要涉及文档的改进,包括更正文档中的错误描述、修复文档中的链接、修改逻辑顺序以符合博客文章,以及将云支持移动到整合部分。这些更新旨在让文档更加清晰易读,帮助用户更好地了解 DocArray。更多详细信息请访问文档 docarray.jina.ai

贡献者

在此感谢本次发布的所有贡献者:
Delgermurun
杨小燕
Anna-charlotte
Johannes Messner
Alex Cureton-Griffiths
Alaeddine
Abdessalem
相栋
coolmian
Joan Fontanals
王楠
Sami Jaghouar
Michael Günther


JinaAI
21 声望12 粉丝

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