Jina 实例秀 —— 跨模态搜索

b0a4f76bde833569d7a2b0788f5e5d4c.png

在本教程中,Jina将用于构建跨模态的搜索应用程序。

在Jina框架的支持下,应用程序使用了Open AI的最新自然语言模型CLIP:CLIP可将一段文本或一张图片编码为512维向量。通过向量的相似度比较,可使用文字描述对图片进行搜索;也可以使用图片对相应的文字描述进行搜索。

0a5694a4236f2628b448a01307a9a66d.png

让我们看看程序的整体框架: 

在索引过程中,我们将数据集中的所有图像和文本编码为向量,并创建这些向量的索引。 

498056db2fbb57458472ac9f9626ab4d.png

在搜索过程中,当我们输入文本时,首先计算该文本的向量表示。与索引过程不同,搜索过程中将对文本输入使用图片indexer,将文本向量与之前计算的图片向量索引进行比较,最终找到最符合文本描述的图像。类似的,也可以使用图像来搜索相对应的文本描述。

b0d25cfdb6ab7391b4ac86cdc97a83bf.png

在了解了整体框架和运行原理后,让我们开始构建吧!

Let's begin🏃‍♀️

 下载代码库并安装Jina 


下载代码库(包括代码与数据集)并进入到相应文件夹:

git clone https://github.com/jina-ai/examples
cd examples/cross-modal-search

安装Jina和环境配置:

pip install -r requirements.txt

💡 Jina安装小提示:

  • 推荐在一个新的python虚拟环境中安装Jina

 下载数据集(optional) 


我们默认使用一个小型数据集用于索引,若想使用完整的数据集: 

Step1:对Kaggle进行设置(具体方式可在“阅读原文”中查找) 

Step2:运行以下脚本下载数据

sh get_data.sh

 建立数据索引 


运行下面代码对数据集建立索引:

python app.py -t index

若想要对下载好的完整数据建立索引,则运行下面的代码:

python app.py -t index -d f8k -n 8000

💡 数据索引小提示:

  • 对于数量较大的索引,SimpleIndexer处理

    速度非常慢。建议使用更高级的索引器,如FaissIndexer来建立大量数据索引

 输入数据进行查询 


Jina提供了多种搜索数据的方法。在这里,我们展示使用Restful API 的方式:

python app.py -t query_restful

💡 小提示:

  • 将启动一个Restful API等待搜索请求

向应用程序发送搜索请求:

curl --request POST -d '{"parameters":{"top_k": 5}, "data": ["a black dog and a spotted dog are fighting"]}' -H 'Content-Type: application/json' 'http://localhost:45678/search'

💡 小提示:

  • 将返回JSON格式的输出,其中包含五个最相

    关的图像

 ⭐️Jina实例秀系列教程将不断更新 ⭐️

 ⭐️敬请持续关注 ⭐️ 

点击下方 “阅读原文”,获得更详细的Jina 相关教程


👇 往期系列教程

2e8d7c640f60a0af0b0fbd4a1342f972.png

Jina 实例秀 —— 维基百科句子搜索


69b1597e6de54dd20ee2b6a892b5a843.png

Jina 轻松学 —— 用 Jina + Streamlit 极速搭建搜索应用


f7b7e561ce92942cddf83ce7efd852f2.png

Jina 实例秀 —— 智能聊天机器人


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值