條件過濾檢索

背景介紹

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

向量檢索服務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.pswp.cn/diannao/39316.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39316.shtml
英文地址,請注明出處:http://en.pswp.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…