無盡的上下文
LLM對自然語言的理解和掌握在知識內(nèi)容的解讀和總結(jié)方面提供了強(qiáng)大的能力。
但是由于訓(xùn)練數(shù)據(jù)本身來自于公共領(lǐng)域,也就注定了無法在一些小眾或者私有的領(lǐng)域能夠足夠的好的應(yīng)答。
因此如何給LLM 提供足夠多的信息上下文,就是如今的LLM AI應(yīng)用可以充分發(fā)揮能力的地方了。
我們默認(rèn)可以想到的是在提示詞中提供足夠的上下文信息,然而像OpenAI的模型總是有一個(gè)Max Tokens 的限制,也就意味著不可能一次性將所有的相關(guān)信息都可以放在提示詞中,即便是最大的gpt-4-32k,目前也只有32,768 tokens,雖然看起來挺多的,但是相比較動(dòng)則成百上千頁的內(nèi)部文檔,或者專業(yè)資料,也不大可能將所有的內(nèi)容都塞進(jìn)prompt。
即便說不遠(yuǎn)未來MaxTokens的上限提升到了可以輕輕松松塞下一本書了,還需要考慮的就是成本問題,以目前GPT4 的價(jià)格,0.06美元/1K tokens(32K context),光是把Prompt 塞滿,不指望做出回復(fù),一次調(diào)用成本就 1.97美元了。所以在Prompt中放置大量的信息怎么算都是不劃算的。
通常情況下,我們回答一個(gè)問題,并不總是需要采用所有的信息的,例如講某本書的某個(gè)知識點(diǎn),基本不會(huì)說要一次性將全書翻一遍,然后才回答問題。除非已經(jīng)將書中的內(nèi)容記得滾瓜爛熟了,否則通常都是根據(jù)書中關(guān)于這個(gè)知識點(diǎn)相關(guān)的章節(jié)或者段落,就可以得到對應(yīng)的答案了。
這種方法也常常應(yīng)用于搜索領(lǐng)域,人們所需要的答案往往僅僅在問題所涉及的很小的范圍之內(nèi)。搜索引擎一直在做的事情就是找到最符合你預(yù)期的相關(guān)結(jié)果。對應(yīng)的結(jié)果就是,我們總是能在搜索結(jié)果的前兩頁,甚至前兩個(gè)條目中獲得答案。
所以解決LLM有限Prompt下的上下文的基本方法也是這樣,提前根據(jù)問題搜索找到相關(guān)的內(nèi)容信息,再將內(nèi)容信息和問題都是提供給LLM,讓LLM做出對應(yīng)的總結(jié)和回答。
找到有用的信息
借助于 Native Function的功能,我們可以通過一些簡單的方法,例如關(guān)鍵詞等,匹配到一些相關(guān)信息,也可以對接搜索引擎(全網(wǎng)的或者私域的),獲取一些的相關(guān)的訊息。
但是傳統(tǒng)的方法還是傳統(tǒng)的問題,就比如搜索引擎所采用的索引方法,也都是基于關(guān)鍵詞,能匹配上的自然找得到,匹配不上的就很難說了。尤其是有些專用詞匯無法描述清楚的時(shí)候,還有一些比較多的同義詞的時(shí)候,都很難得到合適的答案。
這里就需要應(yīng)用到LLM另外一個(gè)神器,Embedding。
簡單地說,Embedding可以將文本進(jìn)行一些轉(zhuǎn)化高維向量,作為向量就有了計(jì)算的可能性,就可以的進(jìn)行相似性和差異性的判斷。只需要計(jì)算一下兩段文本之間的距離,就可以判斷是否具有相似性,這種相似性是基于語義的,也就完全突破了字面上的相似性。如此以來,將所有的信息分段或者創(chuàng)建摘要進(jìn)行轉(zhuǎn)化,將問題和所有信息進(jìn)行匹配,找到距離最近的或者符合距離需求的,就都是相關(guān)的信息了。這樣就可以無須關(guān)心關(guān)鍵詞是否匹配,不用煞費(fèi)苦心的提取相關(guān)關(guān)鍵詞了。
不過也有一個(gè)問題需要注意的,那就是這種向量的映射方式?jīng)Q定了相關(guān)內(nèi)容查找的準(zhǔn)確性是由LLM決定的,也并不是所有的時(shí)候都能找到最合適的內(nèi)容。了解LLM的脾性也是使用它的重要一環(huán)。
了解了基本原理之后,后面就可以看看Semantic Kernel在這方面做了什么。文章來源:http://www.zghlxwxcb.cn/news/detail-411804.html
參考資料:文章來源地址http://www.zghlxwxcb.cn/news/detail-411804.html
- https://learn.microsoft.com/en-us/semantic-kernel/concepts-sk/memories
- https://platform.openai.com/docs/models/overview
- https://openai.com/pricing
- https://learn.microsoft.com/en-us/semantic-kernel/concepts-ai/embeddings
到了這里,關(guān)于Semantic Kernel 入門系列:?突破提示詞的限制的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!