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

2023-11-14

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

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

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

* 开源神经搜索框架 Jina

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

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

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

Hub:A Marketplace for Executors

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

d803e2de0e3b8f67cfc11bc188215021.png

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

54cf69dfa239d88182db9819ba19f1f7.png

Jina Hub 目前已有 224 个 Executor

用户可从 Data Types, Libraries, Keywords

三个维度进行筛选

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

4a0fa110960b64c3da20864cfd8719f7.png

开发者 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

ccc54a0b4fb5eb3e6af0354237dcb6c5.gif

更多详情可访问:

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

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

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

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

首次发布:

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

af9fdccbb3da611e0c4b63ab9a322d62.gif

更多详情可访问:

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 的时间成本,同时,还可以为本地机器节省大量计算资源。

288055d5396f8a09affd7e20193441bc.png

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

更多详情可访问:

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

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

abbd9ddf2dd8bf3a9bf3c6ff408cd45e.png

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

教程、Demo、干货分享

扫码备注加入讨论组

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

aaaf878ae8b2572323023b8a50deb44b.png

e6f42b55e971b128d21ba71efc06b52c.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jina Hub:一站式神经搜索系统组件分享平台 的相关文章

  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • FL Studio 20汉化补丁及详细激活使用说明/fl studio21怎么设置中文?

    音乐在人们心中的地位日益增高 近几年音乐选秀的节目更是层出不穷 喜爱音乐 创作音乐的朋友们也是越来越多 音乐的类型有很多 好比古典 流行 摇滚等等 对新手友好程度基本上在首位 电音类制作支持仅次于Ableton Push 调用音色和素材很方
  • 第五站:入门级小白易上手JavaScript

    第五站 入门级小白易上手JavaScript 文章目录 第五站 入门级小白易上手JavaScript 复习Web标准 三位好基友 什么是JavaScript 让我们开启JavaScript的奇妙冒险 引入JavaScript 让魔法生效 内
  • 如何下载安装jdk

    1 下载jdk 在oracle官网中下载jdk https www oracle com https www oracle com 按照如下流程依次点击 下载自己喜欢的版本即可 2 安装jdk 3 配置环境变量 新建 gt 变量名 JAVA
  • Web存储

    目录 什么是 HTML5 Web 存储 方法 cookie webStorage 会话存储 sessionStorage 本地存储localStorage 什么是 HTML5 Web 存储 使用HTML5可以在本地存储用户的浏览数据 早些时
  • Node.js连接MySQL连接池解决自动断开问题

    1 为什么要使用连接池 自己将node 写的api接口 部署服务器时 发现运行一段时间后 会查询不到数据库里的内容 通过自己百度发现到了自己没有关闭数据库 默认数据库可以保持连接一段时间 之后 就会断开连接 2 连接池如何使用 const
  • UA分享

    之前自架短地址服务搜集到的UA 感觉很乱没法分析 看看大佬们有没有兴趣 Mozilla 5 0 Linux U Android 4 4 2 zh cn GT I9500 Build KOT49H AppleWebKit 537 36 KHT
  • Opencl入门Demo

    最近负责的几个项目需要使用opencl进行编程 进行了学习 并将学习后编写的主要Demo代码记录下来 供大家初步入门使用 opencl的介绍 原理等这里就不说了 百度一下有很多 直接切入主题 这个demo实现两个数组的相加操作 1 进行平台
  • 初探BlockChain——哈希和电子签名

    昨天在B站学习到北京大学肖臻老师的 区块链技术与应用 的公开课 感到豁然开朗 BlockChain涉及到密码学的两个方面 哈希和电子签名 1 哈希 有计算机基础的童鞋都比较清楚其机制 这里再简单说一下其基本原理 哈希的意思就是引入随机数量的
  • 一对一和一对多的关联查询(该实体类中存在实体类属性和实体类集合属性,将关联的实体类详细信息查询出来,但没有查询所有该实体类信息)

    一 高级查询 高级查询主要是一对一查询 一对多查询 多对多查询 1 一对一查询 有用户和订单两个表 用户对订单是1对1查询 也就是订单中有一个外键是指向用户的 先创建实体类 User java public class User priva
  • c语言文件的方式写通讯录,用c语言多文件编写1000人的通讯录

    实现一个通讯录 通讯录可以用来存储1000个人的信息 每个人的信息包括 姓名 性别 年龄 电话 住址 提供方法 1 添加联系人信息 2 删除指定联系人信息 3 查找指定联系人信息 4 修改指定联系人信息 5 显示所有联系人信息 6 清空所有
  • Redis —— 设置密码

    文章目录 Redis 设置密码 简介 需要修改两处 1 命令行进入Redis进行密码修改 2 修改Redis配置 redis conf 修改后重启redis Redis 设置密码 简介 没有密码 设置密码 需要修改两处 1 命令行进入Red
  • linux添加硬盘扫描

    查看host个数 ls sys class scsi host 重新扫描 echo gt sys class scsi host host编号 scan 可以形成脚本 也可以设置别名 简化操作
  • cmake获取当前编译器的类型与版本

    在使用cmake编译程序的时候 如何获取当前使用的编译器的类型 例如是clang 还是gcc cmake提供了很多相关的编译参数 可以查看当前使用的编译器的类型 当前使用的c 编译器 message CMAKE CXX COMPILER C
  • LLVM源码调试

    一 编译LLVM debug版本 调试LLVM代码需要基于debug版本 编译LLVM时 将build type设为Debug即可 cmake DCMAKE BUILD TYPE Debug 二 GDB调试 调试OPT reference
  • Linux下磁盘分区与扩容

    虚拟机增加磁盘进行磁盘分区 查看磁盘情况 root localhost df 查看设备 root localhost ls dev sd 增加磁盘 root localhost ls dev sd 找到对应增加的设备 假设增加的sdb ro
  • 【2】Qt的MainWindow的能看不能吃的框架 以及 添加图片资源

    就是加上菜单栏 窗口 这些东西 而且没做回调函数 没有做button 所以h文件没有改动 mainwindow cpp include mainwindow h include
  • selenium爬取药监总局

    url http 125 35 6 84 81 xk from selenium import webdriver from lxml import etree from time import sleep page text list d
  • python 复杂表达式

    复杂表达式 使用for循环的迭代不仅可以迭代普通的list 还可以迭代dict 假设有如下的dict d Adam 95 Lisa 85 Bart 59 完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格 tds tr td s
  • LeetCode·每日一题·1177. 构建回文串检测·前缀和

    作者 小迅 链接 https leetcode cn problems can make palindrome from substring solutions 2309940 qian zhui he zhu shi chao ji xi
  • Jina Hub:一站式神经搜索系统组件分享平台

    Hub 是 Jina 全家桶中非常重要的一个成员 本期推文我们将详细介绍 Hub 的相关内容 在过往推文中 我们介绍过 高度适配深度学习任务的可扩展数据结构 DocArray 开源神经搜索框架 Jina 神经搜索系统结果调优工具 Finet