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 属性的 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 获取。
技术分享实录
Finetuner 0.7.1版本发布!支持在之前模型基础上继续微调,新增SphereFace损失函数!
JinaAI阅读 263
SegmentFault 思否宣布将接入百度「文心一言」,提升开发者获取知识的效率
SegmentFault思否赞 11阅读 3k评论 1
花了半个小时基于 ChatGPT 搭建了一个微信机器人
Java极客技术赞 12阅读 3.1k评论 3
数据结构与算法:二分查找
白鲸鱼赞 9阅读 5.2k
对 ChatGPT 做一次技术面试(ChatGPT 没能通过)
捏造的信仰赞 7阅读 1.5k评论 1
openKylin 0.9.5版本正式发布,加速国产操作系统自主创新进程!
openKylin赞 6阅读 7.9k
超详细的ChatGPT注册教程来了
xiangzhihong赞 3阅读 2.7k评论 3
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。