乐趣区

关于深度学习:Jina-Hub一站式神经搜索系统组件分享平台

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

举荐四:HNSW + PostgreSQL Indexer

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

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

因而 ,它能够提供数据库系统所需的任何 CRUD 操作,同时也反对迅速和牢靠的向量查问。

创立并公布 Executor

在 Jina Hub 中,开发者能够创立并公布本人的 Executor,同时还反对在本地或近程应用 Executor。

创立 Executor 只需运行:

jina hub new

* 公布 Executor 到 Jina Hub, 开发者可抉择公开范畴:*

  • Public:默认选项,任何人都可应用
  • Private:仅领有 secret 的用户能够应用

首次公布:

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

本地应用 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 的工夫老本,同时,还能够为本地机器节俭大量计算资源。

应用 Sandbox 和不应用 Sandbox 的流程比照

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

退出移动版