構(gòu)建優(yōu)秀LLM應(yīng)用的四大要點(diǎn),你找到哪點(diǎn)?
這些建議可提高LLM應(yīng)用的準(zhǔn)確率,還包含如何選擇合適LLM的注意事項(xiàng)。
譯自4 Key Tips for Building Better LLM-Powered Apps,作者 Adrien Treuille 是 Snowflake 的產(chǎn)品管理總監(jiān)和 Streamlit 主管,負(fù)責(zé)數(shù)據(jù)云的可視化數(shù)據(jù)產(chǎn)品和 Streamlit 計(jì)劃。在加入 Snowflake 之前,Adrien 是 Streamlit 的聯(lián)合創(chuàng)始人和 CEO(2022 年 3 月被 Snowflake 收購(gòu)),。。。
在 OpenAI 發(fā)布其第一個(gè) ChatGPT 模型一年之后,對(duì)生成式 AI 的興趣爆炸式增長(zhǎng)。大語(yǔ)言模型(LLM)驅(qū)動(dòng)的應(yīng)用程序現(xiàn)在成為企業(yè)思考生產(chǎn)力和效率的前沿。用于構(gòu)建生成式 AI應(yīng)用程序的工具和框架也得到了極大的擴(kuò)展。但是人們還是擔(dān)心生成式 AI 輸出的準(zhǔn)確性,開發(fā)人員需要快速學(xué)習(xí)如何處理這些問題,以構(gòu)建強(qiáng)大且值得信賴的應(yīng)用程序。
下面是一些提高 LLM 應(yīng)用程序準(zhǔn)確性的建議和技術(shù),以及選擇合適的 LLM 時(shí)需要考慮的事項(xiàng)。由于每個(gè)問題本身就很復(fù)雜,我們無(wú)法詳盡地討論這些問題,但是可以提供一些入門建議,供您進(jìn)一步探索。
Streamlit 是一個(gè)免費(fèi)的開源框架,用于快速構(gòu)建和分享機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué) Web 應(yīng)用程序。它最近發(fā)布了一份報(bào)告,分析了在Streamlit 社區(qū)云上由超過 13,000 位不同的開發(fā)者構(gòu)建的超過 21,000 個(gè) LLM 應(yīng)用程序。這為下面的部分建議提供了一些迄今開發(fā)者使用的工具和技術(shù)的見解。
例如,向量檢索工具對(duì)于改進(jìn) LLM 驅(qū)動(dòng)應(yīng)用的上下文推薦非常有效,但是我們的調(diào)查發(fā)現(xiàn),如今只有少數(shù)開發(fā)者使用向量功能,這代表著未來(lái)的巨大機(jī)會(huì)。
隨著越來(lái)越多的開發(fā)者利用生成式 AI 的力量來(lái)開發(fā)應(yīng)用程序,我們將開始看到各個(gè)類別和行業(yè)垂直的應(yīng)用程序內(nèi)置基于 AI 的搜索功能,以及會(huì)話和輔助體驗(yàn)。下面是我給開發(fā)者的四個(gè)提示,幫助他們構(gòu)建更好的 LLM 驅(qū)動(dòng)應(yīng)用程序,以便他們?yōu)槠浣M織帶來(lái)真正的顛覆。
采用 Agent 和 Orchestration 構(gòu)建更智能的應(yīng)用程序
像 LangChain 和 LlamaIndex 這樣的編排框架可以通過額外的工具或 Agent 來(lái)補(bǔ)充你的模型,增強(qiáng)你基于 LLM 的應(yīng)用程序的功能。在這種上下文中,可以將 Agent 視為一個(gè)插件系統(tǒng),允許你在應(yīng)用程序中構(gòu)建額外的功能,用自然語(yǔ)言表達(dá)。
這些 Agent 可以組合起來(lái)管理和優(yōu)化 LLM 功能,例如精煉 AI 推理、解決偏見并集成外部數(shù)據(jù)源。這些 Agent 也可以為 LLM 提供一種方法來(lái)反思它是否正在犯錯(cuò)誤以及它必須采取的步驟來(lái)成功完成一個(gè)任務(wù)。
做一個(gè)類比,想象一下開發(fā)者如何編寫一個(gè)提供某種功能的 API 以及描述該 API 的文檔:API 用代碼表達(dá),文檔用自然語(yǔ)言。Agent 的工作方式類似,只不過文檔是為了 LLM 的利益,而不是其他開發(fā)者。所以 LLM 會(huì)查看手頭的任務(wù),查看 Agent 的文檔,并確定該 Agent 是否可以幫助它完成任務(wù)。
這些 Agent 也通過為應(yīng)用程序提供一種方法來(lái)反思自己的錯(cuò)誤并糾正錯(cuò)誤,從而為 LLM 應(yīng)用程序增加健壯性。例如,假設(shè)一個(gè) LLM 應(yīng)用程序編寫一些 SQL 代碼來(lái)執(zhí)行一個(gè)任務(wù),比如在數(shù)據(jù)庫(kù)中檢查庫(kù)存水平,但它在代碼中做了一個(gè)錯(cuò)誤。對(duì)于標(biāo)準(zhǔn)的“樸素” LLM 應(yīng)用程序,這個(gè)錯(cuò)誤就是終點(diǎn)。
然而,如果應(yīng)用程序具有執(zhí)行 SQL 的 Agent,它可以查看錯(cuò)誤并使用 Agent 確定它應(yīng)該做些什么不同的事情,然后糾正錯(cuò)誤。這可能是語(yǔ)法上的一個(gè)小變化,但沒有 Agent,LLM 沒有辦法推理它的錯(cuò)誤。
使用 Vector Magic 和 RAG 來(lái)對(duì)抗幻覺
有時(shí)候你使用的 LLM 可能無(wú)法訪問完成預(yù)定任務(wù)所需的所有信息。可以在提示時(shí)注入額外信息,但大多數(shù) LLM 對(duì)這些提示的大小有限制。為了規(guī)避這些限制,LLM 可能需要使用向量查詢外部數(shù)據(jù)庫(kù),這種技術(shù)稱為檢索增強(qiáng)生成(RAG)。
為了理解 RAG 能為 LLM 應(yīng)用程序做什么,把 LLM 應(yīng)用程序分為三個(gè)不同的級(jí)別會(huì)有所幫助。
- 級(jí)別 1: 該應(yīng)用程序可以使用 LLM 內(nèi)部的知識(shí)生成結(jié)果。
- 級(jí)別 2: 該應(yīng)用程序需要可以在提示時(shí)注入的其他信息。只要你可以在提示限制內(nèi),這相當(dāng)簡(jiǎn)單。
- 級(jí)別 3: LLM 需要訪問外部信息源,比如數(shù)據(jù)庫(kù),來(lái)完成任務(wù)。
這就是 RAG 的用武之地,外部數(shù)據(jù)庫(kù)通常用向量進(jìn)行語(yǔ)義索引,這就是最近你可能經(jīng)常聽說向量數(shù)據(jù)庫(kù)和向量搜索工具的原因。
具有向量數(shù)據(jù)庫(kù)和向量搜索的應(yīng)用程序可以通過對(duì)大規(guī)模非結(jié)構(gòu)化數(shù)據(jù)集(包括文本、圖像、視頻或音頻)進(jìn)行分類來(lái)啟用快速的上下文搜索。這對(duì)于進(jìn)行更快、更準(zhǔn)確的上下文推薦可以說是極其有效的。但向量工具的使用率仍然不高。Streamlit 的調(diào)查發(fā)現(xiàn),只有 20% 的生成 AI 驅(qū)動(dòng)的應(yīng)用程序使用了某種形式的向量技術(shù)。
聊天機(jī)器人為用戶提供了精煉查詢的強(qiáng)大方式
聊天機(jī)器人將生成式 AI 引入主流,但人們對(duì)它是否會(huì)成為有效的界面存在一些懷疑。有人認(rèn)為聊天機(jī)器人給用戶太多自由,而且沒有足夠的上下文來(lái)說明 LLM 應(yīng)用程序的使用方式。其他人因?yàn)檫^去的失敗而感到失望: Clippy 是一個(gè)災(zāi)難,那么為什么今天的聊天機(jī)器人會(huì)成功呢?
顯然,聊天機(jī)器人是否合適,部分取決于應(yīng)用程序的預(yù)期用途。但是聊天機(jī)器人至少有一個(gè)非常有用的品質(zhì)不應(yīng)被忽視:它們通過流暢的人機(jī)界面為用戶提供了一種簡(jiǎn)單直觀的方式來(lái)添加上下文和精煉答案。
要理解這為什么如此強(qiáng)大,想象一下搜索引擎。用戶通常沒有辦法改進(jìn)搜索引擎查詢;如果結(jié)果略有偏差,那么就沒有辦法告訴搜索引擎“再試一次但排除關(guān)于 X 的答案”,例如,或者“給 Y 更多權(quán)重”。這會(huì)是一個(gè)方便和強(qiáng)大的功能,也是聊天機(jī)器人為 LLM 應(yīng)用程序提供的功能。
調(diào)查發(fā)現(xiàn),在 Streamlit 上構(gòu)建的 28% 的生成式 AI 應(yīng)用程序是聊天機(jī)器人,而 72% 的應(yīng)用程序通常不允許會(huì)話式改進(jìn)。另一方面,調(diào)查顯示這些聊天機(jī)器人的每周使用量上升至近 40%,而非聊天機(jī)器人應(yīng)用程序的使用量下降。所以聊天機(jī)器人可能是最終用戶首選的界面。該報(bào)告包括具有不同文本輸入模式的應(yīng)用程序示例,因此您可以查看可能的功能。
考慮 GPT 的替代方案,包括開源 LLM
GPT 的基礎(chǔ)模型仍然是最著名的 LLM,它們非常強(qiáng)大,但在過去一年中出現(xiàn)了更多選擇,其中一些可能更適合您的應(yīng)用程序。需要考慮的因素包括 LLM 所需的知識(shí)范圍、LLM 的大小、您的培訓(xùn)需求和預(yù)算,以及 LLM 是否開源或?qū)S惺欠裰匾?。與技術(shù)中的許多事物一樣,存在權(quán)衡取舍。
如果您正在為內(nèi)部使用構(gòu)建生成式 AI 應(yīng)用程序,則可能需要在內(nèi)部公司數(shù)據(jù)上訓(xùn)練該 LLM。對(duì)于大多數(shù)企業(yè)來(lái)說,由于安全原因,與公共 LLM 共享敏感數(shù)據(jù)是不可能的,因此許多公司在其現(xiàn)有的云安全邊界內(nèi)運(yùn)行 LLM。這通常會(huì)導(dǎo)致他們轉(zhuǎn)向較小的 LLM,例如AI21和Reka。
非常大的 LLM 也往往具有更高的延遲,并且由于所需的計(jì)算資源,運(yùn)行成本通常更高。如果應(yīng)用程序執(zhí)行的任務(wù)相對(duì)簡(jiǎn)單,例如翻譯文本或總結(jié)文檔,則較小的 LLM 可能效果很好,使用和操作的成本也要低得多。
您也可能有推薦開源 LLM 的理由,比如 Meta 的 LLaMA,而不是來(lái)自 OpenAI、Anthropic 或 Cohere 等公司的專有 LLM,在這些公司,源代碼、訓(xùn)練數(shù)據(jù)、權(quán)重或其他模型細(xì)節(jié)通常不會(huì)公開披露。開源 LLM 需要自我托管或通過托管提供商進(jìn)行推理,但源代碼和其他模型詳細(xì)信息更容易獲得。
立即開始使用生成式 AI
生成式 AI 仍然是一個(gè)快速發(fā)展的領(lǐng)域,但所需的工具和技術(shù)正在迅速進(jìn)步,今天就有許多選擇可以開始。抓住這一機(jī)遇的開發(fā)者可以為其組織帶來(lái)巨大價(jià)值,將 AI 應(yīng)用程序作為日常業(yè)務(wù)操作和任務(wù)的常規(guī)功能。隨著生成式 AI 繼續(xù)重塑組織中的角色和責(zé)任,深入研究并成為 LLM 驅(qū)動(dòng)應(yīng)用程序?qū)<业拈_發(fā)者將會(huì)脫穎而出,上述建議應(yīng)該可以幫助您走上正軌開始。