偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

矢量數(shù)據(jù)庫對比和選擇指南

數(shù)據(jù)庫
矢量數(shù)據(jù)庫是為實(shí)現(xiàn)高維矢量數(shù)據(jù)的高效存儲、檢索和相似性搜索而設(shè)計(jì)的。使用一種稱為嵌入的過程,將向量數(shù)據(jù)表示為一個連續(xù)的、有意義的高維向量。

矢量數(shù)據(jù)庫是為實(shí)現(xiàn)高維矢量數(shù)據(jù)的高效存儲、檢索和相似性搜索而設(shè)計(jì)的。使用一種稱為嵌入的過程,將向量數(shù)據(jù)表示為一個連續(xù)的、有意義的高維向量。

本文將研究存儲/檢索向量數(shù)據(jù)和執(zhí)行相似性搜索的實(shí)用方法,在我們深入研究之前,首先先介紹矢量數(shù)據(jù)庫的兩個關(guān)鍵功能:

1、執(zhí)行搜索的能力

當(dāng)給定查詢向量時,向量數(shù)據(jù)庫可以根據(jù)指定的相似度度量(如余弦相似度或歐幾里得距離)檢索最相似的向量。這允許應(yīng)用程序根據(jù)它們與給定查詢的相似性來查找相關(guān)項(xiàng)或數(shù)據(jù)點(diǎn)。

2、高性能

矢量數(shù)據(jù)庫通常使用索引技術(shù),比如近似最近鄰(ANN)算法來加速搜索過程。這些索引方法旨在降低在高維向量空間中搜索的計(jì)算復(fù)雜度,而傳統(tǒng)的方法如空間分解由于高維而變得不切實(shí)際。

簡介

矢量數(shù)據(jù)庫領(lǐng)域現(xiàn)在正在急速的擴(kuò)展,如何權(quán)衡選擇呢,這里我整理了5個主要的方向:

  • 像Pinecone這樣的純矢量數(shù)據(jù)庫,比如Pinecone也是建立在下面的Faiss之上的
  • 全文搜索數(shù)據(jù)庫,如ElasticSearch,以前是作為搜索引擎現(xiàn)在增加了矢量存儲和檢索的功能
  • 矢量庫,如Faiss, Annoy和Hnswlib,還不能作為數(shù)據(jù)庫,只是矢量的處理
  • 支持矢量的NoSQL數(shù)據(jù)庫,如MongoDB、Cosmos DB和Cassandra,都是老牌的數(shù)據(jù)存儲,但是加入了矢量的功能
  • 支持矢量的SQL數(shù)據(jù)庫,如SingleStoreDB或PostgreSQL,與上面不同的是這些數(shù)據(jù)庫支持SQL語句

除了上面提到的五種主要方法外,還有如Vertex AI和Databricks,它們的功能超越了數(shù)據(jù)庫,我們不進(jìn)行討論。

1、純矢量數(shù)據(jù)庫

純矢量數(shù)據(jù)庫是專門為存儲和檢索矢量而設(shè)計(jì)的。包括Chroma, LanceDB, Marqo, Milvus/ Zilliz, Pinecone, Qdrant, Vald, Vespa, Weaviate等。數(shù)據(jù)是基于對象或數(shù)據(jù)點(diǎn)的向量表示來組織和索引。這些向量可以是各種類型數(shù)據(jù)的數(shù)字表示,包括圖像、文本文檔、音頻文件或任何其他形式的結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。

優(yōu)點(diǎn)

  • 利用索引技術(shù)進(jìn)行高效的相似度搜索
  • 大型數(shù)據(jù)集和高查詢工作負(fù)載的可伸縮性
  • 支持高維數(shù)據(jù)
  • 支持基于HTTP和json的api
  • 原生支持向量運(yùn)算,包括加法,減法,點(diǎn)積,余弦相似度

缺點(diǎn)

純矢量數(shù)據(jù)庫:純矢量數(shù)據(jù)庫可以存儲矢量和一些元數(shù)據(jù),但是其他就不行了。對于大多數(shù)用例,可能還需要包括諸如實(shí)體、屬性和層次結(jié)構(gòu)(圖)、位置(地理空間)等描述的數(shù)據(jù),這就要其他存儲的整合。

有限或沒有SQL支持:純矢量數(shù)據(jù)庫通常使用自己的查詢語言,這使得很難對矢量和相關(guān)信息運(yùn)行傳統(tǒng)的分析,也很難將矢量和其他數(shù)據(jù)類型結(jié)合起來。

沒有完整的CRUD:純矢量數(shù)據(jù)庫并不是真正為創(chuàng)建、更新和刪除操作而設(shè)計(jì)的。所以必須首先對數(shù)據(jù)進(jìn)行矢量化和索引,這些數(shù)據(jù)庫的重點(diǎn)是獲取向量數(shù)據(jù),并基于向量相似度查詢最近鄰,而索引是很耗時的。索引矢量數(shù)據(jù)計(jì)算量大、成本高、耗時長。這使得基本上無法進(jìn)行實(shí)時的操作。例如,Pinecone的IMI索引(反向多索引,人工神經(jīng)網(wǎng)絡(luò)的一種變體)會產(chǎn)生存儲開銷,并且是計(jì)算密集型。它主要是為靜態(tài)或半靜態(tài)數(shù)據(jù)集設(shè)計(jì)的,如果經(jīng)常添加、修改或刪除向量,基本上不太可能。而Milvus使用的索引被稱為產(chǎn)品量化和分層可導(dǎo)航小世界(HNSW),這是一種近似的技術(shù),在搜索準(zhǔn)確性和效率之間進(jìn)行權(quán)衡。它的索引需要配置各種參數(shù),使用不正確的參數(shù)選擇可能會影響搜索結(jié)果的質(zhì)量或?qū)е滦实拖隆?/span>

功能性不強(qiáng):許多矢量數(shù)據(jù)庫在基本特性上嚴(yán)重落后,包括ACID事務(wù)、災(zāi)難恢復(fù)、RBAC、元數(shù)據(jù)過濾、數(shù)據(jù)庫可管理性、可觀察性等。這可能會導(dǎo)致嚴(yán)重的業(yè)務(wù)問題,要解決這些問題,則需要我們自己來處理了這會導(dǎo)致開發(fā)量大增。

2、全文檢索數(shù)據(jù)庫

這類數(shù)據(jù)庫包括Elastic/Lucene、OpenSearch和Solr。

優(yōu)點(diǎn)

  • 高可伸縮性和性能,特別是對于非結(jié)構(gòu)化文本文檔
  • 豐富的文本檢索功能,如內(nèi)置的外語支持,可定制的標(biāo)記器,詞干器,停止列表和N-grams
  • 大部分基于開源庫(Apache Lucene)
  • 成熟的且有大型集成生態(tài)系統(tǒng),包括矢量庫

缺點(diǎn)

  • 沒有優(yōu)化向量搜索或相似匹配
  • 主要設(shè)計(jì)用于全文搜索,而不是語義搜索,因此基于它構(gòu)建的應(yīng)用程序?qū)⒉痪哂袡z索增強(qiáng)生成(RAG)和其他的完整上下文。為了實(shí)現(xiàn)語義搜索功能,這些數(shù)據(jù)庫需要使用其他工具以及大量自定義評分和相關(guān)模型進(jìn)行增強(qiáng)。
  • 其他數(shù)據(jù)格式(圖像、音頻、視頻)的有限應(yīng)用
  • 基本上不支持GPU

一般選擇這些庫的原因都是因?yàn)樵谝郧绊?xiàng)目上增加新的功能,并且數(shù)據(jù)量小,對主業(yè)務(wù)也不會產(chǎn)生多大影響時使用。如果需要重新構(gòu)架大型項(xiàng)目,不建議使用。

3、開源矢量庫

對于許多開發(fā)者來說,F(xiàn)aiss、Annoy和Hnswlib等開源矢量庫是一個很好的起點(diǎn)。Faiss是一個用于密集向量相似性搜索和聚類的庫。Annoy (Approximate Nearest Neighbors Oh Yeah)是一個用于人工神經(jīng)網(wǎng)絡(luò)搜索的輕量級庫。Hnswlib是一個實(shí)現(xiàn)HNSW ANN搜索算法的庫。

優(yōu)點(diǎn)

  • 快速近鄰搜索
  • 為高維構(gòu)建
  • 支持面向人工神經(jīng)網(wǎng)絡(luò)的索引結(jié)構(gòu),包括倒排文件,產(chǎn)品量化和隨機(jī)投影
  • 支持推薦系統(tǒng)、圖像搜索和自然語言處理的用例
  • SIMD(單指令,多數(shù)據(jù))和GPU支持,加快向量相似度搜索操作

缺點(diǎn)

  • 維護(hù)和集成麻煩
  • 與精確方法相比,可能會犧牲搜索準(zhǔn)確性
  • 需要自己部署和維護(hù):需要你構(gòu)建和維護(hù)復(fù)雜的基礎(chǔ)設(shè)施,為應(yīng)用程序需求提供足夠的CPU、GPU和內(nèi)存資源。
  • 對元數(shù)據(jù)過濾、SQL、CRUD操作、事務(wù)、高可用性、災(zāi)難恢復(fù)以及備份和還原的支持有限或不支持

他們之所以稱為庫(或者包)而不是數(shù)據(jù)庫是因?yàn)樗鼈冎惶峁┝撕苌俚牡菂s非常專業(yè)功能,如果你想入門學(xué)習(xí)或者做一個簡單的demo,它們都是很好開始,但不建議直接應(yīng)用到生產(chǎn)中。

4、支持矢量的NoSQL數(shù)據(jù)庫

這些數(shù)據(jù)庫包括:NoSQL數(shù)據(jù)庫,如MongoDB, Cassandra/ DataStax Astra, CosmosDB和Rockset。還有像像Redis這樣的鍵值數(shù)據(jù)庫和其他特殊用途的數(shù)據(jù)庫,如Neo4j(圖數(shù)據(jù)庫)

幾乎所有這些NoSQL數(shù)據(jù)庫都是最近才添加矢量搜索擴(kuò)展而具備矢量能力的,所以如果要是用的話一定要做好測試。

優(yōu)點(diǎn)

對于特定的數(shù)據(jù)模型,NoSQL數(shù)據(jù)庫提供了高性能和可擴(kuò)展性。Neo4j可以與llm一起用于社交網(wǎng)絡(luò)或知識圖譜。一個具有矢量能力的時間序列數(shù)據(jù)庫(如kdb)可能能夠?qū)⑹噶繑?shù)據(jù)與金融市場數(shù)據(jù)結(jié)合起來。

缺點(diǎn)

NoSQL數(shù)據(jù)庫的矢量功能是基本的/新生的/未經(jīng)測試的。今年,許多NoSQL數(shù)據(jù)庫添加了向量支持。比如:

今年5月,Cassandra宣布了增加矢量搜索的計(jì)劃。

4月,Rockset宣布支持基本矢量搜索,

5月Azure Cosmos DB宣布支持MongoDB vCore的矢量搜索。

DataStax和MongoDB在本月(6月)宣布了矢量搜索功能(都是預(yù)覽版)!

NoSQL數(shù)據(jù)庫的矢量搜索性能可能差別很大,這取決于所支持的矢量函數(shù)、索引方法和硬件加速。而且NoSQL數(shù)據(jù)庫的查詢效率本來就不高,再加上矢量的功能,一定不會快。

我的觀點(diǎn)一直沒有變,那就是如果復(fù)雜數(shù)據(jù)一定要存到關(guān)系型數(shù)據(jù)庫中,像MongoDB這樣的當(dāng)作輔助存儲是沒問題,但當(dāng)作主要存儲和主要查詢那是所謂的自稱為“全?!钡那岸烁沙鰜淼氖?,因?yàn)槭裁炊疾欢?,所以覺得什么都簡單。

5、支持矢量的SQL數(shù)據(jù)庫

這些庫與上面的類似,但是它們基本都是關(guān)系型數(shù)據(jù)庫并且支持sql查詢,例如SingleStoreDB, PostgreSQL, Clickhouse和Kinetica的pgvector/Supabase Vector(測試版)。

在一個已建立的數(shù)據(jù)庫中添加基本的矢量功能并不是一件難事。比如矢量數(shù)據(jù)庫Chroma就是來自ClickHouse

優(yōu)點(diǎn)

包含矢量搜索功能,如點(diǎn)積,余弦相似度,歐幾里得距離和曼哈頓距離。

使用相似度分?jǐn)?shù)找到k個最近鄰

多模型SQL數(shù)據(jù)庫提供混合查詢,并且可以將向量與其他數(shù)據(jù)結(jié)合起來以獲得更有意義的結(jié)果

大多數(shù)SQL數(shù)據(jù)庫都可以作為服務(wù)部署,可以在云上進(jìn)行完全管理。

缺點(diǎn)

SQL數(shù)據(jù)庫是為結(jié)構(gòu)化數(shù)據(jù)而設(shè)計(jì)的。而矢量是非結(jié)構(gòu)化數(shù)據(jù),如圖像、音頻和文本。雖然關(guān)系數(shù)據(jù)庫通??梢源鎯ξ谋竞蚥lob,但大多數(shù)數(shù)據(jù)庫不會將這些非結(jié)構(gòu)化數(shù)據(jù)矢量化以用于機(jī)器學(xué)習(xí)。

大多數(shù)SQL數(shù)據(jù)庫(還)沒有針對向量搜索進(jìn)行優(yōu)化。關(guān)系數(shù)據(jù)庫的索引和查詢機(jī)制主要是為結(jié)構(gòu)化數(shù)據(jù)設(shè)計(jì)的,而不是為高維矢量數(shù)據(jù)設(shè)計(jì)的。雖然用于向量數(shù)據(jù)處理的SQL數(shù)據(jù)庫的性能可能不是特別好,但支持向量的SQL數(shù)據(jù)庫可能會添加擴(kuò)展或新功能來支持向量搜索。

傳統(tǒng)的SQL數(shù)據(jù)庫不能向外擴(kuò)展,它們的性能會隨著數(shù)據(jù)的增長而下降。使用SQL數(shù)據(jù)庫處理高維向量的大型數(shù)據(jù)集可能需要進(jìn)行額外的優(yōu)化,比如對數(shù)據(jù)進(jìn)行分區(qū)或使用專門的索引技術(shù)來保持高效的查詢性能。

總結(jié)

所以,那么如何選擇呢?

1、如果入門或者demo的話可以直接使用開源的矢量庫,比如Faiss可以支持本地的億級數(shù)據(jù),但是無法提供對外服務(wù)。

2、對于產(chǎn)品,如果要開發(fā)新的功能并且上線,那就要將矢量存儲和現(xiàn)有的存儲分開,專業(yè)的人做專業(yè)的事,可選擇純矢量數(shù)據(jù)庫或開源矢量庫自行開發(fā)(如果功能簡單的話),保證系統(tǒng)的穩(wěn)定性。

3、如果非要在現(xiàn)有系統(tǒng)上使用矢量功能,比如Elastic、MongoDB 上存儲和檢索大量的矢量數(shù)據(jù),那么一定要做好測試,并且自求多福吧,沒準(zhǔn)你遇到的問題不僅chatgpt不知道,stackoverflow上也沒有。

4、現(xiàn)在矢量存儲還是再發(fā)展階段,所以有些功能還不完善,所以盡量使用成熟版本,對于生產(chǎn)環(huán)境不要冒險嘗鮮。

最后說說架構(gòu)的建議:

微服務(wù)架構(gòu)是一種軟件架構(gòu)風(fēng)格,其中應(yīng)用程序被拆分為一組小型、獨(dú)立的服務(wù),每個服務(wù)都專注于提供特定的業(yè)務(wù)功能,每個微服務(wù)都應(yīng)該專注于解決一個具體的業(yè)務(wù)問題或提供一項(xiàng)特定的功能。這種精細(xì)化的劃分使得每個微服務(wù)可以根據(jù)需要進(jìn)行獨(dú)立的擴(kuò)展、部署和維護(hù)。

矢量搜索也不例外應(yīng)該獨(dú)立成單獨(dú)的服務(wù),服務(wù)都獨(dú)立了存儲不是也應(yīng)該獨(dú)立嗎。

當(dāng)然如果非要把矢量存儲和業(yè)務(wù)數(shù)據(jù)放在一起也可以,我沒有任何意見,反正出問題又不是我來解決,我就看個熱鬧就行了??


責(zé)任編輯:華軒 來源: DeepHub IMBA
相關(guān)推薦

2023-12-28 08:00:00

數(shù)據(jù)庫人工智能

2023-10-10 08:36:57

數(shù)據(jù)庫MyISMInnoDB

2024-01-18 08:00:00

PostgreSQLPgvector

2018-09-04 10:57:50

MySQLMariaDB數(shù)據(jù)庫

2011-07-04 09:12:53

數(shù)據(jù)庫采購

2020-07-20 08:00:29

數(shù)據(jù)庫

2019-11-06 09:23:20

數(shù)據(jù)庫配置網(wǎng)絡(luò)

2011-04-12 13:44:17

CachéOracle數(shù)據(jù)庫

2019-02-11 09:48:02

2010-08-10 15:02:18

Oracle認(rèn)證數(shù)據(jù)庫

2024-11-21 08:00:00

矢量數(shù)據(jù)庫人工智能

2024-07-09 08:27:30

2021-04-27 07:42:35

數(shù)據(jù)庫MySQLSQLServer

2019-07-08 10:36:34

數(shù)據(jù)庫WebNoSQL

2023-08-01 14:35:00

關(guān)系數(shù)據(jù)庫排列

2023-04-27 09:36:43

2023-11-02 08:52:52

數(shù)據(jù)庫實(shí)踐

2023-11-28 15:02:40

矢量數(shù)據(jù)庫人工智能

2015-10-22 10:44:50

2021-01-31 17:50:41

數(shù)據(jù)庫查詢程序員
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號