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

揭開向量索引概念的神秘面紗

譯文 精選
人工智能 其他數(shù)據(jù)庫
本文將向你深入淺出地揭示機(jī)器學(xué)習(xí)世界里你可能一直想了解的關(guān)于(向量)索引的一切神秘內(nèi)容。索引在數(shù)據(jù)檢索中起著核心作用。由于數(shù)據(jù)檢索可能仍然是數(shù)據(jù)技術(shù)的關(guān)鍵組成部分,因此了解索引(包括向量索引)是關(guān)于什么的至關(guān)重要。

自從ChatGPT公開發(fā)布以來,人們幾乎沒有一天不討論LLM(大型語言模型)、RAG(檢索增強(qiáng)生成:Retrieval Augmented Generation)和向量數(shù)據(jù)庫的新內(nèi)容。技術(shù)世界充斥著LLM的可能性,LLM被視為將改變我們生活的最新技術(shù):對一些人來說是最好的,對另一些人來說則是最壞的。除此之外,檢索增強(qiáng)生成(RAG)已經(jīng)成為一種動(dòng)態(tài)解決方案,以適應(yīng)不斷變化的知識環(huán)境。但是,在幕后還有一個(gè)至關(guān)重要的角色:向量索引和數(shù)據(jù)庫。

雖然LLM、RAG和向量數(shù)據(jù)庫已經(jīng)被廣泛并深入討論過,但是支持這些創(chuàng)新的(向量)索引卻鮮為人知。在本文中,我們將揭開向量索引概念的神秘面紗,以幫助您了解索引如何使得在大量集合中查找信息變得輕而易舉。

1、什么是索引?

我們都遇到過這樣的情況:你和你的朋友要在她家見面;但是,她事先提供給你的唯一信息是“我住在大都會(huì)區(qū)”。當(dāng)您到達(dá)上述大都會(huì)區(qū)時(shí),卻遇到如下圖所示的尷尬:

Yim在Unsplash上的照片

好吧,如果沒有任何幫助,找到她的位置需要一段時(shí)間!不過,如果入口處有一張導(dǎo)航地圖就好了……

這正是索引的意義所在:如何快速找到人員(或數(shù)據(jù))所在的位置。

提示:黃頁(https://www.yellowpages.com/)就是一個(gè)索引,它可以幫助你根據(jù)人們的名字找到他們的家。

索引是一種數(shù)據(jù)結(jié)構(gòu),用于提高數(shù)據(jù)檢索操作對數(shù)據(jù)的速度。換句話說,這就是你如何組織信息,以便快速找到你想要的東西。

人們通常使用鍵對數(shù)據(jù)進(jìn)行索引。數(shù)據(jù)的存儲順序基于鍵,而且可以使用多個(gè)鍵進(jìn)行索引。例如,在前面的黃頁網(wǎng)站中,第一個(gè)鍵是姓氏,第二個(gè)鍵是名字。

索引不一定存儲全部數(shù)據(jù)。它只關(guān)注用于在整個(gè)數(shù)據(jù)中快速定位和訪問特定數(shù)據(jù)片段的關(guān)鍵部分。

書籍后面的索引就是一個(gè)很好的例子:它顯示了在哪里可以找到使用相應(yīng)單詞的頁面;因此,它將每個(gè)單詞映射到頁碼,而不是句子本身。

索引“隱藏”于搜索引擎和數(shù)據(jù)庫背后:它們在提高數(shù)據(jù)檢索操作的效率和速度方面發(fā)揮著至關(guān)重要的作用。

因此,如何組織數(shù)據(jù)的選擇就顯得至關(guān)重要,這要取決于上下文。

例如,在黃頁的例子中,如果索引是按電話號碼組織的,但是你只知道他們的名字,那么找到他們的地址將非常困難!

信息就在那里;你最終會(huì)找到它,但所需的時(shí)間會(huì)阻止你進(jìn)行這樣的嘗試。另一方面,使用黃頁,只需瀏覽一眼頁面,就可以準(zhǔn)確地知道是需要向后看還是向前看!字典順序允許您進(jìn)行大致的對數(shù)搜索。這就是為什么索引的選擇是至關(guān)重要的。

一般來說,索引有一個(gè)非常精確的目的:它可以被設(shè)計(jì)為執(zhí)行數(shù)據(jù)的快速插入或檢索,或者執(zhí)行更奇特的查詢,如范圍查詢(“檢索今年5月1日至8月15日之間的所有數(shù)據(jù)”)。要優(yōu)化的操作的選擇將決定索引的外觀。

在線事務(wù)處理(OLTP)和在線分析處理(OLAP)數(shù)據(jù)庫之間的主要區(qū)別在于它們想要優(yōu)化的操作的選擇:OLTP側(cè)重于行上的操作(如更新條目),而另一個(gè)側(cè)重于列上的操作。這兩種類型的數(shù)據(jù)庫不會(huì)使用相同的索引,因?yàn)樗鼈儾会槍ο嗤牟僮鳌?/span>

(1)索引和數(shù)據(jù)結(jié)構(gòu)之間的區(qū)別是什么?

數(shù)據(jù)結(jié)構(gòu)(https://w.wiki/7ma9)是一種在計(jì)算機(jī)中組織和存儲數(shù)據(jù)的方式,以便能夠有效地訪問和操作數(shù)據(jù)。這樣解釋,有時(shí)很難看出索引和數(shù)據(jù)結(jié)構(gòu)之間的區(qū)別,那么到底它們之間的區(qū)別是什么呢?

簡言之,索引主要用于插入、搜索、排序或篩選數(shù)據(jù),但是數(shù)據(jù)結(jié)構(gòu)則更為通用。索引是使用數(shù)據(jù)結(jié)構(gòu)構(gòu)建的,但通常不存儲數(shù)據(jù)本身。

如果你考慮一個(gè)電影數(shù)據(jù)庫,那么每當(dāng)索引更新時(shí),你不想在大文件中移動(dòng):你存儲的是指向文件的指針,而不是文件本身。指針可以看作磁盤上文件的地址。

現(xiàn)在,您對索引應(yīng)該有了大致的了解,接下來讓我們關(guān)注數(shù)字示例。以下是一些常見的(數(shù)字)索引:

  • 反向索引
  • 哈希索引
  • B-樹
  • 區(qū)分位置的哈希(LSH)

為了更好地理解索引是如何工作的,讓我們研究一下最基本的索引之一:反向索引(Inverted index)。

(2)反向索引

反向索引是搜索引擎中使用的標(biāo)準(zhǔn)索引。

它旨在快速找到信息的位置:它旨在優(yōu)化檢索時(shí)間。

簡而言之,反向索引將內(nèi)容映射到它們的位置,有點(diǎn)像書的索引。

它通常用于將特性映射到具有該特性的數(shù)據(jù)。

例如,假設(shè)你想知道誰住在同一棟樓里。

首先,你應(yīng)該有一個(gè)表格,每個(gè)名字都對應(yīng)一棟樓(這個(gè)表格本可以幫助你找到愛麗絲):

每當(dāng)有人到達(dá)或離開該地區(qū)時(shí),此表都會(huì)更新。

如果你想在這個(gè)表中找到住在B樓的人,你必須遍歷整個(gè)表。

雖然這在技術(shù)上是可能的,但它不會(huì)縮放,因?yàn)橛?jì)算時(shí)間會(huì)隨著表的大小線性增加。

想想該地區(qū)的公寓數(shù)量:如果你想通過逐一查看所有檔案來找到B棟的所有住戶,這需要一段時(shí)間!

另一種解決方案是使用反向索引:您維護(hù)一個(gè)表格,其中的建筑物被用作密鑰,并與居住在其中的人相連:

此表與上一個(gè)表同時(shí)維護(hù):添加或刪除新人的成本比以前略高,但檢索時(shí)間已縮短到幾乎為零!

要找到住在B棟樓的人,你只需訪問此表的行“B棟樓(Building B)”即可獲得結(jié)果!

還有一個(gè)典型的例子:反向電話查找也是電話號碼的反向索引!

在實(shí)踐中,反向索引有點(diǎn)復(fù)雜,因?yàn)樗鼈兲幚淼臄?shù)據(jù)比配對(用戶、興趣)更復(fù)雜。索引通常存儲為哈希表(https://w.wiki/7mdQ)中。

盡管反向索引相對簡單,但它們是搜索引擎中最常見的索引之一。

(3)索引和數(shù)據(jù)庫

數(shù)據(jù)庫建立在索引之上。索引通過存儲指向數(shù)據(jù)庫數(shù)據(jù)的指針或引用來增強(qiáng)數(shù)據(jù)庫中的數(shù)據(jù)檢索。它不存儲實(shí)際數(shù)據(jù),而是作為一種快速訪問數(shù)據(jù)的手段,顯著提高了查詢性能。

數(shù)據(jù)庫不僅僅是索引,因?yàn)樗且粋€(gè)全面的數(shù)據(jù)管理系統(tǒng)。它存儲、組織和管理實(shí)際數(shù)據(jù),加強(qiáng)數(shù)據(jù)完整性,處理事務(wù),并提供索引之外的一系列功能,使其成為數(shù)據(jù)存儲和操作的中心樞紐。雖然索引加快了數(shù)據(jù)庫中的數(shù)據(jù)檢索,但數(shù)據(jù)庫是數(shù)據(jù)存儲、管理和檢索的完整生態(tài)系統(tǒng)。

總之,索引就像數(shù)據(jù)庫中的路標(biāo),為您查找的數(shù)據(jù)指明方向。相比之下,數(shù)據(jù)庫是實(shí)際數(shù)據(jù)所在的存儲庫,并配備了各種工具和功能來管理和操作這些數(shù)據(jù)。

根據(jù)您的使用情況,您可能不需要整個(gè)數(shù)據(jù)庫,而只需要索引,因?yàn)槿婀芾頂?shù)據(jù)的成本可能非常高昂。

2、向量索引和向量數(shù)據(jù)庫

(1)什么是向量索引?

簡而言之,向量索引是一個(gè)索引,其中鍵是向量。

在我們的反向索引示例中,鍵是單詞(愛好和名稱)。在向量索引中,我們操縱向量:固定大小的數(shù)字序列。

兩個(gè)大小為4的向量

我知道,我能聽到你說,“我數(shù)學(xué)不好,我不想用向量”。

別擔(dān)心,你不需要擅長數(shù)學(xué)就能理解向量索引。

您所需要知道的是,使用向量使您能夠依賴強(qiáng)大且優(yōu)化的操作。

你可能會(huì)問自己的第一個(gè)問題是,“你的向量有什么有趣的?”

比方說,你終于在愛麗絲家找到了她,現(xiàn)在你想找點(diǎn)吃的。你可能想找最近的餐館。于是,你查找一份餐館列表,最后得到一張餐館、特色菜和地址的表格。讓我們來看看您可以找到的信息:

這看起來沒有幫助,對吧?你唯一的選擇是瀏覽列表,逐個(gè)讀取地址,然后手動(dòng)評估它離你有多近。我們可以嘗試自動(dòng)對最近的地方進(jìn)行排名,但基于原始地址計(jì)算距離很困難(兩條街道可能在附近,但名稱不同)。

想象一下,現(xiàn)在你有一張表格,上面有GPS位置,代表每個(gè)餐廳的確切緯度和經(jīng)度:

每個(gè)位置都是大小為2的向量。有了這些向量,你就可以通過簡單快速的數(shù)學(xué)運(yùn)算輕松計(jì)算到自己位置的距離。然后你可以快速檢索到最近的餐館,換句話說,距離你最小的餐館!

現(xiàn)在,你可以很容易地找到離你最近的餐館了!

有趣的一點(diǎn)是,通過直接根據(jù)向量(本例中的GPS位置)對表進(jìn)行索引,我們可以優(yōu)化索引,從而快速找到距離最低的條目。

向量索引是專門的索引,旨在有效地檢索與給定向量最接近或最相似的向量。這些索引依賴于優(yōu)化的數(shù)學(xué)運(yùn)算來有效地識別最相似的向量。

在我們的例子中,使用的距離是經(jīng)典距離,但是針對所有現(xiàn)有距離或相似性都使用了索引,例如余弦相似性度量。

位置敏感哈希(LSH)是用于查找數(shù)據(jù)集中k個(gè)最相似數(shù)據(jù)點(diǎn)的最廣泛使用的索引之一,它適用于不同的距離或相似性。

“這很好,但我沒有在數(shù)據(jù)庫中使用向量”。

這就是令人興奮的部分:你可以將任何東西轉(zhuǎn)化為向量。

簡單地采用二進(jìn)制表示是低效的,因?yàn)樗赡馨肼?,所以找到一種保留數(shù)據(jù)特性的表示是至關(guān)重要的。

將不同的信息表示為向量以使用向量索引已成為提高系統(tǒng)效率的標(biāo)準(zhǔn)方法。向量化已經(jīng)成為一門藝術(shù)。

例如,如果你有一個(gè)圖像數(shù)據(jù)集,并且你想要一個(gè)數(shù)據(jù)庫,在那里你可以找到與給定圖像最相似的圖像,那么,你可以使用圖像的SIFT描述符。

(2)向量索引和向量數(shù)據(jù)庫之間的區(qū)別是什么?

向量索引和向量數(shù)據(jù)庫之間的區(qū)別與索引和數(shù)據(jù)庫之間的差異相同:索引旨在快速找到數(shù)據(jù)所在的位置,而向量數(shù)據(jù)庫使用向量索引快速執(zhí)行檢索查詢,但它們也存儲和維護(hù)數(shù)據(jù),同時(shí)提供額外的操作和屬性。

3、LLM和RAG之間的聯(lián)系是什么?

既然您已經(jīng)了解了向量索引,您可能會(huì)想,為什么這么多關(guān)于LLM和RAG的討論也討論了向量索引。為了理解原因,讓我們首先快速解釋什么是檢索增強(qiáng)生成(Retrieval Augmented Generation,簡稱RAG)。AG是LLM的一個(gè)固有局限性的巧妙解決方案,即其知識有限。

LLM只知道它們接受過訓(xùn)練的數(shù)據(jù)。增加它們知識的一種技術(shù)是提示工程(Prompt Engineering),將額外的數(shù)據(jù)集成到查詢提示中:“給定這些數(shù)據(jù){data},回答這個(gè)問題:{question}”。

雖然這種方法很有效,但它面臨著一個(gè)新的挑戰(zhàn):可擴(kuò)展性。不僅提示的大小是有限的,而且包含的數(shù)據(jù)越多,查詢的成本就越高。

為了克服這一點(diǎn),檢索增強(qiáng)生成通過只插入最相似的數(shù)據(jù)來限制數(shù)據(jù)量,這就是向量索引的作用所在!

它的工作原理如下:

所有文檔最初都使用LLM轉(zhuǎn)換為向量(1)。更具體地說,使用LLM的編碼器部分。

這些向量被用作索引向量索引(2)中的文檔的關(guān)鍵字。

在執(zhí)行查詢時(shí),使用LLM對查詢進(jìn)行向量化(3)。然后在向量索引中查詢得到的向量,以檢索最相似的文檔(4)。然后,使用提示工程將這些文檔用于回答查詢(5)。

檢索增強(qiáng)生成(RAG)依賴LLM和向量索引

就是這樣!

正如您所看到的,與LLM類似,向量索引在RAG中占據(jù)中心位置。

有些人更喜歡使用向量數(shù)據(jù)庫而不是向量索引。只要您想在多個(gè)應(yīng)用程序中重用相同的數(shù)據(jù),就可以了。但是,如果您主要關(guān)心的是檢索效率或?yàn)槊總€(gè)應(yīng)用程序定義索引的靈活性,那么部署單個(gè)向量索引通常更簡單、更快。

結(jié)論

我相信你現(xiàn)在已經(jīng)具備了參與那些關(guān)于LLM和RAG的激情討論的所有背景知識。

索引在數(shù)據(jù)檢索中起著核心作用。由于數(shù)據(jù)檢索可能仍然是數(shù)據(jù)技術(shù)的關(guān)鍵組成部分,因此了解索引(包括向量索引)是關(guān)于什么的至關(guān)重要。

如果你想了解更高級的索引技術(shù),我建議你閱讀我關(guān)于LSH的文章(https://pathway.com/developers/showcases/lsh/lsh_chapter2)。如果你想學(xué)習(xí)更實(shí)用的東西,并想體驗(yàn)實(shí)時(shí)檢索增強(qiáng)生成(RAG)的實(shí)際應(yīng)用,可以考慮探索LLM應(yīng)用程序(https://github.com/pathwaycom/llm-app),在那里你可以親身體驗(yàn)這些技術(shù)的力量。

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:The Hidden World of (Vector) Indexes,作者:Olivier Ruas

鏈接:https://towardsdatascience.com/the-hidden-world-of-vector-indexes-f320a626c3dd。

責(zé)任編輯:姜華 來源: 51CTO
相關(guān)推薦

2015-08-20 13:43:17

NFV網(wǎng)絡(luò)功能虛擬化

2010-05-17 09:13:35

2014-03-12 11:11:39

Storage vMo虛擬機(jī)

2021-06-07 08:18:12

云計(jì)算云端阿里云

2010-05-26 19:12:41

SVN沖突

2009-09-15 15:34:33

Google Fast

2023-11-02 09:55:40

2016-04-06 09:27:10

runtime解密學(xué)習(xí)

2009-06-01 09:04:44

Google WaveWeb

2018-03-01 09:33:05

軟件定義存儲

2010-06-17 10:53:25

桌面虛擬化

2011-08-02 08:59:53

2017-10-16 05:56:00

2021-07-28 21:49:01

JVM對象內(nèi)存

2021-08-11 09:01:48

智能指針Box

2021-05-25 09:01:21

Linux命令Bash histor

2021-09-17 15:54:41

深度學(xué)習(xí)機(jī)器學(xué)習(xí)人工智能

2020-04-14 10:44:01

區(qū)塊鏈滲透測試比特幣

2016-11-16 09:06:59

2025-01-07 15:07:13

點(diǎn)贊
收藏

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