跨模态搜索系列 --- 二、Jina-跨模态搜索实现

二、Jina-跨模态搜索实现

1. Jina 的基本概念与部署指北

作为Github热榜前三的神经搜索框架之一,Jina实现了对当前绝大部分数据类型的支持,对于视频、图像、文本、PDF以及音乐等非结构化数据,可进行大规模的索引与查询。

作为分布式架构,Jina具备可拓展和云原生的设计,实现了对云容器化、并行、分片、异步调度以及HTTP/gRPC/WebSocket 协议的支持。其专为神经搜索系统所设计的搭建模式,可以在极短时间内完成对深度学习搜索系统的部署,实现多模态的数据搜索。

  • 基本概念
    • 框架结构

      整个Jina框架基本上可分为 Document、Executor以及Flow 三个基本组件,三者共同协作,构建成完整的Jina应用程序。

      • Document: 作为Jina的基础数据类型,主要负责将非结构数据映射到向量数据中,从而将视频、语音以及文本等多模态数据转化为为统一的数据结构类型进行处理。
      • Executor: 可将其理解为一个类,通过该组件可以将本地函数转化为可在Flow组件中分发的函数,从而在Jina中构造相应的方法对Document进行处理
      • Flow: 主要负责将多个Executor进行连接,组成完整的Pipeline以提供服务。其入口是Gataway,本质是一个内部通信的路由,对接收到的请求进行分发。
    • 执行逻辑与应用示例

      • Jina官方提供了明确的搭建模式,使得Jina框架可在极短时间内完成搭建与部署,具体部署流程可参照官方文档进行安装
      • 需要注意的是,当前Jina暂不支持在Windows系统环境下安装,Windows用户需要开启WSL后,在WSL中进行安装部署。
    • DocArray 结构工具

      • 定义:

        作为存储非结构化数据的工具包,DocArray的特点在于其存在不同层级的结构,其可以将数据拆分为多种粒度多种模态,存储到不同的层级中,从而提高搜索粒度和结果丰富度。值得注意的是,Jina 3.x版本中已经包含了DocArray,无需独立安装。

      • 框架组成:

        • Document:作为DocArray的基本数据类型,无论文本、视频还是音频等多模态数据,都可采用Document进行表示,使得这些数据规整存储,以供后续处理。
        • DocumentArray:作为存放多个Document的容器,类似python中的list
        • Dataclass:用于直观表示多模态数据的高级API

2. Demo 实现 —文本匹配

  • YAML文件与Client监听
    • yaml文件主要用于指定Flow的执行逻辑,以下述文件为例:

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

      Jina在yaml文件中获取到指定的type、端口和协议,这里采用GRPC协议进行通讯,也可通过纯Python的方式调用Flow

      运行jina flow --uses toy.yml 命令启动grpc服务,输出如下结果:

      在这里插入图片描述

    • test.py文件主要负责构建yaml文件中的类,类中定义foo和bar函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aaaaaki

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值