Hub 是 Jina 全家桶中非常重要的一个成员,本期推文我们将详细介绍 Hub 的相关内容。
在过往推文中,我们介绍过:
- [高度适配深度学习任务的可扩展数据结构 DocArray]()
- [开源神经搜索框架 Jina]()
- [神经搜索系统结果调优工具 Finetuner]()
- [为文本和图像创建 SOTA 表征向量的 CLIP-as-service]()
今天,我们将为大家介绍 Jina 全家桶中,另一个重要成员--Jina Hub。
Hub:A Marketplace for Executors
我们知道,Document、Executor 和 Flow 是 Jina 中的三个重要概念。
Document:封装非结构化数据
Executor:实现神经搜索系统所需要的不同模块
Flow:将 Executor 连接起来
Document 是 Jina 中一个基础的数据类型, 可以帮助开发者方便地描述非结构化数据,相当于 Numpy 中的 ndarray 或 PyTorch 中的 Tensor。
一组 Document 构成一个 DocumentArray,开发者可以像使用 Python 原生的 list 一样使用 DocumentArray。
Executor 对应神经搜索系统中的不同模块, 实现对数据处理的核心功能。
Flow 则对应整套神经搜索系统, 将多个 Executor 连接起来,构建成一套完整的搜索系统。
在 Flow 中调用 Executor 十分简单:
from jina import Flow
f = Flow().add(uses='jinahub+docker://MyExecutor')
with f:
...
*Jina Hub 就是一个 Executer 分享平台,* 开发者可以在 Jina Hub,方便地与团队成员或社区伙伴,分享自己的 Executer。
Jina Hub 目前已有 224 个 Executor
用户可从 Data Types, Libraries, Keywords
三个维度进行筛选
通过 Hub,开发者可以直接调用先前创建的 Executor,或将自己创建的 Executor 分享给社区或团队。这会极大降低创建神经搜索系统的难度和复杂度。
开发者 A 的 Executor 公开发布在 Jina Hub 后
可以被开发者 B, C, D 使用
本周工程师最推荐的 Executor
推荐一: CLIPTextEncoder
CLIPTextEncoder 是一个文本编码器,它使用 Hugging Face Transformer 的 CLIP 模型,封装了文本向量功能。
它将存储在 text 属性中的 Document (文本)作为输入,并将输出的结果向量存储在 embedding 属性中。
CLIP 模型可以把图像和文本,嵌入到相同的潜在特征空间 (latent space)。对应的图像编码器是推荐二的 CLIPImageEncoder,在多模态或跨模态搜索应用中,这两个 Executor 都表现很好。
推荐二:CLIPImageEncoder
CLIPImageEncoder 是一个图像编码器,它使用 Hugging Face Transformer 的 CLIP 模型,封装了图像向量功能。
因为 CLIPImageEncoder 可以把文本和图像嵌入到同一个潜在特征空间 (latent space),所以它可以和推荐一的 CLIPTextEncoder 一起使用。
推荐三:TransformerTorchEncoder
TransformerTorchEncoder 封装了 Hugging Face Transformer 的 Torch-version,可以把文本数据编码为密集向量 (dense vector)。
TransformerTorchEncoder 接收带有 text 属性的 Document 。text属性代表要被编码的文本。该 Executor 可以把所有 text 编码成密集向量,并将其存储在 Document 的 embedding 属性中。
推荐四:HNSW + PostgreSQL Indexer
HNSWPostgreSQLIndexer 是一个为 Jina 神经搜索框架,量身打造的索引器 (Indexer),兼具生产就绪和高扩展特性。
它结合了 PostgreSQL 的可靠性,以及 HNSWlib 最近邻库的速度和效率。
因此 ,它可以提供数据库系统所需的任何 CRUD 操作,同时也支持迅速和可靠的向量查询。
创建并发布 Executor
在 Jina Hub 中,开发者可以创建并发布自己的 Executor,同时还支持在本地或远程使用 Executor。
jina hub new
*发布 Executor 到 Jina Hub, 开发者可选择公开范围:*
- Public:默认选项,任何人都可使用
- Private:仅拥有 secret 的用户可以使用
首次发布:
jina hub push [--public/--private] <path_to_executor_folder>
在项目中使用 Hub Executors 的三种方法:
- Use as-is
- Use in a Flow: via Docker
- Use in a Flow: via source code
Jina Sandbox 支持云端下载和运行,它通过一个主机和端口来进行连接,Jina 可以自动处理这个连接。
Jina Sandbox 极大降低了试用 Executor 的时间成本,同时,还可以为本地机器节省大量计算资源。
使用 Sandbox 和不使用 Sandbox 的流程对比
以上就是本期关于 Jina Hub 的全部内容,更多代码详情、使用方法、依赖环境等信息,请访问 hub.jina.ai 获取。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。