使用谷歌Gemini系列l(wèi)lm 構(gòu)建一個(gè)人工智能助手
本項(xiàng)目最適合GenAI初學(xué)者和Python初學(xué)者-中級(jí)
這個(gè)項(xiàng)目包括哪些內(nèi)容?在谷歌Cloud Kaggle 5天密集GenAI課程中討論的幾個(gè)關(guān)鍵GenAI概念:嵌入,檢索增強(qiáng)生成(RAG),矢量數(shù)據(jù)庫(kù),少量提示,提示緩存等。
項(xiàng)目的目標(biāo)
我之前開(kāi)發(fā)的一個(gè)(假的)植物商店的人工智能助手,名為“種植!”
設(shè)置
該項(xiàng)目使用谷歌Gemini系列l(wèi)lm,因此您需要通過(guò)AI Studio生成API密鑰。您可以在文檔中找到詳細(xì)的說(shuō)明。
1:智能FAQ (RAG)
項(xiàng)目的這一部分涉及使用檢索增強(qiáng)生成(RAG)向LLM提供額外的上下文(內(nèi)部策略文檔),以幫助準(zhǔn)確地回答客戶(hù)的查詢(xún)。
1.1數(shù)據(jù)(生成一些虛擬數(shù)據(jù))
我的項(xiàng)目數(shù)據(jù)包括:
工廠(chǎng)政策
常見(jiàn)問(wèn)題示例;這讓我們可以從FAQ提示緩存開(kāi)始
1.2創(chuàng)建矢量數(shù)據(jù)庫(kù)
啟動(dòng)一個(gè)矢量數(shù)據(jù)庫(kù)(例如ChromaDB)并分配你的嵌入函數(shù);這基本上是管理和調(diào)用嵌入模型(例如,從谷歌Gemini),當(dāng)你添加/查詢(xún)數(shù)據(jù)庫(kù)。
1.3在RAG bot中使用vectorDB
下圖解釋了這個(gè)項(xiàng)目中使用的RAG和提示緩存過(guò)程;在適當(dāng)?shù)牡胤街赜妙?lèi)似查詢(xún)的答案。
1.4圖解釋道:
首先,用戶(hù)詢(xún)問(wèn)他們的查詢(xún),例如:“我可以退款嗎?”
然后,該模型檢查之前是否問(wèn)過(guò)語(yǔ)義相似的問(wèn)題
這是通過(guò)將查詢(xún)轉(zhuǎn)換為嵌入來(lái)完成的,該嵌入在向量數(shù)據(jù)庫(kù)中搜索類(lèi)似查詢(xún)(使用它們之間的距離測(cè)量)。
這決定了接下來(lái)觸發(fā)哪條路由(或桶)!
桶A:發(fā)現(xiàn)非常相似的查詢(xún),相似度得分<= 0.75,因此返回答案,無(wú)需通過(guò)所需的LLM進(jìn)行任何處理。
桶B:有些類(lèi)似的查詢(xún)/查詢(xún)發(fā)現(xiàn);相似度評(píng)分> 0.75 ~ <=0.9;因此,返回前X個(gè)類(lèi)似的問(wèn)題,并從更大的文檔池(前K個(gè)相關(guān)文檔)中檢索數(shù)據(jù)- LLM在答案生成中使用這些(少量)
桶C:沒(méi)有找到相似的查詢(xún)(>0.9相似度得分),然后從更大的文檔池(前K個(gè)相關(guān)文檔)檢索數(shù)據(jù)
任何新生成的答案都被添加到提示緩存中
應(yīng)用安全防護(hù)和格式化(例如刪除錯(cuò)別字)來(lái)避免向提示緩存添加不相關(guān)或?qū)懙貌缓玫牟樵?xún)
如果在文檔中沒(méi)有找到相關(guān)信息,告訴用戶(hù)我們目前無(wú)法回答他們的查詢(xún)
提示緩存“命中”計(jì)數(shù)更新時(shí),桶A或B答案的位置;這使得FAQ問(wèn)題可以根據(jù)提示緩存中的“點(diǎn)擊”次數(shù)進(jìn)行排序;在聊天機(jī)器人界面中,前4名以建議的形式顯示。
1.5壓力梯度界面
最后,使用Gradio創(chuàng)建一個(gè)不錯(cuò)的聊天機(jī)器人界面
這提供了一種與工具交互的簡(jiǎn)單機(jī)制!
2:數(shù)據(jù)庫(kù)智能查詢(xún)
該工具包括在本地?cái)?shù)據(jù)庫(kù)上調(diào)用函數(shù);以獲取有關(guān)植物及植物產(chǎn)品的資料。
2.1創(chuàng)建sqlite數(shù)據(jù)庫(kù)
表的創(chuàng)建:
植物有列:plant_id, plant_name, scientific_name, price, category, light_requirement, water_requirement, humidity_requirement, care_level, description
Plant_products具有列:product_id, product_name, description, application_plants, symptoms_addressing
2.2編寫(xiě)使LLM能夠與這些交互的函數(shù)
list_tables() -檢索數(shù)據(jù)庫(kù)中所有表的名稱(chēng)
descripbe_table—查找表模式,返回列和相應(yīng)數(shù)據(jù)類(lèi)型的列表
execute_query—執(zhí)行SQL語(yǔ)句,返回結(jié)果
2.3為L(zhǎng)LM提供Tools功能
模型現(xiàn)在可以使用這些函數(shù)(工具)來(lái)回答用戶(hù)的查詢(xún),例如:
你們賣(mài)的最便宜的植物是什么?
ZZ工廠(chǎng)對(duì)光和水的要求是什么?
你們有價(jià)格低于15英鎊的Pothos嗎?
描述和平百合及其對(duì)光的要求
這個(gè)示例“最便宜的植物是什么?”返回以下內(nèi)容:
總的來(lái)說(shuō),數(shù)據(jù)庫(kù)查詢(xún)功能非常強(qiáng)大,但是在查看真實(shí)場(chǎng)景時(shí)需要仔細(xì)考慮安全性!
潛在限制(工具1:智能常見(jiàn)問(wèn)題解答)
數(shù)據(jù)質(zhì)量和覆蓋范圍:不完整或過(guò)時(shí)的政策可能會(huì)限制機(jī)器人準(zhǔn)確回答更廣泛客戶(hù)查詢(xún)的能力。
嵌入模型語(yǔ)義理解:雖然有幫助,但嵌入模型對(duì)語(yǔ)言的解釋并不完美,可能會(huì)錯(cuò)過(guò)措辭或上下文中的細(xì)微差異,從而導(dǎo)致錯(cuò)誤的相似性匹配。
固定的相似性閾值:當(dāng)前用于識(shí)別相似查詢(xún)的硬編碼閾值可能過(guò)于嚴(yán)格或?qū)捤桑赡軐?dǎo)致將查詢(xún)路由到LLM或提示緩存的次優(yōu)。
RAG檢索相關(guān)性:從矢量數(shù)據(jù)庫(kù)中檢索到的頂部文檔可能并不總是包含回答用戶(hù)特定問(wèn)題所需的最精確信息,即使最初的語(yǔ)義搜索很好。
隨著時(shí)間的推移,提示緩存準(zhǔn)確性:由于策略更改,緩存的答案可能會(huì)過(guò)時(shí),并且不相關(guān)或不正確條目的可能性可能會(huì)降低將來(lái)對(duì)類(lèi)似查詢(xún)的響應(yīng)的質(zhì)量。
潛在的限制(工具2:數(shù)據(jù)庫(kù)查詢(xún))
數(shù)據(jù)依賴(lài)性和查詢(xún)準(zhǔn)確性:該工具的準(zhǔn)確性在很大程度上依賴(lài)于結(jié)構(gòu)良好的數(shù)據(jù)庫(kù)信息和LLM將自然語(yǔ)言正確轉(zhuǎn)換為精確的SQL查詢(xún)的能力。任何一個(gè)錯(cuò)誤都可能導(dǎo)致不準(zhǔn)確的結(jié)果。
有限的隱式關(guān)系理解:該工具可能難以處理需要理解plant和plant_products表之間的間接連接的用戶(hù)查詢(xún),而不是明確定義的關(guān)系。
下一個(gè)步驟:
改進(jìn)智能常見(jiàn)問(wèn)題解答(附加功能)
在常見(jiàn)問(wèn)題解答中獲取反饋;無(wú)用的查詢(xún)可能會(huì)降低“命中”分?jǐn)?shù)
比較長(zhǎng)上下文/上下文學(xué)習(xí)與當(dāng)前的RAG方法
將工具組合成Agent
代理編排決定如何利用所有可用的工具處理查詢(xún)
例如,它可以回答關(guān)于商店的一般問(wèn)題(工具一-智能常見(jiàn)問(wèn)題),也可以回答與工廠(chǎng)庫(kù)存產(chǎn)品相關(guān)的問(wèn)題(工具二-智能數(shù)據(jù)庫(kù)查詢(xún))。
添加第三個(gè)工具:植物健康助手
圖片上傳器:用戶(hù)上傳他們?cè)愀獾闹参锏膱D片
植物識(shí)別和癥狀檢測(cè):Gemini API可識(shí)別植物種類(lèi)并描述任何可見(jiàn)癥狀
如果沒(méi)有可見(jiàn)的癥狀:提示用戶(hù)獲取更多信息/從谷歌搜索中提供一般潛在問(wèn)題
(代理擴(kuò)展)植物健康信息檢索:谷歌搜索API檢索常見(jiàn)疾病和已識(shí)別植物和癥狀的治療信息
(代理擴(kuò)展)天氣數(shù)據(jù)集成:谷歌天氣API提供當(dāng)前的天氣條件,這些天氣條件被納入植物健康分析
向用戶(hù)提供治療建議和潛在原因解釋?zhuān)⑾蛴脩?hù)推薦任何相關(guān)產(chǎn)品
第四個(gè)工具:購(gòu)物助手(應(yīng)用集成)
提供購(gòu)物協(xié)助,例如在訂貨前討論各種選擇,以及創(chuàng)建/管理賬戶(hù)
本文編譯自hackster.io





