在這篇文章中,將介紹如何基于向量數(shù)據(jù)庫,構(gòu)建一個電商產(chǎn)品圖片目錄的向量相似度查詢解決方案。將通過亞馬遜云科技Amazon SageMaker、pgvector向量數(shù)據(jù)庫擴展插件、小型語言模型助力AI圖片搜索能力,從而在產(chǎn)品目錄中查找到最符合條件的產(chǎn)品,提高查詢的準(zhǔn)確性、效率性和便利性。該方案尤其適合垂直行業(yè)使用,可覆蓋電商、游戲、短視頻,甚至法律、醫(yī)療、制造業(yè)、人力資源等場景。
?構(gòu)建背景介紹
?各行各業(yè)都在探索AIGC創(chuàng)新方法,希望通過利用生成式AI的巨大潛力,來增強用戶體驗,探索垂直行業(yè)的無限可能。
?在游戲美術(shù)、電商產(chǎn)品設(shè)計、建筑/家裝設(shè)計等行業(yè),AIGC正在徹底改變圖片方向創(chuàng)作過程。通過大數(shù)據(jù)分析用戶喜好和行為數(shù)據(jù),人工智能算法可以生成獨特的游戲場景和角色、服裝款式和設(shè)計、家裝內(nèi)飾和風(fēng)格,將個性化和成本效益提升到一個新的水平。且通過圖像識別,對最終生成的圖片進行審查,實現(xiàn)對結(jié)果的鑒黃鑒暴功能。
?視頻網(wǎng)站、短視頻平臺同樣可以從AI能力中獲益,尤其是在視頻相似度搜索和推薦方面,AI算法可以分析用戶行為,并推薦與他們的興趣點密切相關(guān)的視頻內(nèi)容,從而提升用戶的整體觀感體驗,從而增加用戶粘性。此外,AI驅(qū)動的圖像和視頻托管服務(wù)可以提供圖像去重、圖像相似度搜索和文本與圖像相似度搜索等功能,從而實現(xiàn)搜索精度和搜索體驗的整體改善。
?生物信息行業(yè)也是AI應(yīng)用探索的另一領(lǐng)域。在分子和DNA序列分類相似度搜索的應(yīng)用,使得AI在藥物發(fā)現(xiàn)和藥物研究中發(fā)揮了關(guān)鍵作用,大大提升了藥物研發(fā)的速度。無論是識別潛在的候選藥物還是DNA序列分析,AI都被證明是一種寶貴的工具。
?在這篇文章中,將分享如何構(gòu)建一個類似的產(chǎn)品目錄相似度搜索解決方案。該方案主要集成Amazon SageMaker和亞馬遜關(guān)系數(shù)據(jù)庫服務(wù)(Amazon RDS)PostgreSQL,而PostgreSQL通過啟用pgvector擴展插件實現(xiàn)了數(shù)據(jù)的向量存儲能力。
?Pgvector作為PostgreSQL的開源擴展插件,它提供了ML生成式向量的存儲和搜索功能。還同時支持精確識別和近似最近鄰算法識別(KNN)。它的設(shè)計初衷就是用于與PostgreSQL的其他功能無縫集成,包括了索引和查詢等。甚至可以使用pgvector存儲來自AWS Bedrock的ML生成式向量分片(目前Bedrock還處于限量預(yù)覽版階段)。
?綜述,無論屬于哪個行業(yè),無論是以上提到的電商、游戲、視頻服務(wù)、生命科學(xué),還是法律、醫(yī)療、制造業(yè)、人力資源等行業(yè),本篇文章都將為相似度搜索提供有價值的見解。
?Vector embeddings概述
?Embeddings(向量化表示/向量嵌入)是指將文本、圖像、視頻或音頻等對象轉(zhuǎn)換成高維向量空間中的數(shù)字表示的過程。該技術(shù)是通過使用機器學(xué)習(xí)算法實現(xiàn),理解數(shù)據(jù)的含義和上下文的語義關(guān)系、句法關(guān)系??梢詫⑸傻腅mbeddings用于各種應(yīng)用程序,例如信息檢索、圖像分類、自然語言處理等等。
?Vector embeddings之所以變得越來越受歡迎,是因為它們能夠以易于計算和擴展的方式捕捉對象之間的語義含義和相似之處。下圖直觀地表示了Word Embedding(詞語向量化表示)的特征形態(tài)。
?生成Embeddings后,可以在向量空間內(nèi)執(zhí)行相似度搜索?;贓mbedding的相似度搜索能在許多行業(yè)的應(yīng)用中受益,如電子商務(wù)、推薦系統(tǒng)和欺詐檢測等。例如,系統(tǒng)可以識別產(chǎn)品或交易之間的數(shù)學(xué)相似之處,以創(chuàng)建相關(guān)的產(chǎn)品推薦,或識別潛在的欺詐活動。
?使用pgvector實現(xiàn)高效的Embedding相似度搜索
?通過使用pgvector擴展插件,PostgreSQL可以有效地執(zhí)行Vector Embeddings的相似度搜索,為企業(yè)提供快速查詢的解決方案。
?要為本文場景的產(chǎn)品目錄生成Embedding向量化表示數(shù)據(jù),可以使用Amazon SageMaker等機器學(xué)習(xí)服務(wù),可輕松訓(xùn)練和部署機器學(xué)習(xí)模型,包括生成文本數(shù)據(jù)的Embedding模型。
?在本文部署執(zhí)行過程中,為了快速地呈現(xiàn)實驗效果,使用Hugging Face DLCs(深度學(xué)習(xí)容器)和Amazon SageMaker Python SDK來創(chuàng)建一個實時推理節(jié)點,運行All MiniLM-L6-v2(句子轉(zhuǎn)換器模型),生成文檔的embedding數(shù)據(jù)。使用pgvector擴展插件將Vector Embeddings存儲在RDS for PostgreSQL數(shù)據(jù)庫中。然后,使用pgvector的相似度搜索功能,在產(chǎn)品目錄中查找最符合客戶搜索查詢意圖的商品,并返回圖片結(jié)果。
?在上述過程中,pgvector的索引功能將進一步增強搜索優(yōu)化。通過對向量數(shù)據(jù)進行索引,可以加快搜索過程,并最大限度地減少識別最近的鄰域?qū)ο笏璧臅r間。深入研究了pgvector插件如何與PostgreSQL協(xié)同,為向量數(shù)據(jù)相似度搜索提供了一種簡化而有效的解決方案。
?pgvector擴展插件的安裝與使用驗證
?pgvector擴展插件的安裝
?首先,創(chuàng)建并連接到RDS for PostgreSQL V15.2或以上版本的數(shù)據(jù)庫。然后可以啟用創(chuàng)建pgvector插件,并支持您可以在數(shù)據(jù)庫中啟動vector embbeding的存儲并根據(jù)需要進行搜索(Amazon RDS for PostgreSQL數(shù)據(jù)庫自15.2版本起支持pgvector擴展插件,用戶可以通過SQL規(guī)范語句調(diào)用pgvector插件)。
?Pgvector擴展插件的使用驗證
?本文實驗中,使用sentence-transformers/all-MiniLM-L6-v2模型來生成vector embeddings數(shù)據(jù)。它將句子和段落映射到384維的密集向量空間,因此在解決方案中使用它來表示向量大小。
?代碼示范:創(chuàng)建一個用于存儲三維向量的測試表,插入一些樣本數(shù)據(jù),使用歐幾里德距離(也稱為L2距離)進行查詢,然后刪除測試表:
??電商產(chǎn)品圖片相似度搜索方案
?基于上述如何使用pgvector構(gòu)建向量相似度搜索的演示,接下來開始使用pgvector為電商的產(chǎn)品目錄,構(gòu)建搜索解決方案。以下將構(gòu)建一個搜索系統(tǒng),讓買家通過描述來查找類似的商品。
?接下來將逐步演示如何執(zhí)行產(chǎn)品相似度查詢。將在SageMaker實例上使用Hugging Face預(yù)訓(xùn)練的模型,為產(chǎn)品描述生成vector embeddings數(shù)據(jù);使用Amazon RDS for PostgreSQL并集成pgvector擴展插件,對vector embeddings數(shù)據(jù)進行存儲和相似度搜索。
?方案步驟
?1. 在AWS SageMaker notebook實例中,創(chuàng)建Jupyter notebook,由SageMaker負責(zé)管理創(chuàng)建實例和相關(guān)資源。
?2. 部署預(yù)先訓(xùn)練的Hugging Face sentence transformer model(句子轉(zhuǎn)換器模型)到SageMaker,以便下一步利用實時推理和數(shù)據(jù)轉(zhuǎn)換,生成物品描述的embeddings數(shù)據(jù)。
?3. 使用AWS SageMaker實時推理為產(chǎn)品目錄描述生成Embeddings數(shù)據(jù)。
?4. 使用AWS RDS for PostgreSQL來存儲原始產(chǎn)品描述和對應(yīng)的文本Embeddings。
?5. 使用AWS SageMaker實時推理將需要查詢的文本描述也生成Embedding數(shù)據(jù)。
?6. 使用AWS RDS for PostgreSQL的pgvector插件,執(zhí)行相似度搜索。
?方案架構(gòu)圖
?前置條件
?若要完成本Demo,您需要擁有一個亞馬遜云科技賬戶,并具有相應(yīng)的AWS IAM權(quán)限,以啟動提供的Amazon CloudFormation模板。
?解決方案部署
?使用CloudFormation Stack來部署這個解決方案。該堆棧會自動在您的賬戶內(nèi)創(chuàng)建所有必要的資源,包括以下資源:
- 網(wǎng)絡(luò)組件,包括VPC、子網(wǎng)、路由,安全組等資源。
- 一個SageMaker Notebook實例,用于在Jupyter Notebook中運行Python代碼。
- 與Notebook實例關(guān)聯(lián)的IAM角色。
- 一個RDS for PostgreSQL實例,用于存儲和查詢商品目錄的Embedding數(shù)據(jù)。
?解決方案部署開始,請完成以下步驟:
?1. 使用您的IAM用戶名和密碼登錄亞馬遜云科技管理控制臺。
?2. 選擇“啟動堆棧Launch Stack”,并在新的瀏覽器標(biāo)簽頁中打開。
?3. 選擇默認值,點擊“Next”,在下一頁選中復(fù)選框以確認IAM資源的創(chuàng)建,選擇“Create Stack”。
?4. 等待堆棧創(chuàng)建完成,狀態(tài)CREATE_COMPLETE。您可以在“Event”選項卡上檢查堆棧創(chuàng)建過程中的狀態(tài)。
?5. 在“Outputs”選項卡上,打開NotebookInstanceUrl。此鏈接將打開Jupyter Notebook,來完成剩下的部分。
?6.打開筆記本rdspg-vector.ipynb,然后按順序逐個在所有單元格中運行代碼。
?在以下部分中,我們將檢查Jupyter Notebook中幾個重要單元格的部分代碼,以演示解決方案。
?演示數(shù)據(jù)獲取
?使用Zalando Research FEIDEGGER數(shù)據(jù),該數(shù)據(jù)由8,732張高分辨率的時尚圖片和五張德語文字注釋組成,每張都是由單獨的用戶生成的。我們已經(jīng)使用Amazon Translate將每條著裝描述從德語翻譯成英語。代碼如下所示:
?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é)點。
?3. 調(diào)用SageMaker實時推理節(jié)點生成Embeddings,結(jié)果將顯示給定輸入文本的384維向量的維度。
?4. 使用SageMaker推理,為我們的產(chǎn)品目錄描述生成384維的向量化表示數(shù)據(jù)(embedding)。
?PostgreSQL與pgvetor插件的存儲與檢索
連接到RDS for PostgreSQL,使用向量數(shù)據(jù)類型創(chuàng)建產(chǎn)品表并提取數(shù)據(jù)。然后,為相似度搜索創(chuàng)建索引,以查找最近的L2距離鄰域向量對象。
?使用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單元中運行以下代碼以刪除模型和節(jié)點。
在CloudFormation stack中,清理本Demo中創(chuàng)建的Stack,清理剩余的資源。
?結(jié)論
?將AWS SageMaker,AWS RDS for PostgreSQL與pgvector開源擴展集成,配合小型語言模型(MiniLM),可以提供基于Vector Embedding的高精度AI圖片智能數(shù)據(jù)檢索??梢詰?yīng)用于電商產(chǎn)品目錄的相似度搜索,優(yōu)化查詢體驗。通過使用機器學(xué)習(xí)模型和Vector Embedding,企業(yè)可以提高相似度搜索、個性化推薦和欺詐檢測的準(zhǔn)確性和速度,最終提高用戶滿意度和更個性化的體驗。
?Pgvector的使用為大型多模態(tài)數(shù)據(jù)集(圖片、文本)的查詢提供了可擴展性,并且能夠無縫集成PostgreSQL的存儲功能。AWS SageMaker和pgvector的組合可在動態(tài)和數(shù)據(jù)驅(qū)動世界中取得更好的應(yīng)用效果。
?隨著工作負載的持續(xù)發(fā)展,PostgreSQL在向量數(shù)據(jù)庫方向的可擴展性,使開發(fā)人員能夠在垂直行業(yè)構(gòu)建新的數(shù)據(jù)類型和索引機制。隨著AI/ML創(chuàng)新的不斷涌現(xiàn),您未來可以在查詢終端集成LLM(大語言模型),進一步形成用戶友好的智能查詢ChatBot,構(gòu)建新的企業(yè)級智能化應(yīng)用程序。