天天看點

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

  人工智能,簡稱 AI,是計算機發明時就存在的一個技術領域。它的一大核心特點就是可以類人腦地輔助人類工作。其通過一系列數學的方法,如機率論、統計、線性代數等,分析和設計出能讓計算機自動學習的算法。

  如下圖所示,人工智能算法可以對實體世界的人/物/場景所産生各種非結構化資料(如語音、圖檔、視訊,語言文字、行為等)進行抽象,變成多元的向量。這些向量如同數學空間中的坐标,辨別着各個實體和實體關系。我們一般将非結構化資料變成向量的過程稱為 Embedding,而非結構化檢索則是對這些生成的向量進行檢索,進而找到相應實體的過程。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

1.業務場景

1.1 語音/圖像/視訊檢索

  向量檢索的第一大類應用就是對語音、圖像、視訊這些人類所接觸到的,也最為常見的非結構化資料的檢索。傳統的檢索引擎隻是對這些多媒體的名稱和描述進行了索引,而并沒有嘗試對這些非結構資料的内容進行了解和建立索引,是以傳統引擎的檢索結果具有非常大的局限性。

  随着人工智能的發展,AI 的能力使得我們可以快速且成本較低地對這些非結構化資料進行了解,這樣就使得對這些非結構化的資料内容進行直接檢索成為了可能。這其中,很重要的一環就是向量檢索。

  如下圖所示,以圖檔搜尋為例,我們先以離線的方式對所有曆史圖檔進行機器學習分析,将每一幅圖檔(或者圖檔裡分割出來的人物)抽象成高維向量特征,然後将所有特征建構成高效的向量索引,當一個新查詢(圖檔)來的時候,我們用同樣的機器學習方法對其進行分析并産出一個表征向量,然後用這個向量在之前建構的向量索引中查找出最相似的結果,這樣就完成了一次以圖檔内容為基礎的圖像檢索。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

1.2 文字檢索

  向量檢索其實很早就已經在常見的全文檢索中用到了。我們這裡用位址檢索為例來簡單介紹下向量檢索技術在文字檢索中的應用情況和價值。

  如下圖左邊的例子,我們想在标準位址庫中搜尋“浙一醫院”(而标準位址庫中恰恰又沒有“浙一”這個關鍵詞,“浙一醫院”的标準位址是“浙江大學醫學院附屬第一醫院”),如果我們隻使用文本分詞(“浙一”和“醫院”),在标準位址庫中是不會找到相關結果的(因為“浙一”這個位址不存在)。但是我們如果能夠利用對人們曆史語言,甚至之前的點選關聯進行分析,建立起語義相關性的模型,把所有的位址都用高維特征來表達,那麼“浙一醫院”和“浙江大學醫學院附屬第一醫院”的相似度可能會非常高,是以可以被檢索出來。

  另外一個例子,如下圖右邊所示,同樣是位址查詢,如果我們想在标準位址庫中搜尋“杭州阿裡巴巴”的位址,在僅使用文本召回的時候,幾乎沒辦法找到相似的結果,但是我們如果通過對海量使用者的點選行為進行分析,将點選行為加上位址文本資訊合并形成高維向量,這樣在檢索的時候就可以天然的将點選率高的位址召回并排列在前面。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

1.3 搜尋/推薦/廣告

  在電商領域的搜尋/推薦/廣告業務場景中,常見的需求是找到相似的同款商品和推薦給使用者感興趣的商品,這種需求絕大多數都是采用商品協同和使用者協同的政策來完成的。新一代的搜尋推薦系統吸納了深度學習的 Embedding 的能力, 通過諸如 Item-Item (i2i)、User-Item (u2i)、User-User-Item (u2u2i)、User2Item2Item (u2i2i) 等向量召回的方式實作快速檢索。

  算法工程師通過對商品的相似和相關關系,以及被浏覽和被購買的使用者行為的抽象,将它們表征成高維向量特征并存儲在向量引擎中。這樣,當我們需要找一個商品的相似商品(i2i)時,就可以高效快捷地從向量引擎中檢索出來。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

1.4 幾乎覆寫了所有的 AI 場景

  其實,向量檢索的應用場景遠不止上面提到的這些類型。如下圖所示,它幾乎覆寫了大部分的可以應用AI的業務場景。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

2.向量檢索的現狀和挑戰

2.1 繁多的檢索算法

  向量檢索本質為了求解 KNN 和 RNN 兩個問題,KNN(K-Nearest Neighbor)是查找離查詢點最近的 K 個點,而 RNN (Radius Nearest Neighbor) 查找查詢點某半徑範圍内的所有點或 N 個點。在涉及到大資料量的情況下,百分之百準确求解 KNN 或 RNN 問題的計算成本較高,于是引入了求近似性解的方法,是以大資料量檢索實際要解決的是 ANN(Approximate Nearest Neighbor)的問題。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

  為求解 ANN 的問題,業内提出了不少的檢索算法。常用的算法,最早可以溯源到 1975 年提出的 KD-Tree,其基于歐式空間,采用多元二叉樹資料結構解決 ANN 檢索問題。20 世紀 80 年代末,産生了空間編碼和哈希的思想,主要以分形曲線和局部敏感哈希為代表。分形曲線和局部敏感哈希屬于空間編碼和轉換的思想,類似思想的算法還有 Product Quantization (PQ) 等,這些量化算法将高維問題映射到低維進行求解,進而提高檢索效率。21 世紀初,采用鄰居圖解決 ANN 問題的思想也開始萌芽,鄰居圖主要基于“鄰居的鄰居可能也是鄰居”的假設,預先建立資料集中所有點的鄰居關系,形成具有一定特性的鄰居圖,檢索時在圖上進行遊走周遊,最後收斂得到結果。

  向量檢索的算法繁多且缺乏通用性,應對不同資料次元和分布有不同算法,但總體可歸為三類思想:空間劃分法、空間編碼和轉換法、以及鄰居圖法。空間劃分法以 KD-Tree、聚類檢索為代表,檢索時快速定位到這些小集合,進而減少需要掃描的資料點的量,提高檢索效率。空間編碼和轉換法,如 p-Stable LSH、PQ 等方法,将資料集重新編碼或變換,映射到更小的資料空間,進而減少掃描的資料點的計算量。鄰居圖法,如 HNSW、SPTAG、ONNG 等,通過預先建立關系圖的方法,去加快檢索時的收斂速度,減少需要掃描的資料點的量,以提高檢索效率。

2.2 面臨的技術挑戰

  向量檢索在發展過程中,也湧現出了一些優秀的開源作品,如 FLANN、Faiss 等。這些作品對業内一些常用和有效的 ANN 算法進行了統一實作和優化,通過運作庫的方式,形成一些工程化的檢索方案。基于這些運作庫和改進,業内也産生了一些服務化的工程引擎,如 milvus、vearch 等。

  雖然向量檢索發展多年,并逐漸成為非結構化檢索的主流方法,但仍存在了不少的技術挑戰和問題。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

2.2.1 超大規模索引的精度和性能

  源于非結構化資料的繁多而複雜,向量檢索天生便是用于應對這種大規模的資料檢索,但面對億級,甚至十億級以上的場景,許多檢索算法仍面臨了挑戰,工程實作也存在着一些問題,要麼建構成本巨大,要麼檢索效率低下。

  另外,維數的增加也造成了一些向量檢索方法的效率下降,在高維空間下華而不實,同時工程上也增加了資料計算和存儲成本。其次,算法上缺乏完全通用性,無法對資料實作泛一緻性檢索,即任何資料分布上,檢索算法都是有效的。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

  目前,業内在處理高維十億級别的資料時仍顯得力不從心,多采用多片索引分别檢索合并的方法,增加了實際計算成本。

2.2.2 分布式建構和檢索

  向量檢索目前多通過資料分片的方式實作水準擴充,然而過多的分片容易造成計算量的上升,進而導緻檢索效率的下降。在分布式方面,仍存在向量索引快速合并算法的難題,這便導緻了資料一旦分片之後,無法很好套用 Map-Reduce 計算模型合并成效率更高的索引。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

2.2.3 流式索引的線上更新

  傳統的檢索方法能很友善的實作增查改删(CRUD)的操作,向量檢索依賴資料分布和距離度量,部分方法還有資料集訓練的要求,資料點的變更甚至動一發而牽全身。是以,要實作向量索引的從 0 到 1 的全流式建構,并滿足即增即查、即時落盤、索引實時動态更新的要求,對算法和工程仍存在着一些挑戰。

  目前,對于非訓練的檢索方法,能較友善的支援全記憶體索引的線上動态新增和查詢,然而面對即時落盤、記憶體不足、線上向量動态更新和删除等要求,操作成本很大,滿足不了實時性。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

2.2.4 标簽+向量的聯合檢索

  在大多數業務場景下,需要同時滿足标簽檢索條件和相似性檢索的要求,如查詢某些屬性條件組合下相似性的圖檔等,我們稱這種檢索為“帶條件的向量檢索”。

  目前,業内采用多路歸并的方式,即分别檢索标簽和向量再進行結果合并,雖可以解決部分問題,但多數情況下結果不甚理想。主要原因在于,向量檢索無範圍性,其目标是盡可能保證 TOPK 的準确性,TOPK 很大時,準确性容易下降,造成歸并結果的不準确甚至為空的情況。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

2.2.5 複雜的多場景适配

  向量檢索是一種通用能力,但目前尚無通用算法可以适配任意場景和資料,就算同一種算法适配不同資料時,也存在參數配置的差異。如對于多層聚類檢索算法,使用什麼聚類算法、分多少層、聚多少類、檢索時使用什麼樣的收斂門檻值,這些在面對不同場景和資料時都是不一樣的。正是因為這些超參調優的存在,大大加大了使用者的使用門檻。

  想讓使用者變得更簡單,必然需要考慮場景适配的問題,主要包括資料适配(如:資料規模、資料分布、資料次元等)和需求适配(如:召回率、吞吐、時延、流式、實時性等)兩方面。基于不同的資料分布,通過選擇合适的算法和參數,以滿足實際的業務需求。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

3. 達摩院向量檢索技術揭秘

  Proxima 是阿裡巴巴達摩院自研的向量檢索核心。目前,其核心能力廣泛應用于阿裡巴巴和螞蟻集團内衆多業務,如淘寶搜尋和推薦、螞蟻人臉支付、優酷視訊搜尋、阿裡媽媽廣告檢索等。同時,Proxima 還深度內建在各式各類的大資料和資料庫産品中,如阿裡雲 Hologres、搜尋引擎 Elastic Search 和 ZSearch、離線引擎 MaxCompute (ODPS) 等,為其提供向量檢索的能力。

  Proxima 是通用化的向量檢索工程引擎,實作了對大資料的高性能相似性搜尋,支援 ARM64、x86、GPU 等多種硬體平台,支援嵌入式裝置和高性能伺服器,從邊緣計算到雲計算全面覆寫,支援單片索引十億級别下高準确率、高性能的索引建構和檢索。

3.1 核心能力

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

如上圖所示,Proxima 的主要核心能力有以下幾點:

  • 超大規模索引建構和檢索:Proxima 精于工程實作和算法底層優化,引入了複合性的檢索算法,基于有限的建構成本實作了高效率的檢索方法,單片索引可達幾十億的規模。
  • 索引水準擴充:Proxima 采用非對等分片的方法實作分布式檢索。對于鄰居圖索引,解決了有限精度下圖索引快速合并的難題,與 Map-Reduce 計算模型可有效進行結合。
  • 高維 & 高精度:Proxima 支援多種檢索算法,并對算法做了更深層的抽象,形成算法架構,依據不同資料次元和分布選擇不同算法或算法組合,根據具體場景需求實作精度和性能之間的平衡。
  • 流式實時 & 線上更新:Proxima 采用扁平化的索引結構,支援線上大規模向量索引的從 0 到 1 的流式建構,并利用鄰居圖的便利性和資料特點,實作了索引即增即查、即時落盤,以及實時動态更新。
  • 标簽+向量檢索:Proxima 在索引算法層實作了“帶條件的向量檢索”方法,解決了傳統多路歸并召回結果不理想的情況,更大程度的滿足了組合檢索的要求。
  • 異構計算:Proxima 支援大批量高吞吐的離線檢索加速,同時解決了 GPU 建構鄰居圖索引的難題,另一方面也成功解決了小批量+低延時+高吞吐的資源利用問題,并将其全面應用在淘寶的搜尋推薦系統中。
  • 高性能和低成本:有限成本下實作最大化性能并滿足業務的需求是向量檢索需要解決的主要問題。Proxima 實作了對多種平台和硬體的優化,支援雲伺服器和部分嵌入式裝置,通過與分布式排程引擎的結合實作離線資料檢索和訓練,通過扁平化索引和磁盤檢索的方案實作了對冷資料的快速檢索。
  • 場景适配:結合超參調優和複合索引等方法,通過對資料采樣和預實驗,Proxima 可以解決一些資料場景智能适配的問題,進而提高系統的自動化能力,以及增強使用者的易用性。

3.2 業内對比

  目前,業内普遍使用的向量檢索庫是 Facebook AI 團隊開源的 Faiss (Facebook AI Similarity Search) 引擎。Faiss 非常優秀,也是不少服務化引擎的基礎核心,但 Faiss 在大規模通用檢索場景方面仍存在一些局限性,如流式實時計算、離線分布式、線上異構加速、标簽&向量聯合檢索、成本控制以及服務化等方面。

  例如,針對公開的十億規模的 ANN_SIFT1B 資料集(來源 corpus-texmex.irisa.fr),在 Intel(R) Xeon(R) Platinum 8163 CPU & 512GB 記憶體的伺服器上,由于 Faiss 要求的計算資源過于龐大,無法實作單機十億規模的索引的建構和檢索。而 Proxima 在同樣的環境和資料量下單機可以輕松完成十億規模的索引的建構和檢索。

  考慮到測試的可行性,達摩院團隊在同樣是 2 億規模的資料量下,針對索引建構和檢索對比了 Faiss 和 Proxima,另外,同樣 2000 萬規模的資料量下,對比了 Faiss 和 Proxima 單卡的異構計算能力,對于十億規模的資料量 Proxima 則單獨給出測試資料,具體結果如下。

3.2.1 檢索對比

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

  Proxima 的檢索性能優于 Faiss 數倍,并且能實作更高精度的召回,針對 TOP1 的檢索更是技勝一籌。除此,Faiss 在一些算法實作上也存在設計缺陷,例如 HNSW 的實作,針對大規模索引,檢索性能非常低。

3.2.2 建構對比

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

  Faiss 兩億規模索引的建構時間需要 45小時,采用 HNSW 優化的情況下可縮短到 15小時,而相同資源下 Proxima 一個多小時便可建構完索引,并且索引的存儲更小,精度更高(見檢索對比)。

3.2.3 異構計算

  Proxima 采用了和 Faiss 不一樣的 GPU 計算方法,特别針對“小批量+低延時+高吞吐”的線上檢索場景進行優化。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

  Proxima 在小批量場景表現出了驚人的優勢,小批量、低延時、高吞吐,并能充分利用 GPU 資源。目前,該檢索方案也大規模應用在阿裡的搜尋推薦業務上。

3.2.4 十億規模

  Proxima 支援流式索引和半記憶體建構檢索模式,真正做到了有限資源下,單機十億規模級别的索引建構,以及高性能高精度檢索。 Proxima 這種高性能低成本能力為 AI 大規模離線訓練和線上檢索提供了強有力的基礎支援。

賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望
賦能阿裡多業務場景,達摩院自研向量檢索引擎 Proxima 公開1.業務場景2.向量檢索的現狀和挑戰3. 達摩院向量檢索技術揭秘4. 技術展望

4. 技術展望

  随着 AI 技術的廣泛應用以及資料規模的不斷增長,向量檢索作為深度學習中的主流方法,其具備的泛檢索和多模态搜尋的能力也将進一步得到發揮。實體世界的實體和特征,通過向量化技術進行表征群組合,映射到數字世界,借助計算機進行計算和檢索,挖掘潛在邏輯和隐式關系,更智能的服務于人類社會。

  未來,向量檢索除了要面對資料規模的不斷增長,算法上仍需要解決混合空間檢索、稀疏空間檢索、超高維、泛一緻性等問題。工程上,面對的場景将越來越廣泛,也越來越複雜,如何形成強有力的系統化體系,貫穿場景和應用,将是向量檢索下一步發展的重點。

繼續閱讀