日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

條件過濾檢索

背景介紹

在大多數業務場景中,單純使用向量進行相似性檢索并無法滿足業務需求,通常需要在滿足特定過濾條件、或者特定的“標簽”的前提下,再進行相似性檢索。

向量檢索服務DashVector支持條件過濾和向量相似性檢索相結合,在精確滿足過濾條件的前提下進行高效的向量檢索。

條件過濾檢索示例

說明
  1. 需要使用您的api-key替換示例中的 YOUR_API_KEY、您的Cluster Endpoint替換示例中的YOUR_CLUSTER_ENDPOINT,代碼才能正常運行。

  2. 本示例需要參考新建Collection-使用示例提前創建好名稱為quickstart的Collection。

插入帶有Field的數據

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的特性,因此可以在插入Doc時,隨意指定創建Collection時未定義的Field,如上述示例中的maleField。

通過filter進行條件過濾檢索

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 比較運算符 常量的組合生成比較表達式,說明及示例如下:

符號

描述

支持數據類型

表達式示例

示例解釋

<

小于

  • 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)