DataWhale-VCED项目学习-2Jina

2023-11-16

Jina

Jina是多模态中存储数据以及处理数据的组件,它可以将非结构化数据(图像、文档、视频等)转化为向量数据,并结合Jina其它的相关组件设计,可以将这些向量数据利用起来,实现多模态相关应用。

安装

安装 Jina 需要 Python3.7 及以上版本

# via pypi
pip install jina

# via conda
conda install jina -c conda-forge

# via docker
docker pull jinaai/jina:latest

Jina的三个基本概念

Jina 的三个基本概念分别是Document、Executor 和 Flow 。

  • Document 是基本的数据类型,它的作用就是可以将非结构化数据与向量数据之间进行映射;
  • Executor 可以理解为一个 Python 类,代表了 Jina 中的算法单元,比如把图像编码成向量、对结果进行排序等算法等都可以用 Executor 来表述;
  • Flow 可以将多个 Executor 连接起来,将他们协调成流水线(pipeline);

快速体验

首先需要定义一个 YAML 文件,用于指定 Flow 按照什么逻辑执行

# toy.yml
jtype: Flow
with:
  port: 51000
  protocol: grpc
executors:
- uses: FooExecutor
  name: foo
  py_modules:
    - test.py
- uses: BarExecutor
  name: bar
  py_modules:
    - test.py

定义好 YAML 文件后来定义具体的执行逻辑

# 创建 test.py 文件与 YAML 文件在同一目录下
# 导入 document、executor 和 flow 以及 requests 装饰器
from jina import DocumentArray, Executor, requests, Document

# 编写 FooExecutor 与 BarExecutor 类,类中定义了函数 foo 和 bar
# 该函数从网络请求接收 DocumentArray (先暂时不需要理解它是什么),并在其内容后面附加 "foo was here" 与 "bar was here"
class FooExecutor(Executor):
    @requests # 用于指定路由,类似网页访问 /index 和 /login 会被路由到不同的方法上是用样的概念,关于 request 下面会再进行详细介绍
    def foo(self, docs: DocumentArray, **kwargs):
        docs.append(Document(text='foo was here'))


class BarExecutor(Executor):
    @requests
    def bar(self, docs: DocumentArray, **kwargs):
        docs.append(Document(text='bar was here'))

运行以下命令启动 grpc 服务:

jina flow --uses toy.yml

启动成功后,可以看到如下输出结果
在这里插入图片描述
然后在另外一个终端创建 client.py 文件,执行 python client.py

# 从 Jina 中导入连接的客户端与 Document
from jina import Client, Document

c = Client(host='grpc://0.0.0.0:51000')  # 如果运行提示失败,可尝试使用localhost
result = c.post('/', Document()) # 将一个空的 Document 传到服务端执行
print(result.texts) 

最终会打印出一个 “[‘’, ‘foo was here’, ‘bar was here’]” 字符串。

在这里插入图片描述

DocArray

定义

DocArray 是用于存储非结构化数据的数据结构工具包,是做跨模态应用的基础。
DocArray 的亮点在于 Hierarchy + Nested。DocArray 有不同的层级结构,分层存储,第一层可以是一个整体的视频,第二层是该视频的不同镜头,第三层可以是镜头的某一帧。也可以是其他模态,比如第四层存储台词段落,第五层存储 … 既可以通过某个画面的描述搜索,也可以通过台词的意思去搜索,这样搜索的颗粒度,结构的多样性和结果的丰富度,都比传统文本检索好很多。
此外,DocArray 的设计对于 Python 用户来说非常直观,不需要学习新的语法。它融合了 Json、Pandas、Numpy、Protobuf 的优点,更适用于数据科学家和深度学习工程师。

三个基本概念

DocArray 由三个简单的概念组成:

  • Document:一种表示嵌套非结构化数据的数据结构,是 DocArray 的基本数据类型。无论是处理文本、图像、视频、音频、3D、表格 或它们的嵌套或组合,都可以用 Document 来表示,从而使得各类数据的结构都非常规整,方便后续处理
  • DocumentArray:用于高效访问、处理和理解多个文档的容器,可以保存多个 Document 的列表
  • Dataclass:用于直观表示多模式数据的高级API

安装

3.x 版本的 Jina 已经包含了 DocArray,如果你用的是 3.x 的 Jina,可以跳过此步骤。如果你不清楚自己安装的版本号,可以在命令行里输入jina -vf来查看 Jina版本。

文本处理

创建文本

from jina import Document  # 导包

# 创建简单的文本数据
d = Document(text='hello, world.') 
print(d.text)  # 通过text获取文本数据
# 如果文本数据很大,或者自URI,可以先定义URI,然后将文本加载到文档中
d = Document(uri='https://www.w3.org/History/19921103-hypertext/hypertext/README.html')
d.load_uri_to_text()
print(d.text)
# 支持多语言
d = Document(text='									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DataWhale-VCED项目学习-2Jina 的相关文章

随机推荐

  • 使用备份工具mysqldump备份数据库

    MySQL自带的备份工具mysqldump 可以很方便的对MySQL进行备份 通过该命令工具可以将数据库 数据表或全部的库导出为SQL脚本 便于该命令在不同版本的MySQL服务器上使用 例如 当需要升级MySQL服务器时 可以先使用mysq
  • Java 读取jar内包资源文件和读取jar包外资源文件

    Java 读取jar包内资源文件 读取jar 包内资源文件application properties InputStream appPropertiesInputStream ApplicationPropertiesHolder cla
  • U-Net 模型改进和应用场景研究性综述

    U Net综述 1 文章介绍 2 U Net介绍 3 结构改进 4 非结构改进 4 1 预处理 数据增强 4 2 训练 数据归一化 4 3 训练 激活函数 4 4 训练 损失函数 4 5 结构改进总结 5 U Net应用场景 5 1 视网膜
  • PAN和MS融和综述(pansharpening)

    PAN和MS融和综述 pansharpening 一 基于成分替代的图像融和 1 基于IHS变换的图像融合方法 IHS方法是将原始多光谱图像从RGB空间变换到IHS空间 然后用高分辨率图像或用不同投影方式得到的待融合图像替代I分量 在IHS
  • spring的InitializingBean接口、DisposableBean接口

    本文介绍spring中与bean有关的一些接口 afterPropertiesSet afterPropertiesSet 方法是 Spring 框架中的一个初始化方法 主要用于在 Bean 实例化和属性注入完成后执行一些初始化操作 具体来
  • windows 7 系统安装

    环境 workstation 10 虚拟机 GHOST windows 7 32位 今天安装系统 碰到一些问题 在此记录 问题一是分区后 重启黑屏的问题 解决方案 问题二 点击安装到第一分区 自动跳转到dos工具界面问题 解决方案 问题三
  • Qt之QLabel

    简述 QLabel提供了一个文本或图像的显示 没有提供用户交互功能 一个QLabel可以包含以下任意内容类型 内容 设置 纯文本 使用setText 设置一个QString 富文本 使用setText 设置一个富文本的QString 图像
  • HR人员和岗位关联日期问题

    离职日期是4月3号 但4月1 2号的数据在GET PERNR 就查不到 原因是人员和岗位关联日期在3月31号就结束了 所以选中组织结构后找不到数据了 表HRP1001可以查看 O组织 S岗位 P人员 修改 PO13 gt 关系显示 gt 找
  • UNIX网络编程之源代码的编译和使用

    UNIX网络编程入门 对于想学习网络编程的来说 UNIX网络编程 这书肯定是不二选择 所谓实践是检验真理的唯一标志 特别是对于编程来讲 再多的理论经验也比不过code一次 UNIX网络编程 这本书提供连源码下载 第三本版的源码可点击这里下载
  • Linux——(第六章)常用指令(一)

    目录 一 帮助指令 1 man获取帮助信息 2 help指令 3 常用快捷键 二 文件和目录相关指令 1 pwd 指令 2 ls 指令 3 cd 指令 4 mkdir 指令 5 rmdir指令 6 touch指令 7 cp 指令 8 rm
  • 队列——queue

    Hello 这是你们的苦力怕 今天我去医院做核酸检测 排了老长的队 wait了半个多小时才做完 真是把我整无语死了 但是我在wait的过程中突然想到了一个问题 啥数据结构跟排队很像 对了 就是大名鼎的队列 目录 什么是队列 队列的用法 队列
  • 安装CP210xVCP遇到的问题

    在CE系统里面有USB设备虚拟串口的驱动 CP210xVCP就是这样 在写入注册表的配置信息里面 虚拟的串口默认为COM9 有一些设备上面 COM9是不行的 遇到这样的情况 修改为较小的编号 如COM6是可以的 还有一些设备 裁减掉了USB
  • Vue3、setup的使用

    Vue3 setup ref reactive toRef toRefs 1 setup的使用 1 1 简介 1 2 setup注意点 1 3 定义响应式数据 1 4 toRefs 1 5 setup中执行方法 1 5 1 方式一 1 5
  • Sqli-labs-master 1-4闯关游戏

    Less 1 首先打开到Less 1 根据提示Please input the ID as parameter with numeric value 请输入ID作为带数值的参数 这里我们用GET方法进行尝试 id 1 可以看到返回了用户名及
  • ceph pg inconsistent不一致,ceph pg repair无效

    更多ceph相关文章详见知乎ceph专栏 聊聊ceph ceph pg repair指令执行后 无效原因分析 ceph pg repair这一操作会先进行pg scrub 得到该PG中不一致的对象 然后再进行recovery pg scru
  • NVIDA CUDA architecture查询

    官网查询 https developer nvidia com cuda gpus 如下图所示 另外在CUDA SDK目录下有deviceQuery的示例程序 WIN10路径是C ProgramData NVIDIA Corporation
  • 若要运行此应用程序,您必须首先安装NET Framework 解决办法

    先把进入控制面版 删除原来的版本 安装 Net Framework失败 解决方案 第一步 如果是XP系统 这么做 1 开始 运行 输入cmd 回车 在打开的窗口中输入net stop WuAuServ 2 开始 运行 输入 windir 3
  • stm32f1一路互补PWM大功率DCDC降压方案

    stm32f1 ucc27211 tl431大功率dcdc电路 源码程序
  • 共探工业数智化,TVP河南工业互联网论坛将重磅召开!

    引言 随着数字经济与经济社会发展的深度融合 工业互联网日益成为数字化转型的关键驱动力量 云计算 大数据 AI 物联网等蓬勃发展的新技术将为制造业提供数字转型 智能升级 融合创新等服务 工业互联网也迎来了新一轮的历史发展机遇 在新技术的加持下
  • DataWhale-VCED项目学习-2Jina

    Jina Jina是多模态中存储数据以及处理数据的组件 它可以将非结构化数据 图像 文档 视频等 转化为向量数据 并结合Jina其它的相关组件设计 可以将这些向量数据利用起来 实现多模态相关应用 安装 安装 Jina 需要 Python3
Powered by Hwhale