无代码DIY图像检索

软件环境准备

    可参见《HuggingFists-低代码玩转LLM RAG-准备篇》中的HuggingFists安装及Milvus安装。

流程环境准备

图片准备

  • 进入HuggingFists内置的文件系统,数据源->文件系统->sengee_fs_settings_201
  • 创建Image文件夹
  • 将事先准备的多张相同或不同种类的图片上传到Image目录下。如下图:

HuggingFace账号准备

    HuggingFists系统没有提供内置的Hugging Face账号,所以用户需要先去申请一个Hugging Face账号。用户可通过链接https://Hugging Face.co/join注册账号。注册成功后,通过界面右上角的个人信息->Settings->Access Tokens申请一个专属的访问令牌。

    其次,在HuggingFists右上角的个人信息->个人设置->资源账号中添加一个Hugging Face访问账号。进入资源账号界面后,选择添加资源账号,弹出如下的界面:

    选中Hugging Face类型,并将申请到的访问令牌填充进“访问token”输入框,填充完成后提交,创建成功。

Embedding算法准备

    在HuggingFace网站中搜索支持Image Embedding的模型,如下图。本文选中的模型为radames/blip_image_embeddings。该模型生成的向量的长度为1024,使用Milvus创建向量集合时需将向量字段的长度设置为1024。

向量环境准备

    可参见《HuggingFists-低代码玩转LLM RAG-准备篇》中的添加Milvus数据源何创建Milvus表的相关章节。

图像入库流程构建

    进入流程管理,新建Image-Writer流程。拖拽并配置文件输入、Milvus写出及HuggingFaceImageEmbedding算子构建图像入库流程。

文件输入

    如下图所示,将流程准备阶段创建的存放图片的image文件夹加入文件输入配置。

HuggingFaceImageEmbedding

    为HuggingFace图像嵌入算子设置访问代理、访问账号以及我们在环境准备阶段选好的图嵌入模型。设置内容如下:

Milvus写出

    为Milvus写出算子指定通过前序准备环节创建的数据源milvus和数据表image02。设置HuggingFace图像嵌入算子与image02表字段的映射关系。streamName字段写入image02的name字段;embeddings字段写入image02的embedding字段。

流程执行

    流程构建完毕,点击执行流程。执行结果如下:

    环境准备时,我们准备了3张图片。执行结果看,流程读入了3张图片,并且写入Milvus3条记录,流程被正确运行了。为了验证这种插入检索到有效性,下面我们在构建一个图检索流程。

图像检索流程构建

    新建Image-Reader流程。拖拽并配置文件输入、HuggingFaceImageEmbedding及Milvus读取算子。

文件输入

    配置方式与图像入库流程中的文件输入相同,唯一差别是,这次我们只选择一张图片作为输入。这张图片是以图01作为基础截取了一部分构成的图。我们打算以这张图作为检索条件。

HuggingFaceImageEmbedding

    配置同上

Milvus读取

    为Milvus读取算子指定数据源milvus。编写如下查询语句:

select  *  from image02 where vMatch(embedding, 'L2', '[@{embeddings}]') and consistencyLevel('STRONG') and nProbe(10) limit 5

     由于Milvus本身不支持SQL的访问方式,所以这里使用的是基于开源项目MOQL对Milvus支持的语法格式。上面的SQL语句中使用了@{embeddings}变量,该变量表示上下文变量,上下文变量可以与算子的输入列做绑定映射。HuggingFaceImageEmbedding算子有一个名为embeddings的列输出到Milvus读取算子,故从配置中可以看到,变量embeddings与输入的embeddings列做了映射绑定。运行时,变量会被输入列的值替换掉,从而生成可运行的SQL语句。当输入为多条记录时,每条记录都会驱动一次SQL的生成与检索。

流程执行

    流程构建完毕,点击执行流程。执行结果如下:

    结果我们可以看到,我们插入的3个图片都返回了。这是因为我们的SQL语句写的条件是limit 5,这表示查回与输入图片相似的5张图片。因为数据库就3张图片,所以查询时就都返回了。但我们可以通过结果的idScore列看到,01.png的分值最低,这表示其与输入的图片最相似,而其它图片的相似程度就差了很多。为了能够得到更精准的结果,我们可以在流程里加一个过滤算子,设置一个过滤条件,过滤掉那些明显不相似的图片。比如我们将过滤条件设置为idScore < 100,那么只有01.png这个图片会被筛选到了。

总结

    本文介绍了如何使用HuggingFists工具,一行代码不写,迅速搭建起图片检索系统。除文中介绍的几个算子外,HuggingFists还内置了很多其它功能的算子,对于喜欢DIY的朋友,可以下载一个玩玩看了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/341995.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理论U3 决策树

文章目录 一、决策树算法1、基本思想2、构成1&#xff09;节点3&#xff09;有向边/分支 3、分类步骤1&#xff09;第1步-决策树生成/学习、训练2&#xff09;第2步-分类/测试 4、算法关键 二、信息论基础1、概念2、信息量3、信息熵&#xff1a; 二、ID3 (Iterative Dichotomis…

QT 文本框的绘制与复选框组键

.cpp文件 #include "widget.h" #include "ui_widget.h"#include<QDebug> Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//更改窗口标题setWindowTitle("我爱xyy");//更改图标setWindow…

【高级应用】Flink Cep模式匹配

什么是Cep&#xff1f; 在流式数据中&#xff08;事件流&#xff09;&#xff0c;筛选出符合条件的一系列动作&#xff08;事件&#xff09;【复杂事件处理】 什么是 Flink-Cep&#xff1f; Flink Cep库Api 【实时操作】 官方文档 什么是Pattern&#xff1f; Pattern就是…

书客、柏曼、松下护眼台灯哪款更靠谱?实测核心数据对比PK!

随着科技时代的到来&#xff0c;人们的生活水平在不断提高&#xff0c;不少家长开始担心自家孩子的近视问题&#xff0c;护眼台灯在家庭中的讨论热度也越来越高&#xff0c;光线舒适又具备多种功能&#xff0c;不少家长都给孩子入手了护眼台灯。不过作为家电博主&#xff0c;我…

一天一个设计模式---适配器模式

概念 适配器模式是一种结构型设计模式&#xff0c;用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的接口之间进行协同工作&#xff0c;使得原本由于接口不匹配而无法合作的类能够一起工作。 具体内容 适配器模式主要包括以下几个要素&#xff1a; 目标接…

Open CV 图像处理基础:(一)Open CV 在windows环境初始化和 Java 动态库加载方式介绍

Open CV 在windows环境初始化和 Java 动态库加载方式介绍 目录 Open CV 在windows环境初始化和 Java 动态库加载方式介绍OpenCV安装opencv-4.4.0下载安装 加载opencv-4.4.0.jar包jar包引入mavn-init.cmdjar包装载到本地maven仓库pom.xml加载动态库 加载动态库opencv_java440.dl…

2023一带一路暨金砖国家技能发展与技术创新大赛“网络安全”赛项省选拔赛样题卷①

2023金砖国家职业技能竞赛"网络安全" 赛项省赛选拔赛样题 2023金砖国家职业技能竞赛 省赛选拔赛样题第一阶段&#xff1a;职业素养与理论技能项目1. 职业素养项目2. 网络安全项目3. 安全运营 第二阶段&#xff1a;安全运营项目1. 操作系统安全配置与加固任务一Linux …

深度学习”和“多层神经网络”的区别

在讨论深度学习与多层神经网络之间的差异时&#xff0c;我们必须首先理解它们各自是什么以及它们在计算机科学和人工智能领域的角色。 深度学习是一种机器学习的子集&#xff0c;它使用了人工神经网络的架构。深度学习的核心思想是模拟人脑神经元的工作方式&#xff0c;以建立…

FPGA——时序分析与约束(Quartus II)

FPGA时序分析与约束 FPGA结构基础数据传输模型Quartus II 时序报告Quartus II 中TimeQuest的操作实操 时序分析&#xff1a;通过分析FPGA内部各个存储器之间的数据和时钟传输路径&#xff0c;来分析数据延迟和时钟延迟的关系&#xff0c;保证所有寄存器都可以正确寄存数据。 数…

The Planets:Earth

靶机下载 The Planets: Earth ~ VulnHub 信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-11 09:20 CST Nmap scan report for 192.168.1.1 Host is up (0.00036s latency). MAC Address: …

使用numpy处理图片——图片拼接

大纲 左右拼接上下拼接 在《使用numpy处理图片——图片切割》一文中&#xff0c;我们介绍了如何使用numpy将一张图片切割成4部分。本文我们将反其道而行之&#xff0c;将4张图片拼接成1张图片。 基本的思路就是先用两张图以左右结构拼接成上部&#xff0c;另外两张图也以左右拼…

org.springframework.web.servlet.HandlerInterceptor

过期 1 配置黑名单 2 启动注册拦截 3 浏览器访问拦截