首页 > 其他分享 >条件过滤检索

条件过滤检索

时间:2024-11-07 10:31:51浏览次数:1  
标签:检索 name weight 示例 age 运算符 过滤 条件 male

背景介绍

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

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

条件过滤检索示例

说明

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

  2. 本示例需要参考新建Collection-使用示例

插入带有Field的数据

Python

import dashvector
import numpy as np

client = 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的特性,因此可以在插入Do时,随意指定创建Collection时未定义的Field,如上述示例中的maleField。

通过filter进行条件过滤检索

Python

import dashvector

client = 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 比较运算符 常量的组合生成比较表达式,说明及示例如下:

成员运算符

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

字符串运算符

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

逻辑运算符

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

说明

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

标签:检索,name,weight,示例,age,运算符,过滤,条件,male
From: https://www.cnblogs.com/DashVector/p/18531663

相关文章

  • 一文理解布隆过滤器和布谷鸟过滤器
    作者:京东保险王奕龙最近在大促中使用到了布隆过滤器,所以本次借着机会整理下相关内容,并了解了布谷鸟过滤器,希望对后续学习的同学有启发~布隆过滤器布隆过滤器是概率性数据结构,用于检查元素是否存在集合中。布隆过滤器并不存储集合中的所有元素,而是存储元素的哈希表示,因此牺牲......
  • 条件分支语句(day10)
    首先是上一篇的评论习题://第一题哦~第一题/*从键盘输入小明的期末成绩单:当成绩为100时,奖励一辆BWMx5,当成绩[80-99]时,奖励一台iPhone14Promax1TB,当成绩[60-79]时,奖励一本参考书,当成绩为其他时,奖励一个大耳巴子。*/varscore=......
  • 基于springboot框架在线生鲜商城推荐系统 java实现个性化生鲜/农产品购物商城推荐网站
    基于springboot框架在线生鲜商城推荐系统java实现个性化生鲜/农产品购物商城推荐网站爬虫、数据分析、排行榜基于协同过滤算法推荐、基于流行度热点推荐、平均加权混合推荐机器学习、大数据、深度学习OnlineShopRecommendEx一、项目简介1、开发工具和使用技术IDEA,jdk......
  • 谈谈全文检索Elasticsearch的核心概念
    Elasticsearch的核心概念1NRT(NearRealtime):近实时两方面:写入数据时,过1秒才会被搜索到,因为内部在分词、录入索引。es搜索时:搜索和分析数据需要秒级出结果。2Cluster:集群包含一个或多个启动着es实例的机器群。通常一台机器起一个es实例。同一网络下,集名一样的多个es实......
  • odoo中对多条数据按条件进行分类汇总 read_group的用法总结并抽取出公式
    今天在工作中遇到一个这样的问题。要求:做一个打印模板实现下面图中的分类汇总 py3o://for="oinobject.delivery_containers_line.read_group(domain=[('delivery_order_id','=',object.id)],fields=['customer_id','delivery_order_id','sales_order_......
  • 【JAVA】Java基础—基础语法:控制结构(条件语句、循环结构)
    在Java编程中,控制结构是用来控制程序执行流程的重要工具。它们允许程序根据不同的条件选择执行不同的代码块,或者重复执行某段代码。控制结构使得程序能够根据输入和状态动态地做出决策,极大地增强了程序的灵活性和功能。控制结构主要分为两大类:条件语句:根据条件的真假来决定......
  • 【第六章·循环控制结构】第四节:条件控制的循环
    目录条件控制的循环示例:简单的猜数游戏问题求解方法分析设定rand()函数随机数范围 示例:循环猜数游戏问题求解方法分析伪随机数解决随机数重复:使用srand()设置种子示例:限制次数的猜数游戏示例:能处理非法输入并清空输入缓冲区的猜数游戏问题求解方法分析处理非......
  • 基于JavaScript的关键词过滤示例
    业务场景中,合作第三方的的各种AI内容审核模型,完全达不到满意的状态,奇怪这么简单的一个东西,有这么复杂吗,自己动手来一个DEMO,给开发,仅供参考。<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-wi......
  • 快速、准确、批量 —— 利索能及的检索革命
     在快节奏的商业环境中,创新和效率是企业成功的关键。专利检索是保护创新成果的重要步骤,效率会直接影响到企业的竞争力。利索能及作为一个强大的专利检索工具,其批量检索功能为用户提供了一个快速、高效的解决方案,帮助用户一次性处理多个专利检索任务,节省时间,提高工作效率。利......
  • GB/T 28046.3-2011 道路车辆 电气及电子设备的环境条件和试验 第3部分:机械负荷(10)
    写在前面本系列文章主要讲解道路车辆电气及电子设备的环境条件和试验GB/T28046标准的相关知识,希望能帮助更多的同学认识和了解GB/T28046标准。若有相关问题,欢迎评论沟通,共同进步。(*^▽^*)第3部分:机械负荷附录A振动试验曲线建立指南(资料性附录)A.5疲劳计算A.5.6通过......