一文教你如何使用矢量數(shù)據(jù)庫構(gòu)建LLM應(yīng)用程序?
介紹
在不斷發(fā)展的技術(shù)環(huán)境中,我們發(fā)現(xiàn)自己正處于數(shù)據(jù)存儲和檢索領(lǐng)域突破性革命的風(fēng)口浪尖。想象一下這樣一個世界:應(yīng)用程序可以以閃電般的速度處理大量信息,以無與倫比的效率輕松搜索和分析數(shù)據(jù)。這就是矢量數(shù)據(jù)庫的承諾,這是一項尖端技術(shù),正在重新定義我們與數(shù)據(jù)交互的方式。在本文中,我們將探討矢量數(shù)據(jù)庫的世界及其令人難以置信的潛力,特別關(guān)注它們在創(chuàng)建低延遲機器 (LLMs) 應(yīng)用程序中的作用。加入我們!作為尖端技術(shù)和創(chuàng)新應(yīng)用程序開發(fā)的復(fù)雜融合,以解鎖使用矢量數(shù)據(jù)庫構(gòu)建 LLMs 應(yīng)用程序的秘密。準備好顛覆數(shù)據(jù)利用方式,因為我們即將揭示解鎖數(shù)據(jù)驅(qū)動應(yīng)用未來的關(guān)鍵!

例如,如果您向亞馬遜客戶服務(wù)應(yīng)用程序詢問“如何在 Android 應(yīng)用程序中更改我的語言?”,則它可能沒有經(jīng)過此確切文本的訓(xùn)練,因此可能無法回答。這就是矢量數(shù)據(jù)庫的用武之地。矢量數(shù)據(jù)庫將域文本(在本例中為幫助文檔)和所有用戶過去的查詢(包括訂單歷史記錄等)存儲為數(shù)字嵌入,并實時提供相似向量的查找。在這種情況下,它將此查詢編碼為數(shù)值向量,并使用它來在其向量數(shù)據(jù)庫中執(zhí)行相似性搜索并查找其最近的鄰居。借助此幫助,聊天機器人可以正確引導(dǎo)用戶進入亞馬遜應(yīng)用程序上的“更改語言首選項”部分。
什么是 LLMs ?
大型語言模型 (LLMs) 是使用深度學(xué)習(xí)算法來處理和理解自然語言的基礎(chǔ)機器學(xué)習(xí)模型。這些模型在大量文本數(shù)據(jù)上進行訓(xùn)練,以學(xué)習(xí)語言中的模式和實體關(guān)系。LLMs 可以執(zhí)行多種類型的語言任務(wù),例如翻譯語言、分析情緒、聊天機器人對話等。他們可以理解復(fù)雜的文本數(shù)據(jù),識別實體和它們之間的關(guān)系,并生成連貫且語法準確的新文本。
LLMs 如何工作?
LLMs 使用大量數(shù)據(jù)進行訓(xùn)練,通常是 TB,甚至 PB,具有數(shù)十億或數(shù)萬億個參數(shù),使它們能夠根據(jù)用戶的提示或查詢預(yù)測和生成相關(guān)響應(yīng)。它們通過詞嵌入、自我注意層和前饋網(wǎng)絡(luò)處理輸入數(shù)據(jù),以生成有意義的文本。您可以在此處閱讀有關(guān) LLMs 架構(gòu)的更多信息。
LLMs 的局限性
雖然 LLMs 似乎以相當高的準確度生成響應(yīng),在許多標準化測試中甚至比人類更好,但這些模型仍然存在局限性。首先,他們完全依靠他們的訓(xùn)練數(shù)據(jù)來建立他們的推理,因此數(shù)據(jù)中可能缺乏特定或當前的信息。這導(dǎo)致模型產(chǎn)生不正確或不尋常的反應(yīng),即“幻覺”。目前正在努力緩解這種情況。其次,模型的行為或響應(yīng)方式可能不符合用戶的期望。
為了解決這個問題,矢量數(shù)據(jù)庫和嵌入模型通過對用戶正在尋找信息的類似模式(文本、圖像、視頻等)提供額外的查找來增強對 LLMs /生成人工智能的知識。下面是一個示例,其中 LLMs 沒有用戶要求的響應(yīng),而是依靠向量數(shù)據(jù)庫來查找該信息。

LLMs 和矢量數(shù)據(jù)庫
大型語言模型 (LLMs) 正在行業(yè)的許多部分使用或集成,例如電子商務(wù)、旅游、搜索、內(nèi)容創(chuàng)建和金融。這些模型依賴于一種相對較新的數(shù)據(jù)庫類型,稱為矢量數(shù)據(jù)庫,它將文本、圖像、視頻和其他數(shù)據(jù)的數(shù)字表示存儲在稱為嵌入的二進制表示形式中。本節(jié)重點介紹矢量數(shù)據(jù)庫和嵌入的基礎(chǔ)知識,更重要的是,重點介紹如何使用它們與 LLMs 應(yīng)用程序集成。
向量數(shù)據(jù)庫是使用高維空間存儲和搜索嵌入的數(shù)據(jù)庫。這些向量是數(shù)據(jù)要素或?qū)傩缘臄?shù)值表示。使用計算高維空間中向量之間的距離或相似性的算法,向量數(shù)據(jù)庫可以快速有效地檢索相似數(shù)據(jù)。與將數(shù)據(jù)存儲在行或列中并使用精確匹配或基于關(guān)鍵字的搜索方法的傳統(tǒng)基于標量的數(shù)據(jù)庫不同,矢量數(shù)據(jù)庫的操作方式不同。他們使用矢量數(shù)據(jù)庫,使用近似最近鄰(ANN)等技術(shù)在很短的時間內(nèi)(毫秒級)搜索和比較大量矢量。

關(guān)于嵌入的快速教程
AI 模型通過將文本、視頻、圖像等原始數(shù)據(jù)輸入到矢量嵌入庫(如 word2vec 和 在 AI 和機器學(xué)習(xí)的背景下,這些功能表示數(shù)據(jù)的不同維度,這對于理解模式關(guān)系和底層結(jié)構(gòu)至關(guān)重要。?

下面是如何使用 word2vec 生成單詞嵌入的示例。
1.使用自定義數(shù)據(jù)語料庫生成模型,或使用來自 Google 或 FastText 的示例預(yù)構(gòu)建模型。如果您生成自己的文件,則可以將其作為“word2vec.model”文件保存到文件系統(tǒng)中。
2.加載模型,為輸入詞生成向量嵌入,并使用它來獲取向量嵌入空間中的相似詞。
3.以下是接近輸入單詞的前 5 個單詞。
LLMs 應(yīng)用架構(gòu)
在高級別上,向量數(shù)據(jù)庫依賴于嵌入模型來處理嵌入的創(chuàng)建和查詢。在攝取路徑上,語料庫內(nèi)容使用嵌入模型編碼為向量,并存儲在 Pinecone,ChromaDB,Weaviate 等向量數(shù)據(jù)庫中。在讀取路徑上,應(yīng)用程序使用句子或單詞進行查詢,然后由嵌入模型再次將其編碼到向量中,然后將其查詢到向量數(shù)據(jù)庫中以獲取結(jié)果。?

使用矢量數(shù)據(jù)庫的 LLMs 應(yīng)用程序
LLMs 有助于語言任務(wù),并嵌入到更廣泛的模型類別中,例如生成 AI,它可以生成圖像和視頻,而不僅僅是文本。在本節(jié)中,我們將學(xué)習(xí)如何使用矢量數(shù)據(jù)庫構(gòu)建實用的 LLMs /生成式 AI 應(yīng)用程序。我使用變壓器和火炬庫作為語言模型,松果作為矢量數(shù)據(jù)庫。您可以為 LLMs /嵌入選擇任何語言模型,并為存儲和搜索選擇任何矢量數(shù)據(jù)庫。
構(gòu)建聊天機器人應(yīng)用程序
要使用矢量數(shù)據(jù)庫構(gòu)建聊天機器人,您可以按照以下步驟操作:
選擇一個矢量數(shù)據(jù)庫,如Pinecone,Chroma,Weaviate,AWS Kendra 等。
為您的聊天機器人創(chuàng)建矢量索引。
使用您選擇的大型文本語料庫訓(xùn)練語言模型。例如,對于新聞聊天機器人,您可以輸入新聞數(shù)據(jù)。
集成矢量數(shù)據(jù)庫和語言模型。
下面是一個使用矢量數(shù)據(jù)庫和語言模型的聊天機器人應(yīng)用程序的簡單示例:
此聊天機器人應(yīng)用程序?qū)南蛄繑?shù)據(jù)庫中檢索與用戶的查詢向量最相似的向量,然后使用基于檢索到的向量的語言模型生成文本。
構(gòu)建圖像生成器應(yīng)用程序
讓我們探索如何構(gòu)建同時使用生成式 AI 和 LLMs 庫的圖像生成器應(yīng)用程序。
創(chuàng)建矢量數(shù)據(jù)庫以存儲圖像矢量。
從訓(xùn)練數(shù)據(jù)中提取圖像向量。
將圖像矢量插入到矢量數(shù)據(jù)庫中。
訓(xùn)練生成對抗網(wǎng)絡(luò) (GAN)。
集成矢量數(shù)據(jù)庫和 GAN。
下面是一個集成矢量數(shù)據(jù)庫和 GAN 以生成圖像的程序的簡單示例:
該程序?qū)南蛄繑?shù)據(jù)庫中檢索與用戶查詢向量最相似的向量,然后根據(jù)檢索到的向量使用 GAN 生成圖像。

您可以自定義此程序以滿足您的特定需求。例如,您可以訓(xùn)練專門用于生成特定類型的圖像(例如肖像或風(fēng)景)的 GAN。
構(gòu)建電影推薦應(yīng)用
讓我們探討一下如何從電影語料庫構(gòu)建電影推薦應(yīng)用。您可以使用類似的想法為產(chǎn)品或其他實體構(gòu)建推薦系統(tǒng)。
創(chuàng)建矢量數(shù)據(jù)庫以存儲電影矢量。
從電影元數(shù)據(jù)中提取電影矢量。
將電影矢量插入矢量數(shù)據(jù)庫。
向用戶推薦電影。
下面是如何使用松果 API 向用戶推薦電影的示例:
下面是對用戶的示例建議
使用矢量搜索/數(shù)據(jù)庫的 LLMs 的真實用例
● Microsoft 和 TikTok 使用 Pinecone 等矢量數(shù)據(jù)庫進行長期記憶和更快的查找。如果沒有矢量數(shù)據(jù)庫,LLMs 就無法單獨完成。它正在幫助用戶保存他們過去的問題/回答并恢復(fù)他們的會話。例如,用戶可以問:“告訴我更多關(guān)于我們上周討論的意大利面食譜。

● Flipkart 的決策助手通過首先將查詢編碼為向量嵌入,然后對在高維空間中存儲相關(guān)產(chǎn)品的向量進行查找,向用戶推薦產(chǎn)品。例如,如果您搜索“牧馬人皮夾克棕色男士中號”,則它使用矢量相似性搜索向用戶推薦相關(guān)產(chǎn)品。否則,LLMs 將沒有任何建議,因為沒有產(chǎn)品目錄將包含此類標題或產(chǎn)品詳細信息。你可以在這里閱讀。
● 非洲的金融科技公司 Chipper Cash 使用矢量數(shù)據(jù)庫將欺詐用戶注冊量減少了 10 倍。它通過將以前用戶注冊的所有圖像存儲為矢量嵌入來實現(xiàn)這一點。然后,當新用戶注冊時,它會將其編碼為向量,并將其與現(xiàn)有用戶進行比較以檢測欺詐行為。

● Facebook 一直在內(nèi)部的許多產(chǎn)品中使用其名為FAISS(博客)的矢量搜索庫,包括Instagram Reels和 Facebook Stories,以快速查找任何多媒體并找到類似的候選者,以便向用戶顯示更好的建議。
結(jié)論
矢量數(shù)據(jù)庫對于構(gòu)建各種 LLMs 應(yīng)用程序非常有用,例如圖像生成,電影或產(chǎn)品推薦以及聊天機器人。他們?yōu)?LLMs 提供 LLMs 尚未接受過培訓(xùn)的附加或類似信息。他們將向量嵌入有效地存儲在高維空間中,并使用最近鄰搜索以高精度查找相似的嵌入。
關(guān)鍵要點
本文的主要要點是矢量數(shù)據(jù)庫非常適合 LLMs 應(yīng)用程序,并為用戶提供以下重要功能以供集成:
● 性能:矢量數(shù)據(jù)庫專門設(shè)計用于高效存儲和檢索矢量數(shù)據(jù),這對于開發(fā)高性能 LLMs 應(yīng)用程序非常重要。
● 精度:矢量數(shù)據(jù)庫可以準確匹配相似的矢量,即使它們表現(xiàn)出輕微的變化。他們使用最近鄰算法來計算類似的向量。
● 多模態(tài):矢量數(shù)據(jù)庫可以容納各種多模態(tài)數(shù)據(jù),包括文本、圖像和聲音。這種多功能性使它們成為需要處理各種數(shù)據(jù)類型的LLMs /生成式AI應(yīng)用程序的理想選擇。
● 對開發(fā)人員友好:矢量數(shù)據(jù)庫相對用戶友好,即使對于可能不具備廣泛機器學(xué)習(xí)技術(shù)知識的開發(fā)人員也是如此。
此外,我想強調(diào)的是,許多現(xiàn)有的 SQL / NoSQL 解決方案已經(jīng)添加了向量嵌入存儲,索引和相似性搜索功能,例如 PostgreSQL 和 Redis。
原文地址:https://www.analyticsvidhya.com/blog/2023/10/how-to-build-llm-apps-using-vector-database/

非常感謝大家的閱讀,小Mo在這里祝你在末來的 Python 學(xué)習(xí)職業(yè)生涯中一切順利!
后續(xù)小Mo會不定期更新書籍、視頻等學(xué)習(xí)資源,以上這些書籍資料也可通過關(guān)注微信公眾號免費獲取哦!
歡迎關(guān)注我們的微信公眾號:MomodelAl
同時,歡迎使用「Mo A編程」微信小程序
以及登錄官網(wǎng),了解更多信息:Mo 人工智能教育實訓(xùn)平臺
Mo,發(fā)現(xiàn)意外,創(chuàng)造可能
注:部分資源來源于互聯(lián)網(wǎng),若有侵權(quán),請直接聯(lián)系作者刪除。