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: 51000protocol: grpc
executors:
- uses: FooExecutorname: foopy_modules:- test.py
- uses: BarExecutorname: barpy_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):@requestsdef 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, Documentc = 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='												

DataWhale-VCED项目学习-2Jina相关推荐

  1. Datawhale 暑期组队学习计划

    Datawhale暑期组队学习计划 马上就要开始啦 这次共组织15个组队学习 涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类 难度系数分为低.中.高三档 可以按照需要参加 ...

  2. PHP项目学习——控件

    主要是在项目学习中总结的一些东西 动态效果 flashbar滚动条,增加动态效果,直接嵌入html中 <!--flash滚动条--><object classid="cls ...

  3. 如何自学python到做项目-总算明白如何通过项目学习python

    在学习完Python的基础知识之后,有很多朋友为自己接下来要干什么感到迷茫.不知道应该通过什么样的项目来锻炼自己编程水平和思维能力.接下来我就给大家说几个适合Python的新手项目和练手项目,Pyth ...

  4. 延大计算机文化基础课程作业,基于项目学习的大学《计算机文化基础课》教学设计...

    摘要: 从大学教育看,计算机文化已经愈来愈多地融入了各专业科研和专业课的教学过程之中.计算机教学已成为素质教育的必要组成部分,良好的信息素养是当代大学生可持续发展的重要基础平台.大学计算机文化基础课程 ...

  5. TheBeerHouse 网站项目学习笔记(5)---架构设计

    前述讨论:    TheBeerHouse 网站项目学习笔记(1)----换肤技术                     TheBeerHouse 网站项目学习笔记(2)----个性化管理      ...

  6. 引入dubbo依赖的版本是多少_Dubbo 项目学习(四) 接口抽取以及依赖版本统一

    引言 前面的系列项目中,我们会发现有个接口是一样的,我们需要单独抽取出来,统一维护,这样可以更加高效的处理项目.同时,两个项目的maven依赖包也可以统一维护,这样有助于项目在多人协作的同时,保证项目 ...

  7. 01-Flutter移动电商实战-项目学习记录

    01-Flutter移动电商实战-项目学习记录 一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常 ...

  8. 项目学习 - 收藏集 - 掘金

    一款开源的视频直播项目 --EvilsLive - Android - 掘金 项目介绍 EvilsLive 是一个视频直播件开发工具包(SDK), 目前只支持 Android, 主要负责视频直播的采集 ...

  9. python3实战练手项目_Python0基础练手项目有哪些值得推荐?附实战项目+学习图谱...

    原标题:Python 0基础练手项目,有哪些值得推荐?附实战项目+学习图谱 刚学Python的时候,因为豆瓣帖子老沉,就写了一个顶帖脚本.就是用这个脚本,给自己的帖子顶了两年,在小组里追到了现在的女朋 ...

最新文章

  1. 吴恩达教你如何使用“锤子”?机器学习新书免费领
  2. C++模拟游戏中鼠标点击和键盘按键
  3. 爱立信:SDN/NFV助力面向5G以及工业互联网的ICT转型
  4. object references an unsaved transient instance【异常】
  5. jzoj3188-找数【质数筛,数论】
  6. 定义mysql日志_请教:如何查看mysql数据定义操作的日志
  7. 如何在JavaScript中获取字符串数组的字符串?
  8. [LeetCode]144.Binary Tree Preorder Traversal
  9. Data Member的布局
  10. 错误:1 error and 0 warnings potentially fixable with the `--fix` option. 报错问题解决方法
  11. 企业管理软件,真的以业务流程为中心?
  12. 抖音怎么开直播?抖音开播流程介绍
  13. xshell 6查看测试日志
  14. 【色彩管理】HSV色彩模式详解
  15. flinkSQL Table转DataStream
  16. 统一身份认证(SSO/AD域/LDAP)
  17. bios怎么设置USB启动
  18. Git 必知必会《上》
  19. 递归算法(JS实现代码)
  20. 用 visual foxpro 也可以编写“迅雷下载”

热门文章

  1. html判断是否节假日,C# 判断是否是节假日
  2. 余承东硬刚iPhone11;苹果推送正式版iOS 13;Facebook总部发生员工跳楼自杀事件 | EA周报...
  3. oracle的opm,Oracle EBS OPM 发放生产批
  4. Metasploit渗透框架介绍及永恒之蓝复现
  5. C语言考试知识点汇总(实践知识点)
  6. PyTorch Mobile在端侧可堪大用?能否与TensorFlow Lite一较高下
  7. html5小游戏 typescript,使用TypeScript和Canvas编写移动端贪吃蛇大作战游戏
  8. Android开发者该学习哪些东西提高竞争力?成功入职腾讯
  9. 大数据告诉你,离开北上广的互联网工程师最终都去了哪里?
  10. UEM系列(一)用户体验管理介绍