美國(guó)留學(xué)選擇什么專業(yè)好?留學(xué)美國(guó)熱門專業(yè)推薦
2019-06-26
更新時(shí)間:2024-08-06 13:46作者:小樂
本文是對(duì)高基數(shù)情況下的基準(zhǔn)查詢分析一文進(jìn)行翻譯和重組的。描述了基于反饋的GPT自學(xué)習(xí)進(jìn)化的基本概念,以及基于LangSmith的實(shí)踐和操作。本系列合集,點(diǎn)擊“鏈接”即可查看
在大語(yǔ)言模型(LLM)的應(yīng)用中,有很多場(chǎng)景需要以結(jié)構(gòu)化的方式呈現(xiàn)數(shù)據(jù),其中信息抽取和查詢分析是兩個(gè)典型的例子。我們最近強(qiáng)調(diào)了通過更新文檔和專用代碼存儲(chǔ)庫(kù)進(jìn)行信息提取的重要性。對(duì)于查詢分析,我們還更新了相關(guān)文檔。在這些場(chǎng)景中,數(shù)據(jù)字段可能包括字符串、布爾值、整數(shù)等。在這些類型中,處理高基數(shù)分類值(即枚舉類型)是最具挑戰(zhàn)性的。
所謂“高基數(shù)分類值”是指那些必須從有限數(shù)量的選項(xiàng)中選擇的值。這些值不能任意指定,而必須來自預(yù)定義的集合。當(dāng)這個(gè)集合中有效值的數(shù)量非常多時(shí),我們稱之為“高基數(shù)”。處理這些值之所以困難是因?yàn)長(zhǎng)LM本身并不知道這些可能的值是什么。因此,我們需要向LLM 提供有關(guān)這些可能值的信息。如果忽略這一點(diǎn),LLM可能會(huì)自行彌補(bǔ)這些值。對(duì)于只有幾個(gè)可能值的情況,我們可以通過在提示中顯式列出這些值來解決這個(gè)問題。然而,當(dāng)可能的值非常大時(shí),問題就變得復(fù)雜了。隨著可能值數(shù)量的增加,LLM正確選擇值的難度也隨之增加。一方面,如果可能的值太多,它們可能不適合法學(xué)碩士的上下文窗口。另一方面,即使所有可能的值都能適合上下文,在處理大量上下文時(shí),將它們?nèi)堪趦?nèi)也會(huì)導(dǎo)致處理速度變慢、成本增加、LLM 推理能力降低。我們最近深入研究了查詢分析,并修改了文檔以包含有關(guān)如何處理高基數(shù)類別值的頁(yè)面。在本博客中,我們將深入研究幾種實(shí)驗(yàn)方法并提供它們的性能基準(zhǔn)測(cè)試結(jié)果。有關(guān)結(jié)果的概述,請(qǐng)?jiān)L問LangSmithhttps://smith.langchain.com/public/8c0a4c25-426d-4582-96fc-d7def170be76/d ref=blog.langchain.dev。接下來我們?cè)敿?xì)介紹一下:
數(shù)據(jù)集概述詳細(xì)的數(shù)據(jù)集可以在這里查看:https://smith.langchain.com/public/8c0a4c25-426d-4582-96fc-d7def170be76/d ref=blog.langchain.dev。為了模擬這個(gè)問題,我們假設(shè)一個(gè)場(chǎng)景:我們想要查找某個(gè)作者關(guān)于外星人的書籍。在這種情況下,作者字段是一個(gè)高基數(shù)分類變量——。有很多可能的值,但它們應(yīng)該是特定的有效作者姓名。為了測(cè)試這一點(diǎn),我們創(chuàng)建了一個(gè)包含作者姓名和常見別名的數(shù)據(jù)集。例如,“Harry Chase”可能是“Harrison Chase”的別名。我們希望智能系統(tǒng)能夠處理這樣的類名。有了這個(gè)名稱和別名列表,我們又生成了10,000 個(gè)隨機(jī)名稱。需要注意的是,10000這個(gè)基數(shù)并不算太高。對(duì)于企業(yè)級(jí)系統(tǒng),基數(shù)可能是數(shù)百萬。使用這個(gè)數(shù)據(jù)集,我們提出一個(gè)問題:“哈利·蔡斯有哪些關(guān)于外星人的書?”我們的查詢分析系統(tǒng)應(yīng)該能夠?qū)⑦@個(gè)問題解析為包含兩個(gè)字段的結(jié)構(gòu)化格式:主題和作者。在此示例中,預(yù)期輸出為{"topic" : "aliens", "author" : "Harrison Chase"}。我們期望系統(tǒng)識(shí)別出沒有名為Harry Chase 的作者,但Harrison Chase 可能就是用戶的意思。通過此設(shè)置,我們可以針對(duì)我們創(chuàng)建的別名數(shù)據(jù)集進(jìn)行測(cè)試,以檢查它們是否正確映射到真實(shí)姓名。同時(shí),我們還記錄查詢的延遲和成本。這種查詢分析系統(tǒng)通常用于搜索,所以我們非常關(guān)心這兩個(gè)指標(biāo)。出于這個(gè)原因,我們還將所有方法限制為只能調(diào)用一次LLM。我們可能會(huì)在以后的文章中使用多個(gè)LLM 調(diào)用對(duì)方法進(jìn)行基準(zhǔn)測(cè)試。接下來,我們將介紹幾種不同的方法及其性能。
完整的結(jié)果可以在LangSmith 中查看,并且可以在此處找到重現(xiàn)這些結(jié)果的代碼。
基線測(cè)試首先,我們對(duì)LLM進(jìn)行了基線測(cè)試,即直接要求LLM進(jìn)行查詢分析,而不提供任何有效的姓名信息。正如所料,沒有一個(gè)問題得到正確回答。這是因?yàn)槲覀冇幸鈽?gòu)建了一個(gè)需要通過別名查詢作者的數(shù)據(jù)集。
上下文填充法在這種方法中,我們將所有10,000個(gè)合法作者姓名放入提示中,并要求LLM在進(jìn)行查詢分析時(shí)記住這些是合法作者姓名。由于上下文窗口的限制,某些模型(例如GPT-3.5)根本無法執(zhí)行此任務(wù)。對(duì)于其他具有較長(zhǎng)上下文窗口的模型,他們也很難準(zhǔn)確選擇正確的名稱。 GPT-4 僅在26% 的情況下選擇了正確的名稱。它最常見的錯(cuò)誤是提取名稱但不更正它們。這種方法不僅速度慢,而且成本高,平均需要5 秒才能完成,總成本為8.44 美元。
Pre-LLM過濾方法我們測(cè)試的下一個(gè)方法是在將可能值列表傳遞給LLM之前對(duì)其進(jìn)行過濾。這樣做的好處是,它只將可能名稱的子集傳遞給LLM,因此LLM 需要考慮的名稱要少得多,希望能夠讓它更快、更便宜、更準(zhǔn)確地完成查詢分析。但這也增加了一種新的潛在故障模式—— 如果初始過濾出錯(cuò)怎么辦?
基于嵌入的過濾我們最初使用的過濾方法是嵌入方法,并選擇與查詢最相似的10 個(gè)名稱。請(qǐng)注意,我們將整個(gè)查詢與名稱進(jìn)行比較,這不是理想的比較!我們發(fā)現(xiàn),使用這種方法,GPT-3.5 能夠正確處理57% 的情況。這種方法比以前的方法更快、更便宜,平均只需要0.76 秒即可完成,總成本僅為0.002 美元。
基于NGram 相似度的過濾方法我們使用的第二種過濾方法是對(duì)所有有效名稱的3-gram 字符序列進(jìn)行TF-IDF 向量化,并使用向量化的有效名稱和向量化的用戶輸入相似度之間的余弦來選擇最相關(guān)的10 個(gè)有效名稱添加到模型提示。另請(qǐng)注意,我們將整個(gè)查詢與名稱進(jìn)行比較,這不是理想的比較!我們發(fā)現(xiàn)使用這種方法,GPT-3.5 能夠正確處理65% 的情況。這種方法也比以前的方法更快、更便宜,平均只需要0.57 秒即可完成,總成本僅為0.002 美元。
LLM 后選擇方法我們測(cè)試的最后一種方法是在LLM 完成其初步查詢分析后嘗試糾正任何錯(cuò)誤。我們首先對(duì)用戶輸入進(jìn)行查詢分析,而沒有在提示中提供有關(guān)有效作者姓名的任何信息。這與我們最初所做的基線測(cè)試相同。然后,我們進(jìn)行了后續(xù)步驟,獲取作者字段中的姓名并找到最相似的有效姓名。
基于嵌入相似性的選擇方法首先,我們使用嵌入方法執(zhí)行相似性檢查。我們發(fā)現(xiàn),使用這種方法,GPT-3.5 能夠正確處理83% 的情況。這種方法比以前的方法更快、更便宜,平均只需要0.66 秒即可完成,總成本僅為0.001 美元。
基于NGram相似度的選擇方法最后,我們嘗試使用3-gram向量化器進(jìn)行相似度檢查。我們發(fā)現(xiàn),使用這種方法,GPT-3.5 能夠正確處理74% 的情況。這種方法也比以前的方法更快、更便宜,平均只需要0.48 秒即可完成,總成本僅為0.001 美元。
結(jié)論我們對(duì)處理高基數(shù)分類值的查詢分析方法進(jìn)行了各種基準(zhǔn)測(cè)試。我們限制自己只進(jìn)行一次LLM 調(diào)用,以模擬現(xiàn)實(shí)世界的延遲限制。我們發(fā)現(xiàn),使用LLM 后,基于嵌入相似性的選擇方法表現(xiàn)最佳。還有其他方法值得進(jìn)一步測(cè)試。特別是,有許多不同的方法可以在LLM 調(diào)用之前或之后找到最相似的分類值。此外,該數(shù)據(jù)集中的類別基礎(chǔ)并不像許多企業(yè)系統(tǒng)所面臨的那么高。該數(shù)據(jù)集大約有10,000 個(gè)值,而許多現(xiàn)實(shí)世界的系統(tǒng)可能需要處理數(shù)百萬個(gè)基數(shù)。因此,對(duì)更高基數(shù)數(shù)據(jù)進(jìn)行基準(zhǔn)測(cè)試將非常有價(jià)值。