向量檢索的應用

2020-12-15 騰訊網

作者:

侯宇,業務架構師

在深度學習的浪潮下,無論是文本、語音、圖像、時間序列還是消費者特徵,都可以用一組形如 [0.6, 0.3, 0.7,......0.19] 的實數來表徵。這一組實數被稱為特徵向量。

那什麼是向量檢索呢[1]?向量檢索就是在一個給定向量數據集合中,檢索出與查詢向量最相近的Topk個向量。

|常見應用場景

圖片、視頻、語音、文本等非結構化數據可以通過人工智慧技術(深度學習算法)提取特徵向量,然後通過對這些特徵向量的計算和檢索來實現對非結構化數據的分析與檢索。針對向量檢索常見的應用場景有[2]:

圖片識別:以圖搜圖,通過圖片檢索圖片。具體應用如:車輛檢索和商品圖片檢索等。

視頻處理:針對視頻信息的實時軌跡跟蹤。

自然語言處理:基於語義的文本檢索和推薦,通過文本檢索近似文本。

聲紋匹配,音頻檢索。

文件去重:通過文件指紋去除重複文件。

新藥搜索,基因篩選。

|面臨的挑戰

向量檢索麵臨的挑戰主要在以下幾個方面:

高維數據:向量數據維度通常是 256/512 維。

海量數據:在常用的圖片或視頻處理場景中,向量數據通常在億級別。

高召回:為保證檢索效果,精度召回率通常要求 95% 以上。

高性能:為保證用戶體驗,向量檢索的響應要求毫秒級。

|向量檢索服務

目標

我們知道向量的維度很高,並且規模龐大,這就決定了向量數據在計算時會佔用較多內存。比如在 NLP 中,一個詞向量可以表示成一個 256 維的矩陣,內存佔用將是:

一個詞向量:4 (float浮點數) * 256 = 1,024 bytes = 1 K

百萬數據集:1,000,000 * 1 K / 1,024 ≈ 1 G

億級數據集:1 G * 100 ≈ 100 G

可以看出在億級別的詞向量數據規模下,佔用內存達到上百 GB。那麼除了應對以上挑戰,如何減少內存佔用也是向量檢索服務的目標。

本質

向量檢索服務的本質就是把高維空間的數據切分到子空間進行搜索。通過對向量建立索引,減少搜索範圍,實現高性能的向量數據分析。關於向量索引的分類有:

基於量化的索引

通過聚類方法把空間裡的點劃分成多個單元。那麼在查詢時先把目標向量與所有單元的中心做距離比較,選出最近單元,得到最終結果。

基於圖的索引

將圖的中心位置設為導航點,然後通過特定的選邊策略來控制每個點的出度。使得搜索時既能減少內存使用,又能快速定位到目標位置附近。

基於樹的索引

用超平面把高維空間分割成多個子空間,並把這些子空間以樹型結構存儲的索引方式。

基於哈希的索引

基於哈希的索引通過設計一個哈希函數,使特徵向量經過哈希函數映射後得到哈希值。

向量檢索服務

向量檢索的軟體生態目前並不是十分成熟。當前 GitHub 上的向量檢索以向量檢索算法庫為主。然而工業界都需要將向量檢索庫服務化,對其進行封裝和優化,以適應各自的使用場景。

按照向量索引構建與向量查詢是否拆分的原則,可以將向量檢索服務分為兩種:

向量索引構建與向量查詢分離,索引作為離線服務,查詢作為在線服務。優點是查詢與索引構建分離,對於查詢和構建的並發任務而言互相不幹涉;缺點是需要較多的伺服器,並且離線與在線的數據一致性也是一個問題。

向量索引構建與向量查詢不分離,以 Milvus 為例。優點是可以利用較少的硬體資源來完成查詢和索引構建的任務,可以充分利用磁碟資源存儲原始向量,提供查詢原始向量的能力;缺點是向量查詢和索引構建無法並發,會出現資源搶佔,限制了多個業務並發處理的能力。

|基於 Milvus 的文本召回解決方案

Milvus 是一款開源向量相似度搜尋引擎,建立在Faiss、NMSLIB、Annoy等向量索引庫基礎之上,具有功能強大、穩定可靠以及易於使用等特點。本文將介紹一個基於 Milvus 實現的文本召回解決方案。

在推薦系統、搜索系統中,文本召回是整個系統架構的重要組成部分。在深度學習來臨之前,文本召回使用的是倒排索引技術。但是隨著文本內容的增多和場景含義的豐富, 同一個詞在不同文本中的意思可能不盡相同。然而倒排索引中的詞本身是無法表徵文本含義的,導致召回的文本充滿了歧義。

利用文本向量化技術可以對文本含義進行表徵,再利用向量檢索技術來召回相似文本,可以在一定程度上避免倒排召回的缺點。

文本向量化

在本文的應用場景中,用戶問句是最重要的文本形式。問句長度一般情況下為10~30 個詞左右。目前生成句向量的方式有很多種:

Tfidf:此方式同倒排一樣,無法表徵句子的意思。

分詞,訓練詞向量模型,然後將問句中的詞的詞向量相加求平均;這在一定程度上表徵了句子信息,在絕大多數場景下夠用。

利用 Bert 等預訓練模型獲取相關的句向量。

Milvus 提供支持

Milvus 是一個開源的向量檢索中間件,支持常見的向量檢索場景,具備以下特點:

支持基於 Python / Java / Go / C++ 的 SDK 和 RESTful API

支持 Annoy、Faiss、HNSW 等多種算法庫

支持 CPU 和 GPU 運算

以 collection 為基本的管理單元,在 collection 中再劃分 partition 為基準,支持粗粒度與細粒度的數據管理

支持原始向量存儲與查詢

系統方案

本文介紹的文本召回系統主要分為以下幾個步驟:

創建一個 collection,用於插入向量和構建向量索引。

在查詢時,指定 collection 進行向量檢索,返回 Topk 個向量。

當存在索引更新的時候,則建立一個新的 collection,重複步驟1。當新的 collection 及索引建立完畢,手動釋放掉舊的 collection。此步驟一般放在低頻訪問時段。

整體系統架構及流程如下圖所示:

|總結

從向量檢索中間件的角度來衡量,Milvus 是極具市場潛力的開源組件。Milvus 本身的豐富特性就在一定程度上可以靈活地支持業務場景。

從業務場景的角度考慮, 擁有了 Milvus 可以更加專注地做業務邏輯上的處理和適配,而不用擔心向量檢索的速度與讀取。這使得業務開發人員更專注於業務上的邏輯變更,更有利於業務的快速迭代和演進。此外,Milvus 的 RoadMap 能看出它當前是一個向量檢索引擎,但是後續會向混合查詢方向優化,具備更強的非結構化數據的存儲和查詢能力。

參考文獻

[1]https://zhuanlan.zhihu.com/p/90677337

[2]https://milvus.io/cn/docs/v0.6.0/reference/application.md

| 歡迎加入 Milvus 社區

github.com/milvus-io/milvus | 源碼

milvus.io | 官網

zhihu.com/org/zilliz-11/columns | 知乎

相關焦點

  • 英特爾與京東優化分布式特徵向量檢索系統Vearch,加速AI應用創新
    圖片來源:Pexels 聽音識曲,以圖搜圖,所有這些,都有賴於人工智慧的特徵向量檢索能力:AI 機器學習算法 隨著 AI 的開發和應用不斷普及和深入,企業需要計算、存儲海量特徵向量數據,IT 基礎設施因此面臨沉重的性能壓力。
  • 矩陣乘法的簡單應用-信息檢索
    這僅僅是矩陣乘法的一個最基本的應用,實際上它在實際應用中具有更多更重要的影響。矩陣乘法在信息檢索中的應用隨著信息化的發展,網絡或圖書館中的信息越來越多,信息提取問題,即如何快速有效的從眾多信息中搜索自己所關心的內容,就變得越來越重要,與這個問題緊密相關的就是矩陣理論與線性代數中相關知識,例如矩陣與向量乘法、向量的內積運算、矩陣特徵值問題等。
  • 京東高級算法工程師34頁PPT詳解基於分布式向量檢索系統Vearch的大...
    在本次講解中,邸志惠老師從大規模圖像檢索任務所面臨的挑戰入手,詳細解析了Vearch的原理,最後通過三個案例展示Vearch如何在實踐場景中助力深度學習應用落地。3、Vearch在深度學習場景中的實踐大規模圖像檢索任務所面臨的挑戰隨著深度學習技術的快速發展,它的相關應用也滲透到了我們生活的方方面面。
  • 27、平面向量的數量積與平面向量的應用
    2.解決涉及幾何圖形的向量數量積運算問題時,可利用向量的加減運算或數量積的運算律化簡.但一定要注意向量的夾角與已知平面角的關係是相等還是互補.平面向量的模及應用思考求向量的模及求向量模的最值有哪些方法?
  • Milvus 實戰 | 基於 Milvus 的食譜檢索系統
    概述現在,社交媒體、電商網站以及短視頻應用源源不斷地產生大量多模態數據。
  • 空間向量在立體幾何中的應用
    立體幾何的夾角與距離問題求解方法多變,而利用空間向量來求解,不但方法統一,而且過程簡單,本文介紹空間向量在這兩方面應用。二.應用1.線與面的夾角正弦值:方法:直線的方向向量與平面的法向量夾角的餘弦的絕對值3.二面角的平面角餘弦值方法:兩平面的「順次」法向量夾角的餘弦值,兩平面的「對頂」法向量夾角的餘弦值的相反數
  • 《向量的數量積、向量積與混合積》及其應用知識點小結與典型題
    一、兩向量的數量積及其應用1.向量的數量積向量a=(a1,a2,a3),b=(b1,b2,b3)的數量積為其中θ為向量 5.向量積的物理應用常力F拉物體沿位移S所做的功W為:W=F∙S 二、兩向量的向量積及其應用
  • 向量的極化恆等式在解題中的應用
    例析向量的極化恆等在解題中的應用向量是高中數學一個非常重要的內容,它集數與形於一身,既有代數的抽象性,又有幾何的直觀性,是形象思維與抽象思維的有機結合。近幾年來,在新課程的引領下,各省市高考試題湧現了一些以向量為背景的好題,有些省市甚至是以向量為突破口來實現高考試題命制的創新。
  • 2.5.2 向量在物理中的應用舉例
    研討素材教學分析向量與物理學天然相聯.向量概念的原型就是物理中的力、速度、位以及幾何中的有向線段等概念,向量是既有大小、又有方向的量,它與物理學中的力學、運動學等有著天然的聯繫,將向量這一工具應用到物理中,可以使物理題解答更簡捷、更清晰.並且向量知識不僅是解決物理許多問題的有利工具,
  • 這組必備、通用的向量基本技能,是有效解決向量應用問題的落足點
    ,是向量有關題目的最基本問題,幾乎每道題目以及其它向量基本問題均會涉及。溫馨提示2:需要時,可把兩向量相減看成「被減向量+減向量的相反向量」來求解,使向量運算更直觀、更便捷。講解2:① 本題為向量數乘基本問題,關鍵在於準確理解和熟練應用向量數乘相關概念和性質、以及平面向量共線條件。例3. 已知向量a=(2,3),b=(-1,2),若ma+4b與a-2b共線,則m的值為___。
  • 信息檢索&FAQ硬核技術!飛槳開源百度自研SimNet模型
    SimNet 顯著改善了長冷 query 的搜索效果,提升了搜索智能化的水平,在百度搜索以及其它產品線廣泛應用。1.文本語義匹配文本語義匹配是自然語言處理中一個重要的基礎問題,NLP領域的很多任務都可以抽象為文本匹配任務。例如,信息檢索可以歸結為查詢項和文檔的匹配,問答系統可以歸結為問題和候選答案的匹配,對話系統可以歸結為對話和回復的匹配。
  • KDD2020 | 揭秘Facebook搜索中的語義檢索技術
    雖然語義檢索技術(Embedding-based Retrieval,EBR)在傳統的搜尋引擎中得到了廣泛應用,但是 Facebook 搜索之前主要還是使用布爾匹配模型,本文就來談談如何將 Embedding 檢索技術應用在 Facebook 搜索場景中。
  • 高考數學創新微練—平面向量的數量積及綜合應用
    平面向量的數量積運算的功能比較強大,不僅涉及到平面幾何中平行與垂直的關係證明,解析幾何中以向量運算為背景的題目是高考的熱點,還涉及到三角函數的運算,總之,向量運算是威力無窮的。下面就平面向量的數量積及綜合應用進行一些辨析,體會一下平面向量的綜合應用。
  • 教學研討|2.5.2 向量在物理中的應用舉例
    ,明了向量在物理中應用的基本題型,進一步加深對所學向量的概念和向量運算的認識.2.過程與方法:經歷以向量和向量的運算為工具解答物理問題的過程。3.情感、態度與價值觀:通過對具體問題的探究解決,進一步培養學生的數學應用意識,提高應用數學的能力.體會數學在現實生活中的重要作用.養成善於發現生活中的數學,善於發現物理及其他科目中的數學及思考領悟各學科之間的內在聯繫的良好習慣.
  • 谷歌發布全新檢索引擎:搜書從未如此方便-谷歌,發布,檢索引擎,搜書...
    Talk to Books 是一個可以從書中的句子層面搜索書籍的全新檢索模式;另一個互動內容則是 Semantris,一個由機器學習驅動的單詞聯想遊戲。這些向量模型根據概念和語言的等價性、相似性或關聯性,將語義相似的詞或短語投影到臨近點。建模方法谷歌拓展了在向量空間中表徵語言(language)的構想,這一想法通過為像完整句子或段落為代表的較大語言塊創建向量來實現。語言是由具有概念的層次結構組成的,因此團隊採用模塊的層次結構來構建向量,每一模塊都要考慮與不同時間尺度序列所對應的特徵。
  • 向量共線應用與相關三角形面積求法實例二
    今天身體稍微好一點,於是小編繼續活躍一下,給大家介紹關於向量共線與三角形面積求法的第二個應用實例。快來跟我一起思考吧。實例二:注意觀察,此題就一個已知數據和一組關係式,但就這一個數據,加上關係式的推導,也將題目解出來了,並且解答過程並不複雜。此題充分說明,處理好向量之間的轉換及應用好共線的相關結論是非常重要的。
  • 空間向量在立體幾何中的應用(理)(下)
    【評述】對於容易建立坐標系的線面平行問題的向量解法,求出平面的法向量,然後證明法向量與直線的方向向量垂直即可.對於探究性問題,通常先假設結論成立,設出相關點的坐標,利用相關知識,列出關於坐標的方程,若方程有解,則存在,否則不存在.設點的坐標時,利用點在某線段上,設出點分線段所成的比,用比表示坐標可以減少未知量
  • Unity遊戲開發 向量在遊戲開發中的應用(一)
    向量在遊戲開發中是非常實用的
  • 高中數學《平面向量的應用》微課精講+知識點+教案課件+習題
    、平行四邊形法則,有時也用到向量減法的定義;(2)證明線段平行,三角形相似,判斷兩直線(或線段)是否平行,常運用到向量共線的條件;(3)證明垂直問題,常用向量垂直的充要條件;1、向量在三角函數中的應用:(1)以向量為載體研究三角函數中最值、單調性、周期等三角函數問題;(2)通過向量的線性運算及數量積、共線來解決三角形中形狀的判斷、
  • 平面向量的應用及題型,思維導圖筆記,值得收藏
    向量在高考中,地位比以前重要了,分值也逐年增加。它會單獨出一道題,向量的知識也會頻繁地出現在幾何問題中。向量分為平面向量和空間向量兩個部分。平面向量需要單獨學習,而空間向量需要和立體幾何結合在一起學習。