AI之旅實現(xiàn)的第一個功能是基于大模型的 vector embedding 進(jìn)行語義搜索(semantic search)。基于大模型實現(xiàn)的聊天機器人雖然能打字和你聊天,但大模型卻大字不識一個,它只識數(shù)(向量)與只會計算,它不會玩文字游戲,只會玩數(shù)字游戲
AI之旅實現(xiàn)的第一個功能是基于大模型的 vector embedding 進(jìn)行語義搜索(semantic search)。
(圖片來源: kdnuggets.com )
基于大模型實現(xiàn)的聊天機器人雖然能打字和你聊天,但大模型大字不識一個,它只識數(shù)(向量)與只會計算,它不會玩文字游戲,只會玩數(shù)字游戲。
任何一段文字,在大模型的眼里只是一個向量,這個向量是包含n個元素的浮點型數(shù)組(n對應(yīng)大模型的n維空間),數(shù)組中的一組浮點數(shù)字表示的是大模型n維空間中的坐標(biāo),大模型n維空間可以理解為大模型在自己的「大腦」中對文字的語義進(jìn)行建模的空間,大模型將對一段文字的理解映射到n維空間中的一個點。不顧多么長多么復(fù)雜的一段文字,都可以用一個點表示,這就是多維空間的神奇力量。這個向量,這個數(shù)組,這個坐標(biāo),這個點,就是大名鼎鼎的 vector embedding,大模型通過 vector embedding 將文字的語義嵌入到自己的n維空間,然后通過對向量的計算操作玩轉(zhuǎn)數(shù)字,從而玩轉(zhuǎn)文字。如果你想更多了解 vector embedding,推薦閱讀 Embeddings: What they are and why they matter 。
(圖片來源: simonwillison.net )
由于有了 vector embedding,只要計算向量之間的距離,大模型就可以知道兩段文字在語義上是否相似,語義搜索就是基于這個原理。
(圖片來源: causewriter.ai )
(圖片來源: datastax.com )
我們要實現(xiàn)園子博文的語義搜索,只要使用一種大模型生成博文內(nèi)容的 vector embedding 存入向量數(shù)據(jù)庫(類似于傳統(tǒng)搜索的建索引),然后搜索時將搜索文字通過大模型生成 vector embedding,通過 vector embedding 在向量數(shù)據(jù)庫中查找語義相近的博文內(nèi)容即可。
第一步準(zhǔn)備工作是選擇一種向量數(shù)據(jù)庫并完成部署,我們選擇的是開源向量數(shù)據(jù)庫 qdrant,由于我們的應(yīng)用都部署在 k8s 集群上,所以我們選擇在 k8s 集群上部署 qdrant,qdrant 提供了 helm chart,k8s 上的部署更便捷了。
先添加 qdrant 的 helm 倉庫
helm repo add qdrant https://qdrant.github.io/qdrant-helm
helm repo update
然后編寫 qdrant-values.yaml 清單文件
config:
service:
enable_tls: false
persistence:
storageClassName: nas-db
size: 50G
snapshotPersistence:
storageClassName: nas-db
size: 50G
resources:
limits:
cpu: 2
memory: 4Gi
requests:
cpu: 1
memory: 1Gi
需要注意的是,這是數(shù)據(jù)庫,需要將數(shù)據(jù)文件保存在 nas 存儲上,上面的 storageClassName 用于指定所使用的 nas 存儲,nas-db 是我們的 k8s 集群之前已經(jīng)部署好的使用阿里云 nas 的 StorageClass。
通過下面的命令進(jìn)行部署
helm upgrade -i qdrant qdrant/qdrant -f qdrant-values.yaml
然后查看部署是否成功
pod/qdrant-0 1/1 Running
service/qdrant ClusterIP 10.99.106.66 6333/TCP,6334/TCP,6335/TCP
service/qdrant-headless ClusterIP None 6333/TCP,6334/TCP,6335/TCP
statefulset.apps/qdrant 1/1 45h
pod 處于 Running 狀態(tài),說明部署成功了。
第一步準(zhǔn)備工作完成了,接下來就是調(diào)用大模型(我們選用的是通義千問)把園子的博文內(nèi)容生成 vector embedding 存入 qdrant 向量數(shù)據(jù)庫,然后就可以實現(xiàn)語義搜索,這將是AI之旅下一篇博文的主要內(nèi)容。
參考資料:
機器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實現(xiàn)對象集合與DataTable的相互轉(zhuǎn)換
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動態(tài)代理的對比分析
閱讀Win11筆記本“自動管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)