小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

解讀向量數(shù)據(jù)庫

 DuerOS布道師 2023-11-26 發(fā)布于北京

不論是RAG,還是Agent,幾乎每個(gè)LLM 驅(qū)動(dòng)的應(yīng)用程序都可能會(huì)用到向量數(shù)據(jù)庫。那么,向量數(shù)據(jù)庫是什么?與傳統(tǒng)數(shù)據(jù)庫有何不同? 如何選擇向量數(shù)據(jù)庫呢? 本文是老碼農(nóng)關(guān)于向量數(shù)據(jù)庫的學(xué)習(xí)筆記。

1. 什么是向量數(shù)據(jù)庫?

首先,我們需要理解什么是向量?

向量是基于不同特征或?qū)傩詠砻枋鰧ο蟮臄?shù)據(jù)表示。每個(gè)向量代表一個(gè)單獨(dú)的數(shù)據(jù)點(diǎn),例如一個(gè)詞或一張圖片,由描述其許多特性的值的集合組成。這些變量有時(shí)被稱為“特征”或“維度”。例如,一張圖片可以表示為像素值的向量,整個(gè)句子也可以表示為單詞嵌入的向量。

一些常用的數(shù)據(jù)向量如下:

  • 圖像向量,通過深度學(xué)習(xí)模型提取的圖像特征向量,這些特征向量捕捉了圖像的重要信息,如顏色、形狀、紋理等,可以用于圖像識別、檢索等任務(wù);

  • 文本向量,通過詞嵌入技術(shù)如Word2Vec、BERT等生成的文本特征向量,這些向量包含了文本的語義信息,可以用于文本分類、情感分析等任務(wù);

  • 語音向量,通過聲學(xué)模型從聲音信號中提取的特征向量,這些向量捕捉了聲音的重要特性,如音調(diào)、節(jié)奏、音色等,可以用于語音識別、聲紋識別等任務(wù)。

向量數(shù)據(jù)庫是一種將數(shù)據(jù)存儲(chǔ)為高維向量的數(shù)據(jù)庫,高維向量是特征或?qū)傩缘臄?shù)學(xué)表示。每個(gè)向量都有一定數(shù)量的維度,根據(jù)數(shù)據(jù)的復(fù)雜性和粒度,維度可以從幾十到幾千不等。向量通常是通過對原始數(shù)據(jù)(如文本、圖像、音頻、視頻等)應(yīng)用某種變換或嵌入函數(shù)來生成的。嵌入函數(shù)可以基于各種方法,例如機(jī)器學(xué)習(xí)模型、單詞嵌入、特征提取算法。向量數(shù)據(jù)庫采用索引策略來簡化向量相似的特定查詢。這在機(jī)器學(xué)習(xí)應(yīng)用程序中特別有用,因?yàn)橄嗨菩运阉鹘?jīng)常用于發(fā)現(xiàn)可比較的數(shù)據(jù)點(diǎn)或生成建議。

向量數(shù)據(jù)庫的主要功能包括:

  • 管理:向量數(shù)據(jù)庫以原始數(shù)據(jù)形式處理數(shù)據(jù),能夠有效地組織和管理數(shù)據(jù),便于AI模型應(yīng)用。

  • 存儲(chǔ):能夠存儲(chǔ)向量數(shù)據(jù),包括各種AI模型需要使用到的高維數(shù)據(jù)。

  • 檢索:向量數(shù)據(jù)庫特別擅長高效地檢索數(shù)據(jù),這一個(gè)特點(diǎn)能夠確保AI模型在需要的時(shí)候快速獲得所需的數(shù)據(jù)。這也是向量數(shù)據(jù)庫能夠在一些推薦系統(tǒng)或者檢索系統(tǒng)中得到應(yīng)用的重要原因。

向量數(shù)據(jù)庫的主要優(yōu)點(diǎn)是,它允許基于數(shù)據(jù)的向量距離或相似性進(jìn)行快速準(zhǔn)確的相似性搜索和檢索。這意味著,可以使用向量數(shù)據(jù)庫,根據(jù)其語義或上下文含義查找最相似或最相關(guān)的數(shù)據(jù),而不是使用基于精確匹配或預(yù)定義標(biāo)準(zhǔn)查詢數(shù)據(jù)庫的傳統(tǒng)方法。向量數(shù)據(jù)庫可以搜索非結(jié)構(gòu)化數(shù)據(jù),但也可以處理半結(jié)構(gòu)化甚至結(jié)構(gòu)化數(shù)據(jù)。例如,可以使用向量數(shù)據(jù)庫執(zhí)行以下操作,根據(jù)視覺內(nèi)容和風(fēng)格查找與給定圖像相似的圖像,根據(jù)主題和情感查找與給定文檔相似的文檔,以及根據(jù)功能和評級查找與給定產(chǎn)品相似的產(chǎn)品。

2. 向量數(shù)據(jù)庫的工作機(jī)理

向量數(shù)據(jù)庫的構(gòu)建是為了適應(yīng)向量嵌入的特定結(jié)構(gòu),并且它們使用索引算法根據(jù)向量與查詢向量的相似性來有效地搜索和檢索向量。

向量數(shù)據(jù)庫的工作原理可以通過CPU和GPU的工作原理進(jìn)行類比。CPU和GPU分別是計(jì)算機(jī)的運(yùn)算和圖形處理核心,而向量數(shù)據(jù)庫則是大模型的記憶和存儲(chǔ)核心。在大模型學(xué)習(xí)階段,向量數(shù)據(jù)庫接收多模態(tài)數(shù)據(jù)進(jìn)行向量化表示,讓大模型在訓(xùn)練時(shí)能夠更高效地調(diào)用和處理數(shù)據(jù)。通過多線程機(jī)制和矩陣運(yùn)算,GPU提供了強(qiáng)大的計(jì)算能力,讓大模型的訓(xùn)練變得更加快速和高效。

區(qū)別于傳統(tǒng)數(shù)據(jù)庫,向量數(shù)據(jù)庫主要有三點(diǎn)不同:數(shù)據(jù)向量化,向量檢索和相似度計(jì)算。數(shù)據(jù)的向量化采用embedding 技術(shù), 嵌入作為一個(gè)橋梁,將非數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換為機(jī)器學(xué)習(xí)模型可以使用的形式,使它們能夠更有效地識別數(shù)據(jù)中的模式和關(guān)系。一般的,文本是一維向量,圖像是二維矩陣,視頻相當(dāng)于三維矩陣。這些嵌入實(shí)質(zhì)上是存儲(chǔ)數(shù)據(jù)的上下文表示的數(shù)字列表(即向量)。在存儲(chǔ)層內(nèi),數(shù)據(jù)庫以m個(gè)向量堆棧的形式存儲(chǔ),每個(gè)向量使用n個(gè)維度表示一個(gè)數(shù)據(jù)點(diǎn),總大小為m×n。為了查詢性能的原因,這些堆棧通常通過分片進(jìn)行劃分。

向量檢索是輸入一個(gè)向量,從數(shù)據(jù)庫中查找與輸入向量最相似的topN個(gè)向量返回。要在向量數(shù)據(jù)庫中執(zhí)行相似性搜索和檢索,需要使用表示所需信息或條件的查詢向量。查詢向量可以從與存儲(chǔ)向量相同類型的數(shù)據(jù)導(dǎo)出,或者從不同類型的數(shù)據(jù)導(dǎo)出。使用相似性度量來計(jì)算兩個(gè)向量在向量空間中的距離。相似性度量可以基于各種度量,如余弦相似性、歐氏距離、向量內(nèi)積,hamming距離、jaccard指數(shù)。

其中,向量檢索算法是向量數(shù)據(jù)庫的核心之一。向量檢索可以看為是近似最近鄰搜索,通過預(yù)先的索引構(gòu)建來減小數(shù)據(jù)查詢時(shí)的搜索空間,加快檢索速度。目前主要的幾種檢索算法有:

  • 基于樹的方法,例如KDTree和Annoy

  • 基于圖的方法,例如HNSW

  • 基于乘積量化的方法,例如SQ和PQ

  • 基于哈希的方法,例如LSH

  • 基于倒排索引的方法

向量數(shù)據(jù)庫中的索引可以按照數(shù)據(jù)結(jié)構(gòu)和壓縮級別兩個(gè)層次進(jìn)行組織實(shí)現(xiàn)。根據(jù)數(shù)據(jù)結(jié)構(gòu)建立索引的分類如下:

根據(jù)數(shù)據(jù)壓縮方式建立索引, 主要包括平坦壓縮和量化壓縮。平坦壓縮是指以未經(jīng)修改的形式存儲(chǔ)向量的索引,量化中索引的底層向量被分解成由較少字節(jié)組成的塊(通常通過將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù))以減少內(nèi)存消耗和搜索過程中的計(jì)算成本。

相似性搜索和檢索的結(jié)果通常是與查詢向量具有最高相似性得分的向量的排序列表。然后,您可以訪問與原始源或索引中的每個(gè)向量關(guān)聯(lián)的相應(yīng)原始數(shù)據(jù)。

3. 向量數(shù)據(jù)庫的分類

根據(jù)向量數(shù)據(jù)庫的的實(shí)現(xiàn)方式, 我們可以將向量數(shù)據(jù)庫大致分為4類:原生的向量數(shù)據(jù)庫、支持向量的全文檢索數(shù)據(jù)庫、支持向量的NoSQL數(shù)據(jù)庫和支持向量的關(guān)系型數(shù)據(jù)庫。

3.1 原生的向量數(shù)據(jù)庫

原生的向量數(shù)據(jù)庫是專門為存儲(chǔ)和檢索向量而設(shè)計(jì)的。包括Chroma, LanceDB, Marqo, Milvus/ Zilliz, Pinecone, Qdrant, Vald, Vespa, Weaviate等, 所管理的數(shù)據(jù)是基于對象或數(shù)據(jù)點(diǎn)的向量表示進(jìn)行組織和索引。這里只介紹其中的三種,具體信息可以參考各自的官網(wǎng)。

Faiss

Faiss是一個(gè)用于高效相似性搜索和密集向量聚類的開源庫。Faiss是用C++編寫的,帶有完整的Python/numpy包裝器,一些常用算法都有GPU實(shí)現(xiàn),成為了很多開源向量數(shù)據(jù)庫的基礎(chǔ)。

Faiss能構(gòu)建不同的索引類型,并提供了歐式距離或者點(diǎn)積的相似度計(jì)算功能,有些索引類型是簡單的基線,例如精確搜索。大多數(shù)可用的索引結(jié)構(gòu)需要考慮搜索時(shí)間,搜索質(zhì)量,每個(gè)索引向量使用的內(nèi)存等。

Faiss支持多種向量搜索技術(shù),提供了能夠在不同大小的向量集中搜索的算法,甚至可以處理那些超過內(nèi)存容量的向量集。

Faiss的主要優(yōu)勢之一是速度和可擴(kuò)展性,即使在具有數(shù)十億個(gè)向量的數(shù)據(jù)集中也可以進(jìn)行快速搜索。此外,還提供了用于評估和調(diào)整參數(shù)的輔助代碼。

Pinecone

Pinecone是一個(gè)基于云的向量數(shù)據(jù)庫,可以開發(fā)實(shí)時(shí)相似性搜索應(yīng)用,能夠以毫秒級的延遲存儲(chǔ)和探索高維向量嵌入,適用于推薦系統(tǒng)、圖片和視頻搜索以及自然語言處理等應(yīng)用。

Pinecone 的主要功能包括自動(dòng)索引、實(shí)時(shí)更新、查詢自動(dòng)調(diào)整和用于與當(dāng)前流程進(jìn)行簡單交互的 REST API。其架構(gòu)專為可擴(kuò)展性和穩(wěn)健性而構(gòu)建,可以輕松管理海量數(shù)據(jù),同時(shí)保持高可用性。

Pinecone是一個(gè)可以托管的向量數(shù)據(jù)庫平臺(tái),也就是說有商用方案,也有免費(fèi)使用方案。其主要特點(diǎn)包括:

  • 支持全托管服務(wù)

  • 高度可伸縮

  • 實(shí)時(shí)數(shù)據(jù)攝取

  • 低延遲的搜索

  • 與LangChain集成

Pinecone 采用了多種安全措施來保護(hù)用戶的數(shù)據(jù)安全和隱私。多層次的訪問控制機(jī)制可以控制用戶的訪問權(quán)限和操作權(quán)限,同時(shí)采用了數(shù)據(jù)加密、傳輸加密等技術(shù)來保護(hù)數(shù)據(jù)的安全性,還提供了數(shù)據(jù)備份和恢復(fù)等功能,可以防止數(shù)據(jù)丟失和損壞。

Pinecone 在性能方面表現(xiàn)非常出色,它能夠支持高達(dá) 1 百萬次的QPS,且具有低延遲和高吞吐量的特點(diǎn),還具有分布式部署、實(shí)時(shí)索引構(gòu)建和高效的向量相似度搜索等優(yōu)點(diǎn),可以幫助用戶快速處理大規(guī)模的向量數(shù)據(jù)。

此外,Pinecone 還支持多種編程語言和框架,如 Python、Java、TensorFlow 等,使得用戶可以輕松地將其集成到自己的應(yīng)用程序中。

Milvus

Milvus是一個(gè)開源的分布式向量數(shù)據(jù)庫,它具備高可用、高性能、易拓展的特點(diǎn),用于海量向量數(shù)據(jù)的實(shí)時(shí)召回。

Milvus 基于 Faiss、Annoy、HNSW 等向量搜索庫構(gòu)建,可以輕松管理數(shù)百萬個(gè)實(shí)體,可以根據(jù)不同的數(shù)據(jù)特點(diǎn)選擇最合適的索引算法,核心是解決稠密向量相似度檢索的問題。在向量檢索的基礎(chǔ)上,Milvus 支持?jǐn)?shù)據(jù)分區(qū)分片、數(shù)據(jù)持久化、增量數(shù)據(jù)攝取、標(biāo)量向量混合查詢、time travel 等功能,同時(shí)大幅優(yōu)化了向量檢索的性能,可滿足任何向量檢索場景的應(yīng)用需求。

Milvus 還具有分布式部署、高可用性和高擴(kuò)展性等優(yōu)點(diǎn),可以幫助用戶快速處理海量的向量數(shù)據(jù)。它也提供了多種安全措施來保護(hù)用戶的數(shù)據(jù)安全和隱私,支持 SSL/TLS 加密和訪問控制等技術(shù),可以防止數(shù)據(jù)被非法訪問和竊取,還提供了數(shù)據(jù)備份和恢復(fù)等功能,可以保護(hù)數(shù)據(jù)的完整性和可用性。

此外,Milvus 還提供了多種客戶端 SDK,如 Python、Java、C++ 等,使得用戶可以方便地使用不同的編程語言來訪問和操作 Milvus。

3.2 支持向量的全文檢索數(shù)據(jù)庫

這類數(shù)據(jù)庫包括Elastic/Lucene、OpenSearch和Solr。它們都具有豐富的文本檢索功能,如可定制的標(biāo)記器,分詞器,停用詞列表和N-grams等,大部分都基于開源庫,且有大型集成的生態(tài)系統(tǒng),包括了向量庫。

例如,Elasticsearch,是一個(gè)支持各種類型數(shù)據(jù)的分布式搜索和分析引擎。Elasticsearch在7.3 版本中,添加了對向量數(shù)據(jù)索引的支持,支持混合查詢,但是向量檢索采用的仍然是暴力計(jì)算,性能損耗較大。在8.0版本引入了knn search其實(shí)就是一種近似最近鄰搜索算法,相似度支持歐式距離,點(diǎn)積和余弦相似性,knn search底層其實(shí)使用的是HNSW。遺憾的是,這種方式無法進(jìn)行混合檢索。

3.3 支持向量的NoSQL 數(shù)據(jù)庫

幾乎所有這些NoSQL數(shù)據(jù)庫都是最近才通過添加向量搜索擴(kuò)展而具備向量能力的,所以如果要是使用的話一定要做好測試。Cassandra,Rockset,Azure Cosmos DB和MongoDB等都紛紛宣布了增加向量搜索的計(jì)劃。NoSQL數(shù)據(jù)庫的向量搜索性能可能差別很大,這取決于所支持的向量函數(shù)、索引方法和硬件加速。

例如,RedisVector是一個(gè)向量數(shù)據(jù)庫,專注于向量數(shù)據(jù)的有效處理。它擅長存儲(chǔ)和分析大量向量數(shù)據(jù),包括張量、矩陣和數(shù)值數(shù)組。通過 利用內(nèi)存數(shù)據(jù)存儲(chǔ)Redis,RedisVector可提供高性能的查詢響應(yīng)時(shí)間。它提供內(nèi)置的索引和搜索功能,可以快速搜索和查找相似的載體,RedisVector還支持各種距離測量,用于比較向量和執(zhí)行復(fù)雜的分析操作。通過對向量數(shù)據(jù)的操作,包括元素級算術(shù)和聚合,RedisVector 為處理向量提供了一個(gè)多功能環(huán)境,適用于處理和分析高維向量數(shù)據(jù)的機(jī)器學(xué)習(xí)應(yīng)用,從而能夠創(chuàng)建定制的推薦系統(tǒng)和基于相似性的準(zhǔn)確搜索。

對于支持向量的NoSQL 數(shù)據(jù)庫,探索嘗試未嘗不可,但在生產(chǎn)環(huán)境中使用要慎之又慎。

3.4 支持向量的SQL 數(shù)據(jù)庫

這些大都是關(guān)系型數(shù)據(jù)庫并且支持sql查詢,例如SingleStoreDB, PostgreSQL, Clickhouse和Kinetica的pgvector/Supabase Vector等。它們都宣布包含了向量搜索功能,如點(diǎn)積,余弦相似度,歐幾里得距離和曼哈頓距離,并且使用相似度分?jǐn)?shù)找到n個(gè)最近鄰。由于提供了混合查詢,可以將向量與其他數(shù)據(jù)結(jié)合起來以獲得更有意義的結(jié)果。另外,大多數(shù)SQL數(shù)據(jù)庫都可以作為服務(wù)部署,可以在云上進(jìn)行完全的管理。

例如,Postgres 通過 pg_vector pg_embdding 兩個(gè)插件來實(shí)現(xiàn)向量數(shù)據(jù)庫,讓PG數(shù)據(jù)庫支持向量索引檢索的能力。其索引算法使用的是基于Faiss的IVF Flat索引,提供了優(yōu)異的召回率。

4. 向量數(shù)據(jù)庫的一些對比

4.1 編程語言支持

Chroma是一個(gè)Python/TypeScript包裝器,基于C++編程語言的有OLAP數(shù)據(jù)庫Clickhouse以及開源向量索引HNSWLib。但如今,快速響應(yīng)且可擴(kuò)展的數(shù)據(jù)庫通常使用現(xiàn)代語言如Golang或Rust編寫。在專為向量數(shù)據(jù)庫而構(gòu)建的供應(yīng)商中,唯一使用Java構(gòu)建的是Vespa。

4.2 開源與否

Pinecone是完全閉源的,Zilliz也是一個(gè)閉源的完全托管的商業(yè)解決方案,但它完全建立在Milvus之上,其他向量數(shù)據(jù)庫至少在代碼庫方面是源代碼可用的,具體的許可證決定了代碼的可許可性以及如何部署。

4.3 檢索算法

眾多向量數(shù)據(jù)庫的檢索算法都采用了HNSW,其中,Milvus 的檢索算法支持最為豐富。

4.4 部署方式

向量數(shù)據(jù)庫的典型部署方式包括本地部署和托管/云原生,兩者都遵循CS架構(gòu)。還有一種新的選擇是嵌入式模式,其中數(shù)據(jù)庫本身與應(yīng)用程序代碼緊密耦合,以serverless的方式運(yùn)行。目前,只有Chroma和LanceDB可用作嵌入式數(shù)據(jù)庫。

綜上所述,主流向量數(shù)據(jù)庫的部分指標(biāo)對比如下:

此外,在選擇向量數(shù)據(jù)庫時(shí),還需要特別考量以下因素:

  • 可擴(kuò)展性:能夠高效處理高維度大數(shù)據(jù)量并能夠根據(jù)數(shù)據(jù)需求的增長進(jìn)行擴(kuò)展。

  • 性能:速度和效率對數(shù)據(jù)庫至關(guān)重要,需要在數(shù)據(jù)搜索、搜索性能和執(zhí)行各種向量操作方面表現(xiàn)出色。

  • 靈活性:支持廣泛的數(shù)據(jù)類型和格式,并且可以輕松適應(yīng)不同的應(yīng)用場景。

  • 易用性。這些數(shù)據(jù)庫易于使用和管理,易于安裝和配置,具有直觀的API,并且有良好的文檔和支持。

  • 可靠性:需要有可靠和穩(wěn)定的聲譽(yù)。

5. 向量數(shù)據(jù)庫與其他類型數(shù)據(jù)庫的對比

傳統(tǒng)數(shù)據(jù)庫,如關(guān)系數(shù)據(jù)庫,旨在存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)。這意味著數(shù)據(jù)被組織到預(yù)定義的表、行和列中,確保數(shù)據(jù)的完整性和一致性。傳統(tǒng)數(shù)據(jù)庫往往針對CRUD進(jìn)行優(yōu)化,旨在高效地創(chuàng)建、讀取、更新和刪除數(shù)據(jù)條目,使其適用于從 Web 服務(wù)到企業(yè)軟件的各種應(yīng)用程序。但是,一旦定義了數(shù)據(jù)庫結(jié)構(gòu),進(jìn)行更改可能會(huì)非常復(fù)雜且耗時(shí)。這種剛性可確保數(shù)據(jù)一致性,但靈活性可能不如某些現(xiàn)代數(shù)據(jù)庫的無模式或動(dòng)態(tài)模式性質(zhì)。

特性 關(guān)系型數(shù)據(jù)庫 向量數(shù)據(jù)庫
數(shù)據(jù)類型 數(shù)值、字符串、時(shí)間等傳統(tǒng)數(shù)據(jù)類型 向量數(shù)據(jù)不存儲(chǔ)原始數(shù)據(jù)
數(shù)據(jù)規(guī)模 小,1億數(shù)據(jù)量為規(guī)模很大 大,千億數(shù)據(jù)是底線
數(shù)據(jù)組織方式 基于表格,按照行和列組織 基于向量,按照向量維度組織
查找方式 精確查找:點(diǎn)查/范圍查 近似查找:對算力要求較高
低時(shí)延,高并發(fā) 否 
支撐上層應(yīng)用 較弱 對外提供統(tǒng)一的API,更適合大規(guī)模AI引用程序的部署和使用
應(yīng)用場景 容錯(cuò)率低,需提供更為精準(zhǔn)的搜索結(jié)果 場景容錯(cuò)率較高

與在行和列中存儲(chǔ)多種標(biāo)準(zhǔn)數(shù)據(jù)類型(如字符串、數(shù)字和其他標(biāo)量數(shù)據(jù)類型)不同,向量數(shù)據(jù)庫引入了向量這種新的數(shù)據(jù)類型,并圍繞此數(shù)據(jù)類型構(gòu)建優(yōu)化,專門用于實(shí)現(xiàn)快速存儲(chǔ)、檢索和最近鄰搜索語義。在傳統(tǒng)數(shù)據(jù)庫中,使用查找完全匹配項(xiàng)的索引或鍵值對對數(shù)據(jù)庫中的行進(jìn)行查詢,并返回這些查詢的相關(guān)行。

特別地, 向量數(shù)據(jù)庫與圖數(shù)據(jù)庫的對比如下:

6. 向量數(shù)據(jù)庫在大模型中的應(yīng)用

基于大模型的應(yīng)用經(jīng)常一些面臨挑戰(zhàn),例如生成不準(zhǔn)確或不相關(guān)的信息;缺乏事實(shí)一致性或常識;重復(fù)或自相矛盾;有偏見的或令人反感等。為了克服這些挑戰(zhàn),可以使用向量數(shù)據(jù)庫來存儲(chǔ)與所需領(lǐng)域的不同主題、關(guān)鍵詞、事實(shí)、觀點(diǎn)和/或來源的信息。然后,在使用一個(gè)大模型時(shí),通過AI插件從向量數(shù)據(jù)庫中傳遞信息,以生成更具信息性和吸引力的內(nèi)容,符合目標(biāo)意圖和指定風(fēng)格。

借助向量數(shù)據(jù)庫,我們能夠快速加載和存儲(chǔ)事件作為嵌入,并使用向量數(shù)據(jù)庫作為為AI模型提供動(dòng)力的大腦,提供上下文信息,長期記憶檢索,語義上的數(shù)據(jù)關(guān)聯(lián)等等。向量數(shù)據(jù)庫的典型使用方式如下:
1. 使用embeding 技術(shù)創(chuàng)建向量
2. 將這些向量存儲(chǔ)到向量數(shù)據(jù)庫
3. 應(yīng)用索引策略來組織管理向量
4. 使用查詢向量執(zhí)行相似性搜索
5. 從向量數(shù)據(jù)庫中取得相似的向量

實(shí)際上,向量數(shù)據(jù)庫在不同的領(lǐng)域和應(yīng)用程序中都有著許多用例,涉及自然語言處理(NLP)、計(jì)算機(jī)視覺(CV)、推薦系統(tǒng)(RS)和其他需要對數(shù)據(jù)進(jìn)行語義理解和匹配的領(lǐng)域。在向量數(shù)據(jù)庫中存儲(chǔ)信息的一個(gè)用例是使大型語言模型(LLM)能夠基于AI插件生成更相關(guān)、更連貫的文本。

由于向量數(shù)據(jù)庫將要查詢的數(shù)據(jù)存儲(chǔ)為嵌入向量,并且語言模型(LLM)也將其內(nèi)部的知識編碼為嵌入向量,因此在生成式問答應(yīng)用中是天生一對。向量數(shù)據(jù)庫充當(dāng)知識庫的功能,而LLM可以直接在嵌入空間中查詢數(shù)據(jù)的子集,一般可以使用以下方法進(jìn)行操作:

  1. 用戶通過界面用自然語言提出問題。

  2. 問題的文本被傳遞給嵌入模型,然后返回一個(gè)句子嵌入向量。

  3. 問題向量被傳遞給向量數(shù)據(jù)庫,通過ANN搜索返回與之最相似的前k個(gè)結(jié)果。這一步非常關(guān)鍵,因?yàn)樗蟠罂s小了LLM在下一步中的搜索空間。

  4. 構(gòu)建一個(gè)LLM提示(基于開發(fā)者預(yù)定義的模板),將其轉(zhuǎn)換為嵌入向量,并傳遞給LLM。使用類似LangChain的框架可以方便地執(zhí)行此步驟,因?yàn)榭梢詣?dòng)態(tài)構(gòu)建提示語,并調(diào)用LLM的本地嵌入模塊,而無需為每個(gè)工作流編寫大量自定義代碼。

  5. LLM在前k個(gè)結(jié)果中搜索信息,并生成問題的答案,答案發(fā)送回用戶。

結(jié)合LLM和向量數(shù)據(jù)庫可以構(gòu)建許多其他有用的應(yīng)用程序。然而,了解向量數(shù)據(jù)庫的一些潛在限制是必要的。在搜索應(yīng)用中,它們不一定優(yōu)先考慮關(guān)鍵詞短語的精確匹配來確定相關(guān)性。存儲(chǔ)和查詢的數(shù)據(jù)必須適應(yīng)所使用的嵌入模型的最大序列長度(對于類似BERT的模型,這個(gè)長度不超過幾百個(gè)詞)。目前,最好的方法是利用像LangChain和LlamaIndex這樣的框架,將數(shù)據(jù)分塊或壓縮成適合底層模型上下文的固定大小的向量。

同樣,向量數(shù)據(jù)庫也面臨著許多與其他數(shù)據(jù)庫技術(shù)相同的挑戰(zhàn), 需要繼續(xù)努力提高可擴(kuò)展性、近似精度、延遲性能和經(jīng)濟(jì)性。許多向量數(shù)據(jù)庫在核心數(shù)據(jù)庫能力方面需要提升,例如安全性、彈性、運(yùn)營支持和工作負(fù)載支持的多樣化。隨著AI應(yīng)用的成熟,未來需要的不僅僅只限于向量搜索功能。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多