DocArray 是一个用于处理、传输和存储多模态数据的 Python 工具包。DocArray 提供便捷的多模态数据处理功能,具备基于 Protobuf 提供高性能的网络传输性能,同时也为多种向量存储方案提供统一的 API 接口。
DocArray 于 2022 年 1 月在开源 Apache 许可证 2.0 下发布。目前,它是 LF AI \& Data Foundation 下的沙盒项目。
GitHub: https://github.com/docarray
Discord社区: https://discord.gg/WaMp6PVPgR
官方文档:https://docarray.jina.ai/
此版本包含 3 项新功能,7 项错误修正和 5 项文档改进。
新功能
OpenSearch 后端存储(#853)
现在 DocArray 增加了一个新的后端存储:OpenSearch!您可以使用 OpenSearch 后端存储对 Document 进行索引,并对它们进行 ANN 搜索。
from docarray import Document, DocumentArray
import numpy as np
# Connect to OpenSearch instance
n_dim = 3
da = DocumentArray(
storage='opensearch',
config={'n_dim': n_dim},
)
# Index Documents
with da:
da.extend(
[
Document(id=f'r{i}', embedding=i * np.ones(n_dim))
for i in range(10)
]
)
# Perform ANN search
np_query = np.ones(n_dim) * 8
results = da.find(np_query, limit=10)
此外,OpenSearch 后端存储还支持 过滤查询,按文本搜索 和 按标签搜索。有关其用法的更多信息,请参阅 官方文档。
增加 Point Cloud 显示的颜色(#961)
现在您可以在 point cloud 数据中包含颜色信息,可以使用 display_point_cloud_tensor()
可视化:
`coords = np.load('a_red_motorbike/coords.npy')
colors = np.load('a_red_motorbike/coord_colors.npy')
doc = Document(
tensor=coords,
chunks=DocumentArray([Document(tensor=colors, name='point_cloud_colors')])
)
doc.display()
`
支持 Redis 后端存储的多语言文本搜索(#953)
Redis 后端存储现在支持各种支持的语言的文本搜索。要设置所需语言,请在 Redis 配置中更改语言参数:
da = DocumentArray(
storage='redis',
config={
'n_dim': 128,
'index_text': True,
'language': 'chinese',
},
)
错误修正
1. 用空格替换换行符来修复图像中的显示(#963)
当文档字段中包含字符串'\n'
时,doc.plot()
会导致渲染错误。这次修复了这些错误,将'\n'
渲染为空格。
2. 修正to_pydantic_model()
中不需要的强制转换(#949)
此错误导致当调用 to_pydantic_model()
或 to_dict()
时,所有形式为 'Infinity'
的字符串都会被强制转换为字符串 'inf'
。现在已经修复,这些字符串将保留不变。
3. 在索引上而不是查询上计算相关文档(#950)
在embed_and_evaluate()
方法中,每个标签的相关文档数量原先是基于 document 自身计算的。这不一般正确,因此在此修复之后,根据索引数据中的文档计算量。
4. 删除列表类型偏移索引创建(#936)
当文档存储禁用了列表行为的功能时,它不再创建 id 映射的偏移量,这提高了性能。
5. 添加对远程音频文件的支持(#933)
从远程 URL 加载音频文件会导致 FileNotFoundError
,现在已经修复。
6. 查询运算符$exists
与标签不正确(#911)(#923)
在修复之前,$exists
会将 false-y 值(如 0
或 []
)视为不存在。现在已经修复。
7. 从单例列表中的数据类获取文档(#1018)
当使用 dataclass 创建多模态 Document 时,即使相应字段被注释为 List[...]
,单例的列表也被视为单个元素。现在我们已经考虑了这种情况,即使对于单一输入,访问这样的字段也将是产生 DocumentArray。
文档改进
- 新增 DocArray Discord 社区链接(#1010)
- 减少版本以避免部署超时(#977)
- 修正数据管理部分在文档中未出现(#967)
- 在侧边栏中链接到 OpenSearch 文档(#960)
- 将“多模态”修改为“数据类型”(#934)
贡献者
我们要感谢本次发布的所有贡献者!
- Jay Bhambhani (@jay-bhambhani)
- Alvin Prayuda (@alphinside)
- Johannes Messner (@JohannesMessne)
- samsja (@samsja)
- Marco Luca Sbodio (@marcosbodio)
- Anne Yang (@AnneYang720)
- AlaeddineAbdessalem (@alaeddine-13)
- Han Xiao (@hanxiao)
- Alex Cureton-Griffiths (@alexcg1)
- Charlotte Gerhaher (@anna-charlotte)