? ? ?大家是否有這樣的煩惱,每天會議或待辦事項眾多这刷,為了把這些待辦事項記住我們需要采用日歷這些軟件來幫我們管理或通知事項婉烟。那么問題來了,不同的人通知的不同事項寫得五花八門崭歧,有沒有辦法把別人發(fā)過來的通知自動解析隅很,自動推送到自己手機上呢?
?????? 答案是有的率碾,我們采用大模型進行文本解析叔营,然后結(jié)合檢索增強生成(RAG)對LLM進行準(zhǔn)確性提升,從而達到使用簡單所宰、準(zhǔn)確性逐漸提高的目的绒尊。下面我將介紹如何完全基于免費公有云進行全流程開發(fā)。
一仔粥、 web和后臺程序
Cloudflare Pages是Cloudflare公司推出的一個靜態(tài)網(wǎng)站托管服務(wù),專門為開發(fā)者提供構(gòu)建和部署現(xiàn)代化婴谱、高性能網(wǎng)站的解決方案。隨后在pages引入了funtion躯泰,至此也支持workers這樣的應(yīng)用谭羔,成為了一個前、后臺應(yīng)用都能實現(xiàn)的網(wǎng)站平臺麦向。
在使用的過程中我發(fā)現(xiàn)一個很厲害的功能瘟裸,在本地調(diào)試時也能自動引用大模型生成能力。
二诵竭、大語言模型
Cloudflare 的Workers AI支持30多種20B以下模型话告,每天有足夠的調(diào)用量,以學(xué)習(xí)為目的基本夠用卵慰。根據(jù)提供的文本沙郭,LLM根據(jù)要求返回JSON格式的會議主題、開始時間裳朋、結(jié)束時間病线、會議地點等。模型采用@cf/qwen/qwen1.5-14b-chat-awq鲤嫡,提示詞如下:
? let messages = [
? ? {? ? ? role: 'system',? ? ? content: '你是一個AI日程安排助手氧苍,請根據(jù)我提供的內(nèi)容提取日程信息,并用JSON格式返回泛范, 格式為 {"SUMMARY":"日程主題让虐、簡介、總結(jié)或概括", "DTSTART":"日程開始時間罢荡,格式為:20240525T063000","DTEND":"日程結(jié)束時間赡突,格式為:20240525T063000","DESCRIPTION","日程詳細(xì)描述信息","LOCATION":"會議地點"}' },
? ? {? ? role: 'system',? ? ?content:? '只回復(fù)json格式的內(nèi)容即可,今天的日期是:' + getTodayDate() + ';如果沒有說明會議結(jié)束時間或會議時長,默認(rèn)為開始時間加1小時;如果沒有說明會議具體幾點開始則會議從當(dāng)天0點開始24點結(jié)束,dtstart和dtend只能按要求的日期格式回答,采用東八區(qū)時間对扶,不要采用,無法提取的內(nèi)容不要回復(fù)該字段'? }
? ]
三、 RAG
引入檢索增強生成(RAG)目的時為了提升日程解析的準(zhǔn)確性惭缰,當(dāng)你使用越多的時候浪南,系統(tǒng)會自動把你之前修正過的對話作為上下文提供給llm,從而快速提升模型輸出的準(zhǔn)確性漱受,例如下圖1络凿,第一次問會議地點識別為“1會議室”,但是我們幫它修正為“第一會議室”昂羡,后續(xù)再問“1會”的時候LLM就會自動識別為“第一會議室”絮记,這就是RAG能夠減輕幻覺,提升準(zhǔn)確性的好處虐先。
RAG第一步是量化怨愤,直接采用Workers AI的量化模型,向量數(shù)據(jù)庫采用https://qdrant.tech/免費服務(wù)蛹批,向量數(shù)據(jù)庫是一種專門設(shè)計用于高效存儲和查詢高維向量的數(shù)據(jù)庫撰洗。在傳統(tǒng)的OLTP和OLAP數(shù)據(jù)庫中數(shù)據(jù)以行和列的方式組織(這些被稱為表),查詢是基于這些列中的值進行的腐芍。然而差导,在某些應(yīng)用中,如圖像識別猪勇、自然語言處理和推薦系統(tǒng)柿汛,數(shù)據(jù)通常以高維空間中的向量形式表示,這些向量加上一個ID和有效負(fù)載埠对,就是我們存儲在類似于Qdrant的向量數(shù)據(jù)庫中的元素。
四、 ICS文件保存
日歷文件以ICS作為后綴弱判,采用Cloudflare R2作為文件存儲空間襟沮。