用品

什麼是矢量數據庫,它們的工作原理和潛在市場

矢量數據庫是一種將數據存儲為高維向量的數據庫,高維向量是特徵或屬性的數學表示。 

這些向量通常是通過對原始數據(例如文本、圖像、音頻、視頻等)應用某種嵌入函數來生成的。

向量資料庫可以是 definite 是一種索引和存儲向量嵌入的工具,用於快速檢索和相似性搜索,具有元數據過濾和水平縮放等功能。

預計閱讀時間: 9 minuti

日益增長的投資者興趣

最近幾週,投資者對矢量數據庫的興趣有所增加。 自 2023 年初以來,我們注意到:

  • 矢量數據庫啟動 編織 他得到了 50 萬美元 B 輪融資;
  • 松果 在 B 輪融資中籌集了 100 億美元,估值為 750 億美元;
  • 濃度 ,一個開源項目,為其嵌入資料庫籌集了 18 萬美元;

讓我們更詳細地了解什麼是矢量數據庫。

向量作為數據表示

矢量數據庫在很大程度上依賴於矢量嵌入,這是一種數據表示形式,其中包含對 AI 理解和維持長期記憶至關重要的語義信息,以便在執行複雜活動時加以利用。 

矢量嵌入

矢量嵌入就像一張地圖,但它們不是向我們展示事物在世界上的位置,而是向我們展示事物在某個叫做 向量空間。 向量空間有點像一個大遊樂場,一切都有它玩耍的地方。 想像一下,你有一群動物:一隻貓、一隻狗、一隻鳥和一條魚。 我們可以通過在操場上給它一個特殊的位置來為每個圖像創建一個矢量嵌入。 貓可能在一個角落,狗在另一邊。 鳥可以在天上,魚可以在池塘里。 這個地方是一個多維空間。 每個維度對應著它們的不同方面,比如魚有鰭,鳥有翅膀,貓狗有腿。 它們的另一個方面可能是魚屬於水,鳥主要屬於天空,而貓和狗則屬於地面。 一旦我們有了這些向量,我們就可以使用數學技術根據它們的相似性對它們進行分組。 根據我們掌握的信息,

因此,向量嵌入就像一張地圖,可以幫助我們找到向量空間中事物之間的相似性。 就像地圖可以幫助我們環遊世界一樣,矢量嵌入可以幫助我們在矢量遊樂場中導航。

關鍵思想是語義相似的嵌入之間的距離更小。 為了找出它們有多相似,我們可以使用向量距離函數,例如歐氏距離、餘弦距離等。

矢量數據庫與矢量庫

矢量庫 將向量的嵌入存儲在內存中的索引中,以便執行相似性搜索。 矢量庫具有以下特徵/限制:

  1. 僅存儲向量 :向量庫只存儲向量的嵌入,而不存儲生成它們的關聯對象。 這意味著當我們查詢時,矢量庫將以相關矢量和對象 ID 進行響應。 這是有限制的,因為實際信息存儲在對像中而不是 id 中。 為了解決這個問題,我們應該將對象存儲在二級存儲中。 然後我們可以使用查詢返回的 ID 並將它們與對象匹配以了解結果。
  2. 索引數據是不可變的 : 矢量庫生成的索引是不可變的。 這意味著一旦我們導入了數據並建立了索引,我們就無法進行任何更改(不能進行新的插入、刪除或更改)。 要更改我們的索引,我們將不得不從頭開始重建它
  3. 限制導入時查詢 : 大多數矢量庫在導入數據時無法查詢。 我們需要先導入所有數據對象。 所以索引是在導入對象之後創建的。 對於需要導入數百萬甚至數十億個對象的應用程序來說,這可能是個問題。

有許多矢量搜索庫可用: Facebook 的 FAISS,惹惱了 通過 Spotify 和 掃描神經網絡 由谷歌。 FAISS 使用聚類方法,Annoy 使用樹,ScanNN 使用向量壓縮。 每個都有性能權衡,我們可以根據我們的應用程序和性能指標進行選擇。

CRUD

矢量數據庫與矢量庫的主要區別在於能夠存檔、更新和刪除數據。 矢量數據庫有 CRUD 支持 完全(創建、讀取、更新和刪除)解決了矢量庫的局限性。

  1. 歸檔載體和對象 :數據庫可以存儲數據對象和向量。 由於兩者都已存儲,我們可以將向量搜索與結構化過濾器結合起來。 過濾器使我們能夠確保最近的鄰居與元數據過濾器匹配。
  2. 可變性 : 作為矢量數據庫完全支持 垃圾, 創建索引後,我們可以輕鬆地添加、刪除或更新索引中的條目。 這在處理不斷變化的數據時特別有用。
  3. 實時搜索 :與矢量庫不同,數據庫允許我們在導入過程中查詢和修改數據。 當我們加載數百萬個對象時,導入的數據仍然是完全可訪問和可操作的,因此您不必等待導入完成就可以開始處理已有的數據。

簡而言之,矢量數據庫通過解決前面討論的自包含矢量索引的局限性,為處理矢量嵌入提供了一個更好的解決方案。

但是是什麼讓矢量數據庫優於傳統數據庫呢?

矢量數據庫與傳統數據庫

傳統數據庫旨在使用關係模型存儲和檢索結構化數據,這意味著它們針對基於數據列和行的查詢進行了優化。 雖然可以在傳統數據庫中存儲向量嵌入,但這些數據庫並未針對向量操作進行優化,無法有效地對大型數據集執行相似性搜索或其他復雜操作。

這是因為傳統數據庫使用基於簡單數據類型(例如字符串或數字)的索引技術。 這些索引技術不適用於矢量數據,矢量數據具有高維性,需要專門的索引技術,如倒排索引或空間樹。

此外,傳統數據庫並非旨在處理通常與矢量嵌入相關的大量非結構化或半結構化數據。 例如,一個圖像或音頻文件可能包含數百萬個數據點,傳統數據庫無法有效處理這些數據點。

另一方面,矢量數據庫專為存儲和檢索矢量數據而設計,並針對大型數據集上的相似性搜索和其他復雜操作進行了優化。 他們使用專為處理高維數據而設計的索引技術和算法,使它們比傳統數據庫更有效地存儲和檢索矢量嵌入。

現在您已經閱讀了很多關於矢量數據庫的內容,您可能想知道,它們是如何工作的? 讓我們來看看。

矢量數據庫如何工作?

我們都知道關係數據庫的工作原理:它們在行和列中存儲字符串、數字和其他類型的標量數據。 另一方面,矢量數據庫對矢量進行操作,因此其優化和查詢方式大不相同。

在傳統數據庫中,我們通常查詢數據庫中的行,其中的值通常與我們的查詢完全匹配。 在向量數據庫中,我們應用相似性度量來找到與我們的查詢最相似的向量。

矢量數據庫結合了幾種算法,這些算法都參與最近鄰搜索 (ANN)。 這些算法通過散列、量化或基於圖形的搜索來優化搜索。

這些算法被組裝成一個管道,可以快速準確地檢索查詢向量的鄰居。 由於向量數據庫提供了近似結果,我們考慮的主要權衡是在準確性和速度之間。 結果越精確,查詢就越慢。 然而,一個好的系統可以提供超快速的搜索和近乎完美的準確性。

  • 索引 :矢量數據庫使用 PQ、LSH 或 HNSW 等算法對矢量進行索引。 此步驟將向量與數據結構相關聯,從而加快搜索速度。
  • 詢問 :向量數據庫將索引查詢向量與數據集中的索引向量進行比較,以找到最近的鄰居(應用該索引使用的相似性度量)
  • 後期處理 :在某些情況下,矢量數據庫會從數據集中獲取最終的最近鄰,並對它們進行後處理以返回最終結果。 此步驟可能包括使用不同的相似性度量對最近的鄰居進行重新分類。

優點

矢量數據庫是對大型數據集進行相似性搜索和其他復雜操作的強大工具,而傳統數據庫無法有效執行這些操作。 要構建功能向量數據庫,嵌入是必不可少的,因為它們捕獲數據的語義並實現準確的相似性搜索。 與矢量庫不同,矢量數據庫旨在適應我們的用例,使其成為性能和可擴展性至關重要的應用程序的理想選擇。 隨著機器學習和人工智能的興起,矢量數據庫對於包括推薦系統、圖像搜索、語義相似性在內的廣泛應用變得越來越重要,而且這個例子不勝枚舉。 隨著該領域的不斷發展,我們可以期待在未來看到更多矢量數據庫的創新應用。

Ercole Palmeri

創新通訊
不要錯過有關創新的最重要新聞。 註冊以通過電子郵件接收它們。

最近的文章

出版商與 OpenAI 簽署協議以規範人工智慧處理的資訊流

上週一,英國《金融時報》宣布與 OpenAI 達成協議。英國《金融時報》授予其世界級新聞報道許可…

30月2024

線上支付:串流服務如何讓您永遠付款

數百萬人為串流媒體服務付費,每月支付訂閱費用。人們普遍認為您...

29月2024

Veeam 為勒索軟體提供最全面的支持,從保護到回應和恢復

Veeam 的 Coveware 將繼續提供網路勒索事件回應服務。 Coveware 將提供取證和修復功能…

23月2024

綠色與數位革命:預測性維護如何改變石油和天然氣產業

預測性維護正在透過創新和主動的工廠管理方法徹底改變石油和天然氣行業。

22月2024