技術分享:
- 王紹翾(大沙) 阿裡達摩院機器智能實驗室 資深技術專家
- 肖允鋒(鶴沖) 阿裡達摩院機器智能實驗室 資深技術專家
阿裡雲搜尋推薦産品:
- 開放搜尋(OpenSearch): https://www.aliyun.com/product/opensearch
- 智能推薦(AIRec): https://www.aliyun.com/product/bigdata/airec
人工智能,簡稱 AI,是計算機發明時就存在的一個技術領域。它的一大核心特點就是可以類人腦地輔助人類工作。其通過一系列數學的方法,如機率論、統計、線性代數等,分析和設計出能讓計算機自動學習的算法。
如下圖所示,人工智能算法可以對實體世界的人/物/場景所産生各種非結構化資料(如語音、圖檔、視訊,語言文字、行為等)進行抽象,變成多元的向量。這些向量如同數學空間中的坐标,辨別着各個實體和實體關系。我們一般将非結構化資料變成向量的過程稱為 Embedding,而非結構化檢索則是對這些生成的向量進行檢索,進而找到相應實體的過程。

非結構化檢索本質是向量檢索技術,其主要的應用領域如人臉識别、推薦系統、圖檔搜尋、視訊指紋、語音處理、自然語言處理、檔案搜尋等。随着 AI 技術的廣泛應用,以及資料規模的不斷增長,向量檢索也逐漸成了 AI 技術鍊路中不可或缺的一環,更是對傳統搜尋技術的補充,并且具備多模态搜尋的能力。
1. 業務場景
1.1 語音/圖像/視訊檢索
向量檢索的第一大類應用就是對語音、圖像、視訊這些人類所接觸到的,也最為常見的非結構化資料的檢索。傳統的檢索引擎隻是對這些多媒體的名稱和描述進行了索引,而并沒有嘗試對這些非結構資料的内容進行了解和建立索引,是以傳統引擎的檢索結果具有非常大的局限性。
随着人工智能的發展,AI 的能力使得我們可以快速且成本較低地對這些非結構化資料進行了解,這樣就使得對這些非結構化的資料内容進行直接檢索成為了可能。這其中,很重要的一環就是向量檢索。
如下圖所示,以圖檔搜尋為例,我們先以離線的方式對所有曆史圖檔進行機器學習分析,将每一幅圖檔(或者圖檔裡分割出來的人物)抽象成高維向量特征,然後将所有特征建構成高效的向量索引,當一個新查詢(圖檔)來的時候,我們用同樣的機器學習方法對其進行分析并産出一個表征向量,然後用這個向量在之前建構的向量索引中查找出最相似的結果,這樣就完成了一次以圖檔内容為基礎的圖像檢索。

1.2 文字檢索
向量檢索其實很早就已經在常見的全文檢索中用到了。
我們這裡用位址檢索為例來簡單介紹下向量檢索技術在文字檢索中的應用情況和價值。
例1:如下圖左邊,我們想在标準位址庫中搜尋“浙一醫院”(而标準位址庫中恰恰又沒有“浙一”這個關鍵詞,“浙一醫院”的标準位址是“浙江大學醫學院附屬第一醫院”),如果我們隻使用文本分詞(“浙一”和“醫院”),在标準位址庫中是不會找到相關結果的(因為“浙一”這個位址不存在)。但是我們如果能夠利用對人們曆史語言,甚至之前的點選關聯進行分析,建立起語義相關性的模型,把所有的位址都用高維特征來表達,那麼“浙一醫院”和“浙江大學醫學院附屬第一醫院”的相似度可能會非常高,是以可以被檢索出來。
例2:如下圖右邊所示,同樣是位址查詢,如果我們想在标準位址庫中搜尋“杭州阿裡巴巴”的位址,在僅使用文本召回的時候,幾乎沒辦法找到相似的結果,但是我們如果通過對海量使用者的點選行為進行分析,将點選行為加上位址文本資訊合并形成高維向量,這樣在檢索的時候就可以天然的将點選率高的位址召回并排列在前面。
1.3 搜尋/推薦/廣告
在電商領域的搜尋/推薦/廣告業務場景中,常見的需求是找到相似的同款商品和推薦給使用者感興趣的商品,這種需求絕大多數都是采用商品協同和使用者協同的政策來完成的。新一代的搜尋推薦系統吸納了深度學習的 Embedding 的能力, 通過諸如 Item-Item (i2i)、User-Item (u2i)、User-User-Item (u2u2i)、User2Item2Item (u2i2i) 等向量召回的方式實作快速檢索。
算法工程師通過對商品的相似和相關關系,以及被浏覽和被購買的使用者行為的抽象,将它們表征成高維向量特征并存儲在向量引擎中。這樣,當我們需要找一個商品的相似商品(i2i)時,就可以高效快捷地從向量引擎中檢索出來。
1.4 幾乎覆寫了所有的 AI 場景
其實,向量檢索的應用場景遠不止上面提到的這些類型。如下圖所示,它幾乎覆寫了大部分的可以應用AI的業務場景。

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

為求解 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 等。
雖然向量檢索發展多年,并逐漸成為非結構化檢索的主流方法,但仍存在了不少的技術挑戰和問題。

2.2.1 超大規模索引的精度和性能
源于非結構化資料的繁多而複雜,向量檢索天生便是用于應對這種大規模的資料檢索,但面對億級,甚至十億級以上的場景,許多檢索算法仍面臨了挑戰,工程實作也存在着一些問題,要麼建構成本巨大,要麼檢索效率低下。
另外,維數的增加也造成了一些向量檢索方法的效率下降,在高維空間下華而不實,同時工程上也增加了資料計算和存儲成本。其次,算法上缺乏完全通用性,無法對資料實作泛一緻性檢索,即任何資料分布上,檢索算法都是有效的。

目前,業内在處理高維十億級别的資料時仍顯得力不從心,多采用多片索引分别檢索合并的方法,增加了實際計算成本。
2.2.2 分布式建構和檢索
向量檢索目前多通過資料分片的方式實作水準擴充,然而過多的分片容易造成計算量的上升,進而導緻檢索效率的下降。在分布式方面,仍存在向量索引快速合并算法的難題,這便導緻了資料一旦分片之後,無法很好套用 Map-Reduce 計算模型合并成效率更高的索引。

2.2.3 流式索引的線上更新
傳統的檢索方法能很友善的實作增查改删(CRUD)的操作,向量檢索依賴資料分布和距離度量,部分方法還有資料集訓練的要求,資料點的變更甚至動一發而牽全身。是以,要實作向量索引的從 0 到 1 的全流式建構,并滿足即增即查、即時落盤、索引實時動态更新的要求,對算法和工程仍存在着一些挑戰。
目前,對于非訓練的檢索方法,能較友善的支援全記憶體索引的線上動态新增和查詢,然而面對即時落盤、記憶體不足、線上向量動态更新和删除等要求,操作成本很大,滿足不了實時性。

2.2.4 标簽+向量的聯合檢索
在大多數業務場景下,需要同時滿足标簽檢索條件和相似性檢索的要求,如查詢某些屬性條件組合下相似性的圖檔等,我們稱這種檢索為“帶條件的向量檢索”。
目前,業内采用多路歸并的方式,即分别檢索标簽和向量再進行結果合并,雖可以解決部分問題,但多數情況下結果不甚理想。主要原因在于,向量檢索無範圍性,其目标是盡可能保證 TOPK 的準确性,TOPK 很大時,準确性容易下降,造成歸并結果的不準确甚至為空的情況。

2.2.5 複雜的多場景适配
向量檢索是一種通用能力,但目前尚無通用算法可以适配任意場景和資料,就算同一種算法适配不同資料時,也存在參數配置的差異。如對于多層聚類檢索算法,使用什麼聚類算法、分多少層、聚多少類、檢索時使用什麼樣的收斂門檻值,這些在面對不同場景和資料時都是不一樣的。正是因為這些超參調優的存在,大大加大了使用者的使用門檻。
想讓使用者變得更簡單,必然需要考慮場景适配的問題,主要包括資料适配(如:資料規模、資料分布、資料次元等)和需求适配(如:召回率、吞吐、時延、流式、實時性等)兩方面。基于不同的資料分布,通過選擇合适的算法和參數,以滿足實際的業務需求。

3. 達摩院向量檢索技術揭秘
Proxima 是阿裡巴巴達摩院自研的向量檢索核心。目前,其核心能力廣泛應用于阿裡巴巴和螞蟻集團内衆多業務,如淘寶搜尋和推薦、螞蟻人臉支付、優酷視訊搜尋、阿裡媽媽廣告檢索等。同時,Proxima 還深度內建在各式各類的大資料和資料庫産品中,如阿裡雲 Hologres、開放搜尋(OpenSearch)、搜尋引擎 ElasticSearch 和 ZSearch、離線引擎 MaxCompute (ODPS) 等,為其提供向量檢索的能力。
Proxima 是通用化的向量檢索工程引擎,實作了對大資料的高性能相似性搜尋,支援 ARM64、x86、GPU 等多種硬體平台,支援嵌入式裝置和高性能伺服器,從邊緣計算到雲計算全面覆寫,支援單片索引十億級别下高準确率、高性能的索引建構和檢索。
3.1 核心能力

如上圖所示,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 的檢索性能優于 Faiss 數倍,并且能實作更高精度的召回,針對 TOP1 的檢索更是技勝一籌。除此,Faiss 在一些算法實作上也存在設計缺陷,例如 HNSW 的實作,針對大規模索引,檢索性能非常低。
3.2.2 建構對比

Faiss 兩億規模索引的建構時間需要 45小時,采用 HNSW 優化的情況下可縮短到 15小時,而相同資源下 Proxima 一個多小時便可建構完索引,并且索引的存儲更小,精度更高(見檢索對比)。
3.2.3 異構計算
Proxima 采用了和 Faiss 不一樣的 GPU 計算方法,特别針對“小批量+低延時+高吞吐”的線上檢索場景進行優化。
Proxima 在小批量場景表現出了驚人的優勢,小批量、低延時、高吞吐,并能充分利用 GPU 資源。目前,該檢索方案也大規模應用在阿裡的搜尋推薦業務上。
3.2.4 十億規模
Proxima 支援流式索引和半記憶體建構檢索模式,真正做到了有限資源下,單機十億規模級别的索引建構,以及高性能高精度檢索。 Proxima 這種高性能低成本能力為 AI 大規模離線訓練和線上檢索提供了強有力的基礎支援。


4.向量檢索在行業搜尋中的應用
4.1阿裡雲智能搜尋開發平台-開放搜尋(OpenSearch)
開放搜尋(OpenSearch)是基于阿裡巴巴自主研發的大規模分布式搜尋引擎搭建的一站式智能搜尋業務開發平台,目前為包括淘寶、天貓在内的阿裡集團核心業務提供搜尋服務支援。通過内置各行業的查詢語義了解、機器學習排序算法等能力,提供充分開放的引擎能力,助力開發者快速搭建更高性能、更高搜尋基線效果的智能搜尋服務。
4.2行業搜尋應用
各個行業的搜尋業務具有不同的行業特性和業務需求,開放搜尋根據多年積累的行業經驗打造了獨有的行業垂直解決方案,借助達摩院先進的智能語言處理技術,貼合行業痛點與需求,提供了行業專屬查詢分析能力、内置好行業排序表達式及行業算法能力,降低接入門檻,實作一鍵式配置,提升接入效率的同時也為企業提供更優質的搜尋效果。
4.2.1電商行業應用
開放搜尋電商行業模闆将行業搜尋産品化落地,使用者無需各方向技術探索,隻需按模闆接入即可擁有更優搜尋服務,免去了大量的資料标注與模型訓練工作,直接内置淘系搜尋算法能力。支援個性化搜尋與服務能力,通過引擎側的多路召回能力,實作搜尋結果、下拉提示、底紋詞等重要服務,并根據電商行業變化,不斷疊代更新原有能力,提供更高時效性的服務保障;

向量召回在商品搜尋多路召回中的應用:

了解更多:
https://www.aliyun.com/page-source//data-intelligence/activity/opensearch4.2.2線上教育拍照搜題應用
開放搜尋拍照搜題解決方案:
多路召回在教育搜題中的應用:
為什麼搜題要做多路召回?
教育拍照搜題場景相比網頁/電商的文本搜尋有顯著差異:
- 搜尋query特别長:正常檢索term數上限30,搜題需要放到100;
- 搜尋query是由拍照OCR識别之後得到的文本,關鍵term的識别錯誤會嚴重影響召回排序;
純文字查詢方案
1. OR邏輯查詢
- 為了降低無結果率,搜題客戶常見的系統是基于ES預設的OR邏輯,latency高,計算消耗大;
- OpenSearch也支援OR邏輯,針對latency高可以通過并行seek的方式優化,但整體計算消耗仍然高;
2. AND邏輯查詢
- 采用通用的query分析子產品,無結果率高,整體準确性不如OR邏輯;
- 針對教育領域優化定制的query分析子產品,大幅提高效果,準确性接近OR邏輯;
如何去兼顧計算消耗和搜尋準确性那?我們在此引入了文本向量檢索
文本向量檢索
目标:通過文本向量檢索擴召回,結合AND邏輯查詢,做到latency和計算消耗低于OR邏輯的情況下準确性更高;
向量召回采用目前最先進的BERT模型,其中針對教育搜題做的特别優化有:
- BERT模型采用達摩院自研的StructBERT,并針對教育行業定制模型;
- 向量檢索引擎采用達摩院自研的proxima引擎,準确性和運作速度遠超開源系統;
- 訓練資料可以基于客戶的搜尋日志不斷積累,效果持續提升;
這個圖我們可以看到有一項召回,在召回率上已經達到凹邏輯。同時在準确性上現在超出2邏輯3到5個點,整體的召回到數減少40倍的情況下,latency 可以降低10倍以上。

效果:
- 召回率達到OR邏輯
- 準确性超出OR邏輯3%-5%
- 整體召回doc數量減少40倍,latency降低10倍以上
多路召回優勢:
文本召回和語義向量召回的結合在搜題場景已經驗證有效,開放搜尋的多路召回架構還将有更多的使用空間:圖檔向量召回、公式召回、個性化召回。
除了開放搜尋内置的向量模型,我們也将支援客戶自己的向量索引,歡迎客戶和我們一起深耕搜題算法優化。
了解更多:
https://www.aliyun.com/page-source/data-intelligence/activity/edusearch5. 技術展望
随着 AI 技術的廣泛應用以及資料規模的不斷增長,向量檢索作為深度學習中的主流方法,其具備的泛檢索和多模态搜尋的能力也将進一步得到發揮。實體世界的實體和特征,通過向量化技術進行表征群組合,映射到數字世界,借助計算機進行計算和檢索,挖掘潛在邏輯和隐式關系,更智能的服務于人類社會。
未來,向量檢索除了要面對資料規模的不斷增長,算法上仍需要解決混合空間檢索、稀疏空間檢索、超高維、泛一緻性等問題。工程上,面對的場景将越來越廣泛,也越來越複雜,如何形成強有力的系統化體系,貫穿場景和應用,将是向量檢索下一步發展的重點。
如果您對AI檢索技術感興趣可以關注公衆号了解更多内容
如果您對搜尋與推薦相關技術感興趣,歡迎加入釘釘群内交流
【開放搜尋】新使用者活動:阿裡雲實名認證使用者享1個月免費試用
https://free.aliyun.com/product/opensearch-free-trial