条件过滤检索

背景介绍

在大多数业务场景中,单纯使用向量进行相似性检索并无法满足业务需求,通常需要在满足特定过滤条件、或者特定的“标签”的前提下,再进行相似性检索。

向量检索服务DashVector支持条件过滤和向量相似性检索相结合,在精确满足过滤条件的前提下进行高效的向量检索。

条件过滤检索示例

说明

  1. 需要使用您的api-key替换示例中的 YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。

  2. 本示例需要参考新建Collection-使用示例提前创建好名称为quickstart的Collection。

插入带有Field的数据

Python:

import dashvector
import numpy as npclient = dashvector.Client(api_key='YOUR_API_KEY',endpoint='YOUR_CLUSTER_ENDPOINT'
)
collection = client.get(name='quickstart')ret = collection.insert([('1', np.random.rand(4), {'name':'zhangsan', 'age': 10, 'male': True, 'weight': 35.0}),('2', np.random.rand(4), {'name':'lisi', 'age': 20, 'male': False, 'weight': 45.0}),('3', np.random.rand(4), {'name':'wangwu', 'age': 30, 'male': True, 'weight': 75.0}),('4', np.random.rand(4), {'name':'zhaoliu', 'age': 5, 'male': False, 'weight': 18.0}),('5', np.random.rand(4), {'name':'sunqi', 'age': 40, 'male': True, 'weight': 70.0})
])
assert ret

说明

在新建Collection-使用示例中,创建了名称为quickstart的Collection,该Collection定义了3个Field({'name': str, 'weight': float, 'age': int})。DashVector具有Schema Free的特性,因此可以在插入Doc时,随意指定创建Collection时未定义的Field,如上述示例中的maleField。

通过filter进行条件过滤检索

Python:

import dashvectorclient = dashvector.Client(api_key='YOUR_API_KEY',endpoint='YOUR_CLUSTER_ENDPOINT'
)
collection = client.get(name='quickstart')# 要求年龄(age)大于18,并且体重(weight)大于65.0的男性(male=true)
docs = collection.query([0.1, 0.1, 0.1, 0.1],topk=10,filter = 'age > 18 and weight > 65.0 and male = true'
)
print(docs)

DashVector支持的数据类型

当前DashVector支持Python的4种基础数据类型:

  • str

  • float

  • int

  • bool

重要

Python的int类型可表达无限大小的整数,当前DashVector仅支持32位整数,范围为-2,147,483,648~2,147,483,647,需要用户自行保证数据未溢出。

比较运算符

通过Field 比较运算符 常量的组合生成比较表达式,说明及示例如下:

符号

描述

支持数据类型

表达式示例

示例解释

<

小于

  • int

  • float

  • age < 10

  • weight < 60.0

  • age小于10则为True

  • weight小于60.0则为True

<=

小于或等于

  • int

  • float

  • age <= 10

  • weight <= 60.0

  • age小于或等于10则为True

  • weight小于或等于60.0则为True

=

等于

  • int

  • float

  • bool

  • str

  • age = 10

  • weight = 60.0

  • male = true

  • name = 'lisi'

  • age等于10则为True

  • weight等于60.0则为True

  • male等于true则为True

  • name等于lisi则为True

!=

不等于

  • int

  • float

  • bool

  • str

  • age != 10

  • weight != 60.0

  • male != true

  • name != 'lisi'

  • age不等于10则为True

  • weight不等于60.0则为True

  • male不等于true则为True

  • name不等于lisi则为True

>=

大于或等于

  • int

  • float

  • age >= 10

  • weight >= 60.0

  • age大于或等于10则为True

  • weight大于或等于60.0则为True

>

大于

  • int

  • float

  • age > 10

  • weight > 60.0

  • age大于10则为True

  • weight大于60.0则为True

字符串运算符

通过Field 字符串运算符 常量的组合生成匹配表达式,说明及示例如下:

符号

描述

支持数据类型

表达式示例

示例解释

like

前缀匹配

  • str

  • name like 'li%'

  • name以li开头则为True

逻辑运算符

逻辑运算符用于组合多个表达式。

符号

描述

示例

示例解释

and

expr1 and expr2

expr1、expr2同时为True时则为True,否则False

or

expr1 or expr2

expr1、expr2同时为False时则为False,否则True

说明

可通过括号()组合逻辑运算符,()拥有更高优先级,如:expr1 and (expr2 or expr3),会优先计算(expr2 or expr3)

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

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

相关文章

数字化供应链:背景特点

​背景 1、外部环境 近年来&#xff0c;供应链脆弱性凸显&#xff0c;企业供应链压力难以缓解。 美国媒体针对美国零售联合会、美国服装和鞋类协会、美国供应链管理专业委员会等主体进行的一项供应链调查显示&#xff1a; 61%的供应链经理预计&#xff0c;供应链紊乱问题至少…

C++(第一天-----命名空间和引用)

一、C/C的区别 1、与C相比   c语言面向过程&#xff0c;c面向对象。   c能够对函数进行重载&#xff0c;可使同名的函数功能变得更加强大。   c引入了名字空间&#xff0c;可以使定义的变量名更多。   c可以使用引用传参&#xff0c;引用传参比起指针传参更加快&#…

企业化运维(5)_mysql数据库

###1.源码编译mysql### 对压缩包进行解压&#xff0c;并对mysql进行源码编译&#xff0c;其中需要下载依赖才能编译成功。 官网&#xff1a; www.mysql.com解压并进入目录 [rootserver1 ~]# tar xf mysql-boost-5.7.40.tar.gz [rootserver1 ~]# cd mysql-5.7.40/安装依赖性…

初识Java(复习版)

一. 什么是Java Java是一种面向对象的编程语言&#xff0c;和C语言有所不同&#xff0c;C语言是一门面向过程的语言。偏底层实现&#xff0c;比较注重底层的逻辑实现。不能一味的说某一种语言特别好&#xff0c;每一种语言都是在特定的情况下有自己的优势。 二.Java语言发展史…

昇思25天学习打卡营第2天|yulang

今天主要了解快速入门&#xff0c;主要包含了处理数据集、网络构建、模型训练、保存模型和加载模型&#xff0c;这些对于不是算法工程师理解起来可能稍微有一点的难度&#xff0c;学习起来有点枯燥&#xff0c;期待后续实战部分能完成一些独立的比较有意思的项目。

鸿蒙项目实战-月木学途:2.自定义底部导航

效果预览 Tabs组件简介 Tabs组件的页面组成包含两个部分&#xff0c;分别是TabContent和TabBar。TabContent是内容页&#xff0c;TabBar是导航页签栏&#xff0c;页面结构如下图所示&#xff0c;根据不同的导航类型&#xff0c;布局会有区别&#xff0c;可以分为底部导航、顶部…

使用ECharts实现动态数据可视化的最佳实践

使用ECharts实现动态数据可视化的最佳实践 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 引言 随着数据驱动决策的重要性日益增强&#xff0c;动态数据可视…

第二十站:Java未来光谱——量子计算与新兴技术的展望

Java作为一门成熟且广泛使用的编程语言&#xff0c;其在传统计算领域已经取得了巨大的成功。然而&#xff0c;随着量子计算等新兴技术的出现&#xff0c;Java也在探索其在这些领域的应用潜力。IBM Qiskit是一个开源的量子计算软件框架&#xff0c;它允许开发者使用多种编程语言…

登录验证码高扩展性设计方案

登录验证码高扩展性建设方案 本文分享了一种登录验证码高扩展性的建设方案&#xff0c;通过工厂模式策略模式&#xff0c;增强了验证码服务中验证码生成器、验证码存储器、验证码图片生成器的扩展性&#xff0c;实现了服务组件的多样化&#xff0c;降低了维护成本 登录验证码高…

8617 阶乘数字和

这是一个关于计算阶乘结果所有位上的数字之和的问题。我们可以通过以下步骤来解决这个问题&#xff1a; 1. 首先&#xff0c;我们需要一个函数来计算阶乘。由于n的范围可以达到50&#xff0c;阶乘的结果可能非常大&#xff0c;所以我们需要使用一个可以处理大整数的数据类型&a…

adb shell logcat -b all|grep如何可以grep两个子串?

在adb shell logcat命令中结合grep来过滤日志时&#xff0c;如果你想要同时匹配两个子串&#xff0c;你可以使用管道&#xff08;|&#xff09;将两个grep命令连接起来&#xff0c;或者使用grep的-E&#xff08;或egrep&#xff0c;它等同于-E&#xff09;选项来支持扩展的正则…

[课程][原创]opencv图像在C#与C++之间交互传递

opencv图像在C#与C之间交互传递 课程地址&#xff1a;https://edu.csdn.net/course/detail/39689 无限期视频有效期 课程介绍课程目录讨论留言 你将收获 学会如何封装C的DLL 学会如何用C#调用C的DLL 掌握opencv在C#和C传递思路 学会如何配置C的opencv 适用人群 拥有C#…

报错:pathspec ‘xxx‘ did not match any file(s) known to git

在 escode 中进行分支切换时报如下错误 PS > git checkout xxx error: pathspec xxx did not match any file(s) known to git远程分支已经在 gitlab 客户端手动创建&#xff0c;在 escode 中也使用了拉取之类的操作&#xff0c;但是切换分支时依然报错。 解决方案 查看分…

怎么找到DNS服务器的地址?

所有域都注册到域名名称服务器&#xff08;DNS&#xff09;点&#xff0c;以解析域名应指向的IP地址。此查找类似于在查找个人名称并查找其电话号码时的电话簿如何运行。如果DNS服务器设置错误或指向错误的名称服务器&#xff0c;则域可能无法加载相应的网页。 如何查找当前的…

【深度学习】C++ onnx Yolov8 目标检测推理

【深度学习】C onnx Yolov8 目标检测推理 导出onnx模型代码onnx_detect_infer.honnx_detect_infer.cppmain.cppCMAKELIST 导出onnx模型 python 中导出 from ultralytics import YOLO# Load the YOLOv8 model model YOLO("best.pt")# # Export the model to ONNX f…

解决多个QGroupBox在布局中,当layoutspacing=0时,结合Line消除边框过粗的干扰。

QGroupBox {border: 0px solid gray;border-top: 1px solid rgb(208, 208, 208); margin-top: 0.5em; } QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top center; padding: 0 3px; background-color: white; } 设置Line color: rgb(208, 208,…

(3)Java 8 实战第二版——使用流和Lambda进行高效编程

集合工厂 List<String> friends Arrays.asList("Raphael", "Olivia"); friends.set(0, "Richard"); friends.add("Thibaut"); ←---- 抛出一个UnsupportedModificationException异常通过工厂方法创建的Collection的底层…

jvm参数模板

一、8G以下jvm参数模板 垃圾回收器选择cms 1、关键参数 MetaspaceSize,MaxMetaspaceSize 大约是20.8MB。这个默认值是JVM内部设定的&#xff0c;过小的元空间导致oom DisableExplicitGC 可用于禁止应用程序通过调用 System.gc() 方法来显式触发垃圾回 cms参数四剑客 -X…

CrossViT:用于图像分类的交叉注意多尺度Vision Transformer

提出了一种双支路Transformer来组合不同大小的图像补丁(即变压器中的令牌)以产生更强的图像特征。方法处理具有不同计算复杂度的两个独立分支的小补丁和大补丁令牌,然后这些令牌纯粹通过注意多次融合以相互补充。此外,为了减少计算量,开发了一个简单而有效的基于交叉关注的令…

C++基础编程100题-020 OpenJudge-1.3-20 计算2的幂

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/20/ 描述 给定非负整数n&#xff0c;求2n。 输入 一个整数n。0 < n < 31。 输出 一个整数&#xff0c;即2的n次方。 样例输入 3样例输出 8参考程序-1 #include<bits/stdc.h> using nam…