自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

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

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

2、高性能

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

簡(jiǎn)介

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

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

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

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

純矢量數(shù)據(jù)庫(kù)是專門為存儲(chǔ)和檢索矢量而設(shè)計(jì)的。包括Chroma, LanceDB, Marqo, Milvus/ Zilliz, Pinecone, Qdrant, Vald, Vespa, Weaviate等。數(shù)據(jù)是基于對(duì)象或數(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ù)庫(kù):純矢量數(shù)據(jù)庫(kù)可以存儲(chǔ)矢量和一些元數(shù)據(jù),但是其他就不行了。對(duì)于大多數(shù)用例,可能還需要包括諸如實(shí)體、屬性和層次結(jié)構(gòu)(圖)、位置(地理空間)等描述的數(shù)據(jù),這就要其他存儲(chǔ)的整合。

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

沒有完整的CRUD:純矢量數(shù)據(jù)庫(kù)并不是真正為創(chuàng)建、更新和刪除操作而設(shè)計(jì)的。所以必須首先對(duì)數(shù)據(jù)進(jìn)行矢量化和索引,這些數(shù)據(jù)庫(kù)的重點(diǎn)是獲取向量數(shù)據(jù),并基于向量相似度查詢最近鄰,而索引是很耗時(shí)的。索引矢量數(shù)據(jù)計(jì)算量大、成本高、耗時(shí)長(zhǎng)。這使得基本上無法進(jìn)行實(shí)時(shí)的操作。例如,Pinecone的IMI索引(反向多索引,人工神經(jīng)網(wǎng)絡(luò)的一種變體)會(huì)產(chǎn)生存儲(chǔ)開銷,并且是計(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ù)選擇可能會(huì)影響搜索結(jié)果的質(zhì)量或?qū)е滦实拖隆?/span>

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

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

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

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

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

缺點(diǎn)

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

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

3、開源矢量庫(kù)

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

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

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

缺點(diǎn)

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

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

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

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

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

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

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

缺點(diǎn)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

缺點(diǎn)

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

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

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

總結(jié)

所以,那么如何選擇呢?

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

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

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

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

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

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

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

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


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

2023-12-28 08:00:00

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

2023-10-10 08:36:57

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

2018-09-04 10:57:50

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

2024-01-18 08:00:00

PostgreSQLPgvector

2011-07-04 09:12:53

數(shù)據(jù)庫(kù)采購(gòu)

2020-07-20 08:00:29

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

2019-11-06 09:23:20

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

2011-04-12 13:44:17

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

2019-02-11 09:48:02

2010-08-10 15:02:18

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

2024-11-21 08:00:00

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

2024-07-09 08:27:30

2019-07-08 10:36:34

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

2021-04-27 07:42:35

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

2023-08-01 14:35:00

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

2023-04-27 09:36:43

2023-11-02 08:52:52

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

2023-04-13 08:00:00

人工智能聊天機(jī)器人

2021-01-31 17:50:41

數(shù)據(jù)庫(kù)查詢程序員

2023-11-28 15:02:40

矢量數(shù)據(jù)庫(kù)人工智能
點(diǎn)贊
收藏

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