fbpx

什麼是向量資料庫?向量資料庫運作、應用、趨勢懶人包!

什麼是向量資料庫?

向量資料庫(Vector Database)是一種用向量來存儲資訊的資料庫。

這裡的「向量」其實就是數據對象的數字表示,也叫做「向量嵌入(Vector Embedding)」。

它利用這些向量嵌入的強大功能,能對大量的「非結構化」和「半結構化數據」,例如:比如圖片、文字或感測器數據,進行索引和搜尋。

向量資料庫是專門為了管理這些向量嵌入而設計的,所以它能為管理這類數據提供完整的解決方案。

向量資料庫不同於「向量搜尋庫」或「向量索引」:它是一種數據管理的解決方案,支持元數據的儲存和篩選,還可以擴展,允許動態更改數據,執行備份,並提供各種安全功能

向量資料庫是透過高維向量來組織數據的。

這些高維向量可能包含數百個維度,每個維度對應到它所代表的數據對象的特定特徵或屬性。

什麼是向量嵌入?

向量嵌入就是主題、單字、圖片或其他任何數據的數字表示。

這些向量嵌入,也叫做「嵌入」,是由大型語言模型和其他 AI 模型生成的。

「向量資料庫」或「向量搜尋引擎」可以利用每個向量嵌入之間的距離來判斷它們的相似度。

這個距離可以代表數據對象的幾個維度,讓機器學習和 AI 能夠理解模式、關係和底層結構。

向量資料庫是如何運作的?

向量資料庫的運作方式是使用算法對向量嵌入進行索引和查詢。

這些算法透過哈希(Hash)、量化(Quantization)或基於圖的搜尋來實現近似最近鄰(ANN)搜尋

為了檢索資訊,ANN 搜尋會找到查詢的最近鄰向量。

與 kNN 搜尋(已知最近鄰,或真正的 k 最近鄰算法)相比,近似最近鄰搜尋的計算量較小,但準確性也較低。

不過,這種方法適合高效且大規模地處理高維向量的大型數據集。

向量資料庫的運作流程類似於下圖所示:

索引

向量資料庫透過使用哈希、量化或基於圖的技術,將向量映射到特定的數據結構來為向量建立索引,這樣可以實現更快的搜尋速度。

哈希

哈希算法(例如位置敏感哈希 (LSH) 算法)最適合近似最近鄰搜尋,因為它可以快速得到結果並生成近似結果。

LSH 使用哈希表(想像一下數獨謎題)來映射最近鄰。

查詢會被散列到一個表中,然後與同一表中的一組向量進行比較,以確定相似度。

量化

量化技術(例如乘積量化 (PQ))會將向量分解成較小的部分,並用代碼表示這些部分,然後將這些部分重新組合在一起。

結果是一個向量及其分量的代碼表示,這些代碼的集合稱為碼本。

在查詢時,使用量化的向量資料庫會將查詢分解為代碼,然後將其與碼本進行匹配,以找到最相似的代碼來生成結果。

基於圖的技術

圖算法(例如分層可導航小世界(HNSW)算法)使用節點來表示向量。

它會對節點進行聚類,並在相似節點之間繪製線或邊,從而創建分層圖。

在啟動查詢後,這種算法會在圖的層次結構中導航,以找到包含與查詢向量最相似的向量的節點。

向量資料庫還會為數據對象的元數據建立索引,因此,向量資料庫將包含兩個索引:「向量索引」和「元數據索引」。

查詢

當向量資料庫接收到查詢時,它會將索引向量與查詢向量進行比較,以確定最近鄰向量。

為了建立最近鄰,向量資料庫依賴於稱為相似度度量的數學方法。

目前有不同類型的相似度度量方法:

餘弦相似度

相似度範圍在 -1 到 1 之間。

通過測量向量空間中兩個向量之間的夾角餘弦,它可以確定向量是截然相反(用 -1 表示)、正交(用 0 表示),還是相同(用 1 表示)。

歐氏距離

通過測量向量之間的直線距離來確定 0 到無窮大的相似度。

完全相同的向量用 0 表示,數值越大,表示向量之間的差異越大。

點積相似度

可確定負無窮大到無窮大的向量相似度。

通過測量兩個向量的數量級和它們之間夾角餘弦的乘積,點積為彼此遠離的向量賦予負值,為正交向量賦予 0 值,為指向同一方向的向量賦予正值。

後處理

向量資料庫管道的最後一步有時是後處理或後篩選,在這一步中,向量資料庫將使用不同的相似度度量來對最近鄰進行重新排序。

在這個階段,資料庫將根據查詢的元數據篩選在搜尋中識別的最近鄰。

有些向量資料庫可能會在運行向量搜尋之前應用篩選器,在這種情況下,它稱為預處理或預篩選。

使用向量資料庫的優勢

向量資料庫之所以重要,是因為它們包含向量嵌入,並可以實現一系列功能,例如:索引、距離指標和相似度搜尋

換句話說,向量資料庫是專門為管理非結構化數據半結構化數據而構建的。

因此,向量資料庫是機器學習和 AI 數字領域的重要工具。

向量資料庫的核心組成部分

向量資料庫可能具有以下核心組成部分:

性能和容錯

  • 分片和複製的過程可確保向量資料庫具有「高性能」和「容錯性」。
  • 分片涉及在多個節點上對數據進行分區,而複製則涉及在不同節點上創建多個數據副本。
  • 如果某個節點出現故障,這樣可以啟用容錯功能並確保性能持續穩定。

監測能力

  • 為了確保性能和容錯性,向量資料庫需要監測資源使用情況、查詢性能和整體系統運行狀況。

存取控制功能

可擴展性和可調整性

  • 良好的存取控制功能會影響向量資料庫的「可擴展性」與「可調整性」。
  • 隨著數據存儲量的增加,橫向擴展的能力變得尤為重要。
  • 不同的「插入率」和「查詢率」以及底層硬體的差異都會影響應用程序的需求。

多用戶和數據隔離

  • 在具備「可擴展性」和「存取控制功能」的同時,向量資料庫還應能夠為多用戶或多租戶提供支持。
  • 此外,向量資料庫還應能實現數據隔離,這樣的情況下,除非另有要求,否則任何用戶的活動(如插入、刪除或查詢)對其他用戶而言都是私密的。

備份

  • 向量資料庫會定期創建數據備份。
  • 在系統發生故障時,備份是向量資料庫的一個關鍵組成部分。
  • 在數據丟失或數據損壞的情況下,備份可以幫助將資料庫恢復到以前的狀態,從而最大限度地減少中斷時間。

 API 和 SDK

  • 向量資料庫使用 API 來實現用戶友好的介面,API 是一種應用程序編程接口,允許應用程序通過請求和響應相互「對話」。
  • API 層簡化了向量搜尋體驗,SDK(軟體開發工具包)通常會封裝多個 API,是資料庫用於通信和管理的編程語言。
  • SDK 有助於開發人員方便地使用向量資料庫,因為他們在開發特定用例(語義搜尋、推薦系統等)時不必擔心底層結構。

「向量資料庫」和「傳統資料庫」的區別

傳統資料庫會把資訊存成表格,然後給每個數據點分配一個值來建立索引。

當你發出查詢時,傳統資料庫會返回完全匹配的結果。

向量資料庫則是以嵌入的形式來存儲數據,專門支持向量搜尋

它根據相似度來返回查詢結果,而不是要求完全匹配。

向量資料庫在某些方面比傳統資料庫更強大,因為它的設計就是為了處理向量嵌入。

在一些應用場景中,比如相似性搜尋人工智慧機器學習,向量資料庫比傳統資料庫更合適。

這是因為它支持高維度的搜尋、定制索引,並且具備可擴展性、靈活性和高效性。

向量資料庫的應用

向量資料庫可以用在許多地方,包括 AI機器學習 (ML)自然語言處理 (NLP) 和圖像識別等應用。

AI/ML 應用:向量資料庫能提升 AI 在語義信息檢索和長期記憶方面的能力。

NLP 應用:向量相似度搜尋是向量資料庫的一大亮點,對於自然語言處理來說非常重要,它能處理文本嵌入,讓計算機能夠「理解」人類的語言。

圖像識別和檢索:向量資料庫將圖像轉換為圖像嵌入,透過相似度搜尋,可以找到相似的圖像或識別匹配的圖像。

此外,向量資料庫還可以用於異常檢測和人臉檢測等應用。

如果想了解向量資料庫如何支持 AI 搜尋,可以參加我們歐立威的 Line 好友,學習如何為您的項目打造現代化的搜尋體驗。

向量資料庫的未來趨勢

向量資料庫的未來與人工智慧和機器學習的發展息息相關,還有研究在用深度學習生成更強大的嵌入來處理結構化和非結構化數據。

隨著創建更佳嵌入的能力提升,向量資料庫也需要新的技術和算法來更高效地處理和管理這些嵌入。

實際上,這類新方法一直在不斷演進。

另外,還有一些研究致力於開發混合資料庫,這些資料庫旨在結合傳統關係資料庫和向量資料庫的功能,以滿足對高效和可擴展資料庫日益增長的需求。

適用於 Elasticsearch 的向量資料庫

Elasticsearch 包含一個用於向量搜尋向量資料庫

透過 Elastic,開發人員可以使用 Elasticsearch Relevance Engine(ESRE) 來建立自己的向量搜尋引擎。

使用 Elasticsearch 工具,你可以構建一個向量搜尋引擎,用於搜尋非結構化和結構化數據,應用篩選和分面搜尋,對文本和向量數據進行混合搜尋,並在本地、雲端或混合環境中運行,同時確保文檔和字段級的安全性。

Elasticsearch 的向量資料庫和 Search AI 平台為開發人員提供了全面的混合搜尋功能,並能接入頂級 LLM 供應商的創新成果。

借助 Elastic 的低代碼 Playground,開發人員可以在幾分鐘內使用自己的私有數據快速測試 LLM。

探索更多向量資料庫資源

加入歐立威好友,獲取最新向量資料庫資訊、實用技巧和專家見解,幫助你更有效地運用數據,提升工作效率!

本文翻譯自:What is a vector database?