• 正文
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

運(yùn)用PostgreSQL在向量數(shù)據(jù)庫(kù)的可擴(kuò)展性,亞馬遜云科技幫助企業(yè)構(gòu)建智能化應(yīng)用程序

2023/12/28
2668
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

在這篇文章中,將介紹如何基于向量數(shù)據(jù)庫(kù),構(gòu)建一個(gè)電商產(chǎn)品圖片目錄的向量相似度查詢解決方案。將通過(guò)亞馬遜云科技Amazon SageMaker、pgvector向量數(shù)據(jù)庫(kù)擴(kuò)展插件、小型語(yǔ)言模型助力AI圖片搜索能力,從而在產(chǎn)品目錄中查找到最符合條件的產(chǎn)品,提高查詢的準(zhǔn)確性、效率性和便利性。該方案尤其適合垂直行業(yè)使用,可覆蓋電商、游戲、短視頻,甚至法律、醫(yī)療、制造業(yè)、人力資源等場(chǎng)景。

?構(gòu)建背景介紹

?各行各業(yè)都在探索AIGC創(chuàng)新方法,希望通過(guò)利用生成式AI的巨大潛力,來(lái)增強(qiáng)用戶體驗(yàn),探索垂直行業(yè)的無(wú)限可能。

?在游戲美術(shù)、電商產(chǎn)品設(shè)計(jì)、建筑/家裝設(shè)計(jì)等行業(yè),AIGC正在徹底改變圖片方向創(chuàng)作過(guò)程。通過(guò)大數(shù)據(jù)分析用戶喜好和行為數(shù)據(jù),人工智能算法可以生成獨(dú)特的游戲場(chǎng)景和角色、服裝款式和設(shè)計(jì)、家裝內(nèi)飾和風(fēng)格,將個(gè)性化和成本效益提升到一個(gè)新的水平。且通過(guò)圖像識(shí)別,對(duì)最終生成的圖片進(jìn)行審查,實(shí)現(xiàn)對(duì)結(jié)果的鑒黃鑒暴功能。

?視頻網(wǎng)站、短視頻平臺(tái)同樣可以從AI能力中獲益,尤其是在視頻相似度搜索和推薦方面,AI算法可以分析用戶行為,并推薦與他們的興趣點(diǎn)密切相關(guān)的視頻內(nèi)容,從而提升用戶的整體觀感體驗(yàn),從而增加用戶粘性。此外,AI驅(qū)動(dòng)的圖像和視頻托管服務(wù)可以提供圖像去重、圖像相似度搜索和文本與圖像相似度搜索等功能,從而實(shí)現(xiàn)搜索精度和搜索體驗(yàn)的整體改善。

?生物信息行業(yè)也是AI應(yīng)用探索的另一領(lǐng)域。在分子和DNA序列分類相似度搜索的應(yīng)用,使得AI在藥物發(fā)現(xiàn)和藥物研究中發(fā)揮了關(guān)鍵作用,大大提升了藥物研發(fā)的速度。無(wú)論是識(shí)別潛在的候選藥物還是DNA序列分析,AI都被證明是一種寶貴的工具。

?在這篇文章中,將分享如何構(gòu)建一個(gè)類似的產(chǎn)品目錄相似度搜索解決方案。該方案主要集成Amazon SageMaker和亞馬遜關(guān)系數(shù)據(jù)庫(kù)服務(wù)(Amazon RDS)PostgreSQL,而PostgreSQL通過(guò)啟用pgvector擴(kuò)展插件實(shí)現(xiàn)了數(shù)據(jù)的向量存儲(chǔ)能力。

?Pgvector作為PostgreSQL的開源擴(kuò)展插件,它提供了ML生成式向量的存儲(chǔ)和搜索功能。還同時(shí)支持精確識(shí)別和近似最近鄰算法識(shí)別(KNN)。它的設(shè)計(jì)初衷就是用于與PostgreSQL的其他功能無(wú)縫集成,包括了索引和查詢等。甚至可以使用pgvector存儲(chǔ)來(lái)自AWS Bedrock的ML生成式向量分片(目前Bedrock還處于限量預(yù)覽版階段)。

?綜述,無(wú)論屬于哪個(gè)行業(yè),無(wú)論是以上提到的電商、游戲、視頻服務(wù)、生命科學(xué),還是法律、醫(yī)療、制造業(yè)、人力資源等行業(yè),本篇文章都將為相似度搜索提供有價(jià)值的見(jiàn)解。

?Vector embeddings概述

?Embeddings(向量化表示/向量嵌入)是指將文本、圖像、視頻或音頻等對(duì)象轉(zhuǎn)換成高維向量空間中的數(shù)字表示的過(guò)程。該技術(shù)是通過(guò)使用機(jī)器學(xué)習(xí)算法實(shí)現(xiàn),理解數(shù)據(jù)的含義和上下文的語(yǔ)義關(guān)系、句法關(guān)系??梢詫⑸傻腅mbeddings用于各種應(yīng)用程序,例如信息檢索、圖像分類、自然語(yǔ)言處理等等。

?Vector embeddings之所以變得越來(lái)越受歡迎,是因?yàn)樗鼈兡軌蛞砸子谟?jì)算和擴(kuò)展的方式捕捉對(duì)象之間的語(yǔ)義含義和相似之處。下圖直觀地表示了Word Embedding(詞語(yǔ)向量化表示)的特征形態(tài)。

?生成Embeddings后,可以在向量空間內(nèi)執(zhí)行相似度搜索?;贓mbedding的相似度搜索能在許多行業(yè)的應(yīng)用中受益,如電子商務(wù)、推薦系統(tǒng)和欺詐檢測(cè)等。例如,系統(tǒng)可以識(shí)別產(chǎn)品或交易之間的數(shù)學(xué)相似之處,以創(chuàng)建相關(guān)的產(chǎn)品推薦,或識(shí)別潛在的欺詐活動(dòng)。

?使用pgvector實(shí)現(xiàn)高效的Embedding相似度搜索

?通過(guò)使用pgvector擴(kuò)展插件,PostgreSQL可以有效地執(zhí)行Vector Embeddings的相似度搜索,為企業(yè)提供快速查詢的解決方案。

?要為本文場(chǎng)景的產(chǎn)品目錄生成Embedding向量化表示數(shù)據(jù),可以使用Amazon SageMaker等機(jī)器學(xué)習(xí)服務(wù),可輕松訓(xùn)練和部署機(jī)器學(xué)習(xí)模型,包括生成文本數(shù)據(jù)的Embedding模型。

?在本文部署執(zhí)行過(guò)程中,為了快速地呈現(xiàn)實(shí)驗(yàn)效果,使用Hugging Face DLCs(深度學(xué)習(xí)容器)和Amazon SageMaker Python SDK來(lái)創(chuàng)建一個(gè)實(shí)時(shí)推理節(jié)點(diǎn),運(yùn)行All MiniLM-L6-v2(句子轉(zhuǎn)換器模型),生成文檔的embedding數(shù)據(jù)。使用pgvector擴(kuò)展插件將Vector Embeddings存儲(chǔ)在RDS for PostgreSQL數(shù)據(jù)庫(kù)中。然后,使用pgvector的相似度搜索功能,在產(chǎn)品目錄中查找最符合客戶搜索查詢意圖的商品,并返回圖片結(jié)果。

?在上述過(guò)程中,pgvector的索引功能將進(jìn)一步增強(qiáng)搜索優(yōu)化。通過(guò)對(duì)向量數(shù)據(jù)進(jìn)行索引,可以加快搜索過(guò)程,并最大限度地減少識(shí)別最近的鄰域?qū)ο笏璧臅r(shí)間。深入研究了pgvector插件如何與PostgreSQL協(xié)同,為向量數(shù)據(jù)相似度搜索提供了一種簡(jiǎn)化而有效的解決方案。

?pgvector擴(kuò)展插件的安裝與使用驗(yàn)證

?pgvector擴(kuò)展插件的安裝

?首先,創(chuàng)建并連接到RDS for PostgreSQL V15.2或以上版本的數(shù)據(jù)庫(kù)。然后可以啟用創(chuàng)建pgvector插件,并支持您可以在數(shù)據(jù)庫(kù)中啟動(dòng)vector embbeding的存儲(chǔ)并根據(jù)需要進(jìn)行搜索(Amazon RDS for PostgreSQL數(shù)據(jù)庫(kù)自15.2版本起支持pgvector擴(kuò)展插件,用戶可以通過(guò)SQL規(guī)范語(yǔ)句調(diào)用pgvector插件)。

?Pgvector擴(kuò)展插件的使用驗(yàn)證

?本文實(shí)驗(yàn)中,使用sentence-transformers/all-MiniLM-L6-v2模型來(lái)生成vector embeddings數(shù)據(jù)。它將句子和段落映射到384維的密集向量空間,因此在解決方案中使用它來(lái)表示向量大小。

?代碼示范:創(chuàng)建一個(gè)用于存儲(chǔ)三維向量的測(cè)試表,插入一些樣本數(shù)據(jù),使用歐幾里德距離(也稱為L(zhǎng)2距離)進(jìn)行查詢,然后刪除測(cè)試表:

??電商產(chǎn)品圖片相似度搜索方案

?基于上述如何使用pgvector構(gòu)建向量相似度搜索的演示,接下來(lái)開始使用pgvector為電商的產(chǎn)品目錄,構(gòu)建搜索解決方案。以下將構(gòu)建一個(gè)搜索系統(tǒng),讓買家通過(guò)描述來(lái)查找類似的商品。

?接下來(lái)將逐步演示如何執(zhí)行產(chǎn)品相似度查詢。將在SageMaker實(shí)例上使用Hugging Face預(yù)訓(xùn)練的模型,為產(chǎn)品描述生成vector embeddings數(shù)據(jù);使用Amazon RDS for PostgreSQL并集成pgvector擴(kuò)展插件,對(duì)vector embeddings數(shù)據(jù)進(jìn)行存儲(chǔ)和相似度搜索。

?方案步驟

?1. 在AWS SageMaker notebook實(shí)例中,創(chuàng)建Jupyter notebook,由SageMaker負(fù)責(zé)管理創(chuàng)建實(shí)例和相關(guān)資源。

?2. 部署預(yù)先訓(xùn)練的Hugging Face sentence transformer model(句子轉(zhuǎn)換器模型)到SageMaker,以便下一步利用實(shí)時(shí)推理和數(shù)據(jù)轉(zhuǎn)換,生成物品描述的embeddings數(shù)據(jù)。

?3. 使用AWS SageMaker實(shí)時(shí)推理為產(chǎn)品目錄描述生成Embeddings數(shù)據(jù)。

?4. 使用AWS RDS for PostgreSQL來(lái)存儲(chǔ)原始產(chǎn)品描述和對(duì)應(yīng)的文本Embeddings。

?5. 使用AWS SageMaker實(shí)時(shí)推理將需要查詢的文本描述也生成Embedding數(shù)據(jù)。

?6. 使用AWS RDS for PostgreSQL的pgvector插件,執(zhí)行相似度搜索。

?方案架構(gòu)圖

?前置條件

?若要完成本Demo,您需要擁有一個(gè)亞馬遜云科技賬戶,并具有相應(yīng)的AWS IAM權(quán)限,以啟動(dòng)提供的Amazon CloudFormation模板。

?解決方案部署

?使用CloudFormation Stack來(lái)部署這個(gè)解決方案。該堆棧會(huì)自動(dòng)在您的賬戶內(nèi)創(chuàng)建所有必要的資源,包括以下資源:

  • 網(wǎng)絡(luò)組件,包括VPC、子網(wǎng)、路由,安全組等資源。
  • 一個(gè)SageMaker Notebook實(shí)例,用于在Jupyter Notebook中運(yùn)行Python代碼。
  • 與Notebook實(shí)例關(guān)聯(lián)的IAM角色。
  • 一個(gè)RDS for PostgreSQL實(shí)例,用于存儲(chǔ)和查詢商品目錄的Embedding數(shù)據(jù)。

?解決方案部署開始,請(qǐng)完成以下步驟:

?1. 使用您的IAM用戶名和密碼登錄亞馬遜云科技管理控制臺(tái)。

?2. 選擇“啟動(dòng)堆棧Launch Stack”,并在新的瀏覽器標(biāo)簽頁(yè)中打開。

?3. 選擇默認(rèn)值,點(diǎn)擊“Next”,在下一頁(yè)選中復(fù)選框以確認(rèn)IAM資源的創(chuàng)建,選擇“Create Stack”。

?4. 等待堆棧創(chuàng)建完成,狀態(tài)CREATE_COMPLETE。您可以在“Event”選項(xiàng)卡上檢查堆棧創(chuàng)建過(guò)程中的狀態(tài)。

?5. 在“Outputs”選項(xiàng)卡上,打開NotebookInstanceUrl。此鏈接將打開Jupyter Notebook,來(lái)完成剩下的部分。

?6.打開筆記本rdspg-vector.ipynb,然后按順序逐個(gè)在所有單元格中運(yùn)行代碼。

?在以下部分中,我們將檢查Jupyter Notebook中幾個(gè)重要單元格的部分代碼,以演示解決方案。

?演示數(shù)據(jù)獲取

?使用Zalando Research FEIDEGGER數(shù)據(jù),該數(shù)據(jù)由8,732張高分辨率的時(shí)尚圖片和五張德語(yǔ)文字注釋組成,每張都是由單獨(dú)的用戶生成的。我們已經(jīng)使用Amazon Translate將每條著裝描述從德語(yǔ)翻譯成英語(yǔ)。代碼如下所示:

?SageMaker模型托管與向量化表示數(shù)據(jù)生成

?在本節(jié)中,將預(yù)先訓(xùn)練的Hugging Face all-MiniLM-L6-v2句子轉(zhuǎn)換器模型托管到SageMaker中,并為產(chǎn)品目錄生成384維向量化表示數(shù)據(jù)(Embedding)。步驟如下:

?1. 定義SageMaker的執(zhí)行角色,工作S3桶和建立SageMaker。

?2. 指定模型配置參數(shù),部署模型推理節(jié)點(diǎn)。

?3. 調(diào)用SageMaker實(shí)時(shí)推理節(jié)點(diǎn)生成Embeddings,結(jié)果將顯示給定輸入文本的384維向量的維度。

?4. 使用SageMaker推理,為我們的產(chǎn)品目錄描述生成384維的向量化表示數(shù)據(jù)(embedding)。

?PostgreSQL與pgvetor插件的存儲(chǔ)與檢索

連接到RDS for PostgreSQL,使用向量數(shù)據(jù)類型創(chuàng)建產(chǎn)品表并提取數(shù)據(jù)。然后,為相似度搜索創(chuàng)建索引,以查找最近的L2距離鄰域向量對(duì)象。

?使用pgvector插件,在RDS for PostgreSQL執(zhí)行產(chǎn)品圖片的最相似圖片搜索。

?大家可以修改查詢用的描述文本,或Limit參數(shù),嘗試不同圖片結(jié)果和輸出圖片的數(shù)量。本文的查詢文本:“green sleeveless summer wear”,Limit參數(shù)3,返回產(chǎn)品ID(Product Item Id)分別為:2328、5117、479。

?現(xiàn)在,向量相似度搜索功能已為您返回最接近的匹配結(jié)果。

?方案資源清理

在Jupyter notebook單元中運(yùn)行以下代碼以刪除模型和節(jié)點(diǎn)。

在CloudFormation stack中,清理本Demo中創(chuàng)建的Stack,清理剩余的資源。

?結(jié)論

?將AWS SageMaker,AWS RDS for PostgreSQL與pgvector開源擴(kuò)展集成,配合小型語(yǔ)言模型(MiniLM),可以提供基于Vector Embedding的高精度AI圖片智能數(shù)據(jù)檢索??梢詰?yīng)用于電商產(chǎn)品目錄的相似度搜索,優(yōu)化查詢體驗(yàn)。通過(guò)使用機(jī)器學(xué)習(xí)模型和Vector Embedding,企業(yè)可以提高相似度搜索、個(gè)性化推薦和欺詐檢測(cè)的準(zhǔn)確性和速度,最終提高用戶滿意度和更個(gè)性化的體驗(yàn)。

?Pgvector的使用為大型多模態(tài)數(shù)據(jù)集(圖片、文本)的查詢提供了可擴(kuò)展性,并且能夠無(wú)縫集成PostgreSQL的存儲(chǔ)功能。AWS SageMaker和pgvector的組合可在動(dòng)態(tài)和數(shù)據(jù)驅(qū)動(dòng)世界中取得更好的應(yīng)用效果。

?隨著工作負(fù)載的持續(xù)發(fā)展,PostgreSQL在向量數(shù)據(jù)庫(kù)方向的可擴(kuò)展性,使開發(fā)人員能夠在垂直行業(yè)構(gòu)建新的數(shù)據(jù)類型和索引機(jī)制。隨著AI/ML創(chuàng)新的不斷涌現(xiàn),您未來(lái)可以在查詢終端集成LLM(大語(yǔ)言模型),進(jìn)一步形成用戶友好的智能查詢ChatBot,構(gòu)建新的企業(yè)級(jí)智能化應(yīng)用程序。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
BCM89811B1AWMLG 1 Broadcom Limited Ethernet Transceiver, PACKAGE-36
$13.11 查看
KSZ8863MLLI-TR 1 Microchip Technology Inc DATACOM, LAN SWITCHING CIRCUIT
$5.95 查看
KSZ8041NL-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC32

ECAD模型

下載ECAD模型
$1.71 查看

相關(guān)推薦