做麻將網(wǎng)站珠海seo推廣
更好的效果,更低的價格,聽起來是不是像夢囈?
限制
首先,讓我們來介紹一個詞:RAG。
簡單來說,RAG(Retrieval-Augmented Generation,檢索增強生成) 的工作原理是將大型文檔分割成多個小段落或片段。主要原因是,大語言模型的上下文窗口長度有限,無法一次處理超過上下文窗口長度的信息。
當我提出一個問題時,RAG 技術(shù)可以先從這些片段中檢索相關(guān)信息,根據(jù)我提問的內(nèi)容與這些片段的相似度,找出若干個與問題相關(guān)的片段,組合成一個上下文,然后將這些信息,連同我的提問一起輸入到大語言模型中,然后期待大語言模型「更為精準」的回答。
然而,我們需要考慮一些潛在的局限性。對于一個足夠長的文檔和一個非常復(fù)雜的問題,單靠這幾個(僅僅是疑似相關(guān)的)片段可能是不夠的。真正的答案,也許根本就不在里面。
我們之前討論了很多關(guān)于私有知識庫。例如 Quivr, Elephas, GPTs, Obsidian Copilot …… 用久了你會發(fā)現(xiàn),私有知識庫提供的回答結(jié)果與通過數(shù)據(jù)微調(diào)模型獲得的結(jié)果可能差異很大 —— 微調(diào)后的模型往往能夠依據(jù)私有數(shù)據(jù)回答非常復(fù)雜的問題,而 RAG 這種簡單粗暴的拼接方式,很多時候得到的答案并不理想。
圖譜
這些問題就催生了 GraphRAG。GraphRAG 是一種創(chuàng)新的技術(shù),它結(jié)合了知識圖譜結(jié)構(gòu)和 RAG 方法,旨在解決傳統(tǒng) RAG 方法的局限性。
這是微軟研發(fā)的一個創(chuàng)新產(chǎn)品,它代表了 RAG 技術(shù)的最新進展。微軟還發(fā)布了相關(guān)的學(xué)術(shù)論文,詳細闡述了 GraphRAG 的理論基礎(chǔ)和技術(shù)實現(xiàn)。
那么,這里的 "Graph(圖)" 究竟是什么意思呢?在 GraphRAG 的主頁上,你會看到一個復(fù)雜的圖譜。這個圖譜不僅僅是一個簡單的示意圖,它代表了知識的結(jié)構(gòu)化表示。在這個圖譜中,每個節(jié)點可能代表一個概念或?qū)嶓w,而連接這些節(jié)點的邊則表示它們之間的關(guān)系。
假設(shè)圖譜中有一個節(jié)點是「老虎」,另一個是「兔子」,老虎與兔子之間連一條線,上面寫著「吃」,代表二者的關(guān)聯(lián)是「老虎吃兔子」。當然,這只是一個不夠嚴謹?shù)谋扔鳌?/p>
有了這樣的圖譜,為什么要將其與剛才提到的 RAG 結(jié)合呢?因為之前提到的「滿地找碎片」的傳統(tǒng) RAG 方式實際上效果不佳,所以我們希望將這些概念之間的復(fù)雜關(guān)系展現(xiàn)出來。在查詢時,不再是大海撈針去找「可能相關(guān)」的信息碎片,而是根據(jù)圖譜中已經(jīng)掌握的關(guān)聯(lián),提取一整串相連的信息,讓大語言模型來一并處理。
這里是 GraphRAG 的 GitHub 網(wǎng)址。它在 GitHub 上的受歡迎程度如何?已經(jīng)獲得超過一萬一千顆星。
對于一個項目來說,這是一個非常好的成績,我做夢都希望自己的項目能達到這樣的水平??磥磉€得繼續(xù)努力。
特點
我們來看看 GraphRAG 的特點。它融合了人工智能的兩大流派,一個是深度學(xué)習(xí),另一個是知識圖譜。
曾經(jīng)這兩個流派是對立的。后來發(fā)現(xiàn)對立干啥啊?
你現(xiàn)在用深度學(xué)習(xí)直接回答效果不好,但如果結(jié)合圖譜,效果就會強很多。
另一方面,構(gòu)建知識圖譜原來得人工根據(jù)規(guī)則去抽取其中的實體和關(guān)聯(lián),那是一個砸錢堆人力的活計。后來發(fā)現(xiàn)用上深度學(xué)習(xí)可以有效提升實體抽取效率。特別是有了大語言模型,人們發(fā)現(xiàn)抽取實體和關(guān)聯(lián)變得更加準確、簡單且低成本。所以,二者的融合,是大勢所趨。
那么融合之后的 GraphRAG 擅長什么呢?它能夠把實體之間的復(fù)雜關(guān)系和上下文串聯(lián)起來。
正如剛才我們提到的這個過程,它可以連接多個信息點進行復(fù)雜查詢。這種查詢不是簡單地提取一部分信息就能完成的。原先根據(jù)相似度找出來的這些信息碎片,可能根本不足以支撐問題解答。但現(xiàn)在,根據(jù)實際關(guān)聯(lián)獲取相關(guān)信息,效果要好很多。
另外 GraphRAG 由于對數(shù)據(jù)集有了整體的刻畫,因此概念語義信息得到了充分的表達。
兩個特點相夾持,使得 GraphRAG 的表現(xiàn)有了非常顯著的改進。后面的例子里,你也能觀察到這點。
局限
不過,這個技術(shù)也不是那么完美。它遇到的問題,最為顯著的就是一個字 —— 貴。
官方的例子提到一本書,稍后我們會看到,實體書篇幅大概 200 頁左右。把它圖譜化 RAG ,需要花多少錢?
11 美金。
有的人覺得這太貴了,為了索引一本電子書耗費的錢都快趕上一本實體書了。
那么我們有沒有解決辦法呢?我們需要分析。
GraphRAG 實施成本為什么會那么高?因為它使用的是 GPT-4 Turob Preview 模型。這個模型 token 成本較高,由于在圖譜構(gòu)建過程中,需要反復(fù)調(diào)用它,因此 GraphRAG 成本居高不下。
既然找到了原因,我們是否可以使用一個更經(jīng)濟的模型來替代它呢?
這是個很自然就能聯(lián)想到的問題。許多人也已經(jīng)做了嘗試。例如,有人嘗試在本地運行 Ollama 這樣的本地小型模型,但最終效果不好,構(gòu)建過程中常常出現(xiàn)問題。
有的人使用 Groq 來做,而且成功了,但需要進行不少復(fù)雜的設(shè)置變更,對于初級用戶來說非常麻煩。
最簡便的方法,自然是期待 OpenAI 推出一個更經(jīng)濟實惠的模型。
期盼著,期盼著,好消息來了。
OpenAI 最近給我發(fā)了信,說它新推出了一個 GPT-4o mini 模型。
不要被名稱忽悠了——GPT-4o mini 的對標模型,其實是GPT-3.5 Turbo,但它甚至比3.5 Turbo還要便宜60%。
我不得不欽佩 OpenAI 現(xiàn)在的命名方式。如果你把它叫做 GPT 3.5 Turbo Plus,效果可能就不好,因為人們會覺得這不就是一個改進版的 3.5 嗎?雖然便宜一點,但依然覺得不太滿意。
你把它叫做 GPT-4o mini ,人們就會腦補這是一個好的模型,多模態(tài)、快速又便宜。大家就會覺得自己占了便宜,竟然能用一個跟 GPT-4o 對標的模型,居然比原來的 3.5 還便宜那么多,這無論如何,也是個甜買賣啊。
我拿到 GPT-4o mini 的使用權(quán)限后,立即測試了一下它的中文寫作。我把測試結(jié)果分享到了知識星球。
不過你不要誤解,GPT-4o mini 畢竟是個小模型,你可以指望它的中文輸出能力,但千萬不要以為它的推理與邏輯思考能力也可以趕上 GPT-4o 或者 Claude 3.5 Sonnet 。所以我是把它放在了工作流里合適的位置上,物盡其用。
突然,我想到 GPT-4o mini 不僅可以用來輸出文字,還可以用它和 GraphRAG 「雙劍合璧」啊。
想到這里都覺得興奮不已,那咱們下面就來看看效果究竟如何。
安裝
首先,我們需要把 GraphRAG 安裝上,這里使用?pip install
,非常簡單。
pip install graphrag
```
它會安裝一系列的依賴,包括了 GraphRAG 所需的各種庫和工具。安裝過程可能需要一些時間,取決于你的網(wǎng)絡(luò)速度和電腦性能。
安裝完成后,我們找一個目錄,新建一個目錄,然后在下面執(zhí)行這一句。
mkdir -p ./ragtest/input
這里的 input 是什么呢?就是我們存放輸入的文本 —— 像剛剛提到的 200 頁的書或者文章 —— 的地方。
我在 Visual Studio Code 下給你演示吧,比較直觀。
執(zhí)行這條命令后,側(cè)邊欄會出現(xiàn)一個新的文件夾。
接下來,我們要把書籍資料下載下來。這里 GraphRAG 官網(wǎng)樣例使用的是古騰堡計劃,上面有很多免費的圖書。古騰堡計劃是一個致力于創(chuàng)建和分發(fā)免費電子書的志愿者項目,它提供了大量版權(quán)已過期的經(jīng)典文學(xué)作品。
GraphRAG 官網(wǎng)給的樣例是《圣誕頌歌》,是查爾斯?狄更斯創(chuàng)作的一部著名小說,講述了一個守財奴在圣誕節(jié)前夜經(jīng)歷的奇妙故事,最終改變了自己的人生態(tài)度。
執(zhí)行下面這條命令下載即可:
curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt
我查看了一下,下載的文件在本地顯示為 189KB。大嗎?對于文本來說,不算太少。不過相對于今天動輒上 GB 的存儲內(nèi)容來說,那是真不大。
下載完成后,我們需要進行初始化。
python -m graphrag.index --init --root ./ragtest
這個步驟是為了設(shè)置 GraphRAG 的基本環(huán)境和配置,確保后續(xù)操作能夠順利進行。
我們來看一下,執(zhí)行很快,因為這里面不做任何實際索引操作,只是新建幾個文件和文件夾。
剛才有一個 input 是你自己建的,現(xiàn)在 GraphRAG 創(chuàng)建了 output 文件夾、prompts 文件夾,還有兩個設(shè)定文件。
我們先設(shè)置這個?.env
?文件,里面需要填入一些配置。這些配置通常包括 API 密鑰、模型選擇等重要參數(shù),它們對于 GraphRAG 的正常運行至關(guān)重要。
你需要將 OpenAI 提供的 API 密鑰填入?GRAPHRAG_API_KEY
?即可。
另外,settings.yaml
?文件也需要修改。
這里面有一項尤其需要注意。原來默認使用的是 GPT-4 Turbo preview,這一定要改為 GPT-4o mini,因為我們要嘗試降低成本。其他設(shè)置無需更改。
接下來我們來建立索引?;氐浇K端,執(zhí)行以下命令。
python -m graphrag.index --root ./ragtest
這條命令建立一個圖譜化的知識庫。這個過程花了足足五分鐘的時間,咱們就不詳細展示了。
查詢
終于,圖譜構(gòu)建完畢。下面我們做一個查詢。
python -m graphrag.query \ --root ./ragtest \ --method global \ "What are the top themes in this story?"
注意這里的命令,Global(全局)代表我對整本書提問。我們問的問題是:這個故事有哪些最主要的主題?
來看一下結(jié)果。
結(jié)果顯示了若干主題,每個答案后面都有一系列的內(nèi)容來源標號,這一點很重要。它強調(diào)了大語言模型沒有幻覺,而確實是利用你提供的資料來給出答案。
為了讓你看得更加清楚,我給你把上面的答案翻譯一下。這里我們使用的是吳恩達老師的三步反思翻譯法。
為了讓 AI 工作流更加簡單,我做了一個工具,并且開放在了 Github 上面,網(wǎng)址在這里。(https://github.com/wshuyi/workflows_with_litellm_pub)如果你覺得好用,別忘了給加顆星啊。
這個項目可以幫助我們快捷地執(zhí)行工作流程。它包含了一系列預(yù)設(shè)的腳本和配置文件,使得我們能夠輕松地設(shè)置環(huán)境、運行查詢。
這個項目不僅可以提高效率,還能確保工作流程的一致性。你可以將復(fù)雜的工作流程簡化為一個配置文件。這個文件可以清晰地定義每一個步驟,使得整個流程變得更加透明和可管理。
這就是一個配置文件的例子。
這里我說你要進行三步操作,這三步操作構(gòu)成了一個完整的工作流程。
第一步是執(zhí)行一個叫做 “翻譯成中文”(translate_cn) 的工作提示詞。這個步驟的目的是將輸入的英文內(nèi)容轉(zhuǎn)換為中文。使用的輸入來自于用戶提供的信息,模型調(diào)用的還是 GPT-4o mini。
第二步是對剛才的翻譯結(jié)果進行評價。這一步的目的是確保翻譯的質(zhì)量,通過客觀的評價來識別可能存在的問題或改進空間。它的輸入相對多一些,除了原文,還應(yīng)該包括剛才第一步給出的直譯結(jié)果。為了保證修改建議的有效性和可靠性,我們使用思辨能力更強的 Claude 3.5 Sonnet 模型。
第三步則是綜合原文、直譯和反思建議,進行精細翻譯。這里我們還是使用 GPT-4o mini 模型,以降低成本,提升輸出速度。
這種方法的優(yōu)勢在于它的靈活性和可定制性,你可以根據(jù)具體需求來調(diào)整每一步的提示詞,從而優(yōu)化整個工作流程。具體安裝和使用方式,請參考《如何輕松定制和調(diào)用你自己的 AI 工作流》一文。
閑言少敘,我們來看翻譯的結(jié)果。這個結(jié)果是經(jīng)過我們剛才描述的三步工作流程處理后得到的。通過這個例子,你也可以直觀看到工作流的效果。
驗證
我們該不該相信這個結(jié)果?我覺得盡管在回答中,GraphRAG 給出了來源片段信息,但這還不夠。
假設(shè)你根本就沒有讀過狄更斯的這本小說,該如何驗證剛才給出的答案呢?
你可以寫一個提示詞:
你是一名資深英語文學(xué)教師,現(xiàn)在你就狄更斯小說 "A Christmas Carol" 提出來了一個問題 "What are the top themes in this story?",下面我提供給你的文檔,是一個學(xué)生的回答。請你根據(jù)你對這本小說的理解,一段段核對,看答案是否有事實性錯誤,以及是否有可改進的地方
然后,把這個提示詞,連同剛剛 GraphRAG 給出的結(jié)果(英文即可)交給 Claude 3.5 Sonnet 。
然后,這是 Claude 3.5 Sonnet 給出的回答質(zhì)量分析結(jié)果。讓我們來看看它的評價。
Claude 3.5 Sonnet 給出總體評價:這是一個非常優(yōu)秀的分析。這個結(jié)果證明了我們利用知識圖譜進行檢索的方法非常有效。到此為止,我們是否可以完全相信這個答案呢?
當然不行。
剛才看到的是大語言模型基于自己訓(xùn)練時對數(shù)據(jù)的記憶得出的結(jié)果,這依然可能會產(chǎn)生幻覺。因此,我們需要讓 AI 連接網(wǎng)絡(luò)進行查詢,以驗證信息的準確性。
在這方面,一個比較好的工具就是 Perplexity。它能夠網(wǎng)絡(luò)查詢,驗證信息的準確性。
首先,Perplexity 會查找與輸入內(nèi)容相關(guān)的信息,列出了多個相關(guān)的信息來源。然后,Perplexity 會核對主題識別的準確性。
在 Perplexity 的分析中,你可以看到它使用了這些詞語來評價:準確地捕捉、準確地識別、很好的捕捉,準確地指出、很好的總結(jié)。它還指出沒有明顯的事實性錯誤,主題的選擇和分析都很到位。
通過這兩種方法的交叉驗證,我們對大語言模型根據(jù)我們的圖譜式知識庫給出的答案就更有信心了。
成本
使用這種方法的成本如何呢?
我打開 OpenAI 控制臺查看,一開始嚇了一跳 —— 今天的賬單又起飛了?
好在仔細一看,實際花費僅僅 0.28 美金。下面是明細。
有 0.05 美金(將近五分之一)是用于語音識別的,這與我們當前的任務(wù)無關(guān)。
換句話說,我們用于總結(jié)這本書、構(gòu)建知識圖譜型知識庫,以及進行查詢的實際花費是多少呢?僅需要 0.23 美金。
考慮到使用官方樣例花費 11 美金,你會發(fā)現(xiàn) GPT-4o mini 帶來的成本改善令人驚嘆。
小結(jié)
通過本文的講解,你可以發(fā)現(xiàn) GraphRAG 技術(shù)能幫助我們更準確地回答全局性的復(fù)雜問題,這對許多應(yīng)用場景來說至關(guān)重要。
進一步,結(jié)合 GPT-4o mini 模型,我們不僅提高了處理效率和速度,還有效降低了成本。對于個人用戶、研究人員和企業(yè)來說,這都是一個好消息。
自己動手試一試吧,歡迎你把自己的測試結(jié)果分享在留言區(qū),咱們一起交流討論。
?;谥R圖譜的 AI 知識庫使用愉快!
點贊 +「在看」,轉(zhuǎn)發(fā)給你身邊有需要的朋友。收不到推送?那是因為你只訂閱,卻沒有加星標。
歡迎訂閱我的小報童付費專欄,每月更新不少于3篇文章。訂閱一整年價格優(yōu)惠。
如果有問題咨詢,或者希望加入社群和熱愛鉆研的小伙伴們一起討論,訂閱知識星球吧。不僅包括小報童的推送內(nèi)容,還可以自由發(fā)帖與提問。之前已經(jīng)積累下的帖子和問答,就有數(shù)百篇。足夠你好好翻一陣子。知識星球支持72小時內(nèi)無條件退款,所以你可以放心嘗試。
若文中部分鏈接可能無法正常顯示與跳轉(zhuǎn),可能是因為微信公眾平臺的外鏈限制。如需訪問,請點擊文末「閱讀原文」鏈接,查看鏈接齊備的版本。?
延伸閱讀
開發(fā)文檔 RAG 的 GPTs 如何更高效地幫你 AI 編程?
如何用人工智能幫你讀論文?
文科生用機器學(xué)習(xí)做論文,該寫些什么?
如何用人工智能幫你高效尋找研究選題?
如何用人工智能幫你找論文??