Jina Hub:一站式神经搜索系统组件分享平台

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

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

* 高度适配深度学习任务的可扩展数据结构 DocArray

* 开源神经搜索框架 Jina

* 神经搜索系统结果调优工具 Finetuner 

* 为文本和图像创建 SOTA 表征向量的 CLIP-as-service

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

Hub:A Marketplace for Executors

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

Jina Hub:一站式神经搜索系统组件分享平台_第1张图片

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,请点击:hub.jina.ai

Jina Hub:一站式神经搜索系统组件分享平台_第2张图片

Jina Hub 目前已有 224 个 Executor

用户可从 Data Types, Libraries, Keywords

三个维度进行筛选

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

Jina Hub:一站式神经搜索系统组件分享平台_第3张图片

开发者 A 的 Executor 公开发布在 Jina Hub 后

可以被开发者 B, C, D 使用

更多关于 Jina Hub 和 Executor 的相关文档,请访问:

https://docs.jina.ai/fundamentals/executor/hub/

本周工程师最推荐的 Executor

 推荐一:CLIPTextEncoder 

CLIPTextEncoder 是一个文本编码器,它使用  Hugging Face Transformer 的 CLIP 模型,封装了文本向量功能。

它将存储在 text 属性中的 Document (文本)作为输入,并将输出的结果向量存储在 embedding 属性中。

CLIP 模型可以把图像和文本,嵌入到相同的潜在特征空间 (latent space)。对应的图像编码器是推荐二的 CLIPImageEncoder,在多模态或跨模态搜索应用中,这两个 Executor 都表现很好。

代码详情可访问:

https://hub.jina.ai/executor/livtkbkg

 推荐二:CLIPImageEncoder

CLIPImageEncoder 是一个图像编码器,它使用 Hugging Face Transformer 的 CLIP 模型,封装了图像向量功能。

因为 CLIPImageEncoder 可以把文本和图像嵌入到同一个潜在特征空间 (latent space),所以它可以和推荐一的 CLIPTextEncoder 一起使用。

代码详情可访问:

https://hub.jina.ai/executor/0hnlmu3q

 推荐三:TransformerTorchEncoder

TransformerTorchEncoder 封装了 Hugging Face Transformer 的 Torch-version,可以把文本数据编码为密集向量 (dense vector)。

TransformerTorchEncoder 接收带有 text 属性的 Document text属性代表要被编码的文本。该 Executor 可以把所有 text 编码成密集向量,并将其存储在 Document embedding 属性中。

代码详情可访问:

https://hub.jina.ai/executor/u9pqs8eb

 推荐四:HNSW + PostgreSQL Indexer

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

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

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

代码详情可访问:

https://hub.jina.ai/executor/dvp0845a

创建并发布 Executor

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

创建 Executor 只需运行:

jina hub new

Jina Hub:一站式神经搜索系统组件分享平台_第4张图片

更多详情可访问:

https://docs.jina.ai/fundamentals/executor/hub/create-hub-executor/

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

* Public:默认选项,任何人都可使用

* Private:仅拥有 secret 的用户可以使用

首次发布:

jina hub push [--public/--private] 

Jina Hub:一站式神经搜索系统组件分享平台_第5张图片

更多详情可访问:

https://docs.jina.ai/fundamentals/executor/hub/push-executor/

本地使用 Executor:

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

* Use as-is

* Use in a Flow: via Docker

* Use in a Flow: via source code

更多详情可访问:

https://docs.jina.ai/fundamentals/executor/hub/use-hub-executor/

远程使用 Executor:

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

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

Jina Hub:一站式神经搜索系统组件分享平台_第6张图片

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

更多详情可访问:

https://docs.jina.ai/how-to/sandbox/

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

Jina Hub:一站式神经搜索系统组件分享平台_第7张图片

神经搜索、深度学习、推荐系统

教程、Demo、干货分享

扫码备注加入讨论组

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

Jina Hub:一站式神经搜索系统组件分享平台_第8张图片

Jina Hub:一站式神经搜索系统组件分享平台_第9张图片

你可能感兴趣的:(python,人工智能,java,编程语言,大数据)