Hub 是 Jina 全家桶中非常重要的一个成员,本期推文我们将详细介绍 Hub 的相关内容。

在过往推文中,我们介绍过:

  • [高度适配深度学习任务的可扩展数据结构 DocArray]()
  • [开源神经搜索框架 Jina]()
  • [神经搜索系统结果调优工具 Finetuner]()
  • [为文本和图像创建 SOTA 表征向量的 CLIP-as-service]()

今天,我们将为大家介绍 Jina 全家桶中,另一个重要成员--Jina Hub。

Hub:A Marketplace for Executors

我们知道,Document、Executor 和 Flow 是 Jina 中的三个重要概念。

d803e2de0e3b8f67cfc11bc188215021.png title=

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:
    ...

 title=

*Jina Hub 就是一个 Executer 分享平台,* 开发者可以在 Jina Hub,方便地与团队成员或社区伙伴,分享自己的 Executer。

54cf69dfa239d88182db9819ba19f1f7.png title=

Jina Hub 目前已有 224 个 Executor

用户可从 Data Types, Libraries, Keywords

三个维度进行筛选

通过 Hub,开发者可以直接调用先前创建的 Executor,或将自己创建的 Executor 分享给社区或团队。这会极大降低创建神经搜索系统的难度和复杂度。

4a0fa110960b64c3da20864cfd8719f7.png title=

开发者 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 属性的 Documenttext属性代表要被编码的文本。该 Executor 可以把所有 text 编码成密集向量,并将其存储在 Documentembedding 属性中。

推荐四:HNSW + PostgreSQL Indexer

HNSWPostgreSQLIndexer 是一个为 Jina 神经搜索框架,量身打造的索引器 (Indexer),兼具生产就绪和高扩展特性。

它结合了 PostgreSQL 的可靠性,以及 HNSWlib 最近邻库的速度和效率。

因此 ,它可以提供数据库系统所需的任何 CRUD 操作,同时也支持迅速和可靠的向量查询。

创建并发布 Executor

在 Jina Hub 中,开发者可以创建并发布自己的 Executor,同时还支持在本地或远程使用 Executor。

创建 Executor 只需运行:

jina hub new

 title=

ccc54a0b4fb5eb3e6af0354237dcb6c5.gif title=

*发布 Executor 到 Jina Hub, 开发者可选择公开范围:*

  • Public:默认选项,任何人都可使用
  • Private:仅拥有 secret 的用户可以使用

首次发布:

jina hub push [--public/--private] <path_to_executor_folder>

 title=

af9fdccbb3da611e0c4b63ab9a322d62.gif title=

本地使用 Executor:

在项目中使用 Hub Executors 的三种方法:

  • Use as-is
  • Use in a Flow: via Docker
  • Use in a Flow: via source code

远程使用 Executor:

Jina Sandbox 支持云端下载和运行,它通过一个主机和端口来进行连接,Jina 可以自动处理这个连接。

Jina Sandbox 极大降低了试用 Executor 的时间成本,同时,还可以为本地机器节省大量计算资源。

288055d5396f8a09affd7e20193441bc.png title=

使用 Sandbox 和不使用 Sandbox 的流程对比

以上就是本期关于 Jina Hub 的全部内容,更多代码详情、使用方法、依赖环境等信息,请访问 hub.jina.ai 获取。


JinaAI
21 声望12 粉丝

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