# LLM COLLABORATIVE INTELLIGENCE: THE PATH TO ARTIFICIAL GENERAL INTELLIGENCE ## EDWARD Y.CHANG [第1章 人工智慧的簡史:從圖靈到變形模型](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/Hk_XGgt81e) [第2章 大型語言模型(Large Language Models, LLMs)的能力與機遇](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/H14XrxYUyl) [第3章 提示工程:Few-Shot、Chain of Thought 與 Retrieval-Augmented Generation](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/HymkilKL1l) [第4章 CRIT: 使用蘇格拉底式提問促進 LLM 的批判性思考](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/HkuqTgFUJx) [第5章 SocraSynth:對抗式多-LLM推理](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/BkKY7WKLyg) [第6章 EVINCE:透過條件式統計與資訊理論](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/SJx2qrrDyg) [第7章 揭示反思性大型語言模型中的錯誤與偏見](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/Sy7NuOjDJe) [第8章 多模態大型語言模型中的情感建模 ](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/BkgXfFoPJl)[第9章 一個三分支制衡框架,用於大型語言模型的情境感知倫理對齊](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/S1tp7toPyg) [第10章 超越計算: 意識建模](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/BJVUUFjDye) [第11章 回顧性與適應性框架 以改善大型語言模型](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/B1j46Zt8Jx) [ 第12章 發現洞見 超越已知 ](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/B1lVzY2wkl)[附錄 X1 蘇格拉底的箴言](https://hackmd.io/@4S8mEx0XRga0zuLJleLbMQ/Hym0J53vJe) # 第3章 提示工程:Few-Shot、Chain of Thought 與 Retrieval-Augmented Generation ### 摘要 本章探討提示工程(Prompt Engineering)在大型語言模型(LLMs)中的重要性,特別著重於 OpenAI 的 GPT 系列。提示工程指的是設計文本輸入(提示),以引導 LLM 生成所需輸出的實踐,此方法自 GPT-2 和 GPT-3 推出後逐漸受到重視,並隨著 ChatGPT 的發展而更加強調。本章分析了一個結構良好的提示如何透過豐富的語境資訊,提高生成準確回應的可能性,並將其與資訊檢索原則進行比較。 此外,本章介紹了檢索增強生成(Retrieval-Augmented Generation, RAG),該技術透過將相關外部數據整合進生成過程,提升回應品質。本章還將提示根據細節和迭代層次分為五種類型,並探討 RAG 的發展歷程,評估其優勢以及克服上下文窗口限制的潛力。 ### 3.1 簡介 在大型語言模型(LLMs)的領域中,**「提示」**(Prompt)的概念隨著 OpenAI 的 GPT 系列問世而日益受到關注。自 2018 年和 2019 年推出 GPT-2 和 GPT-3 後,「提示」一詞變得廣為人知。 當與這些 LLM 互動時,使用者輸入一段文字(提示),以驅動模型生成相應的回應。「提示工程」(Prompt Engineering)或稱「提示設計」(Prompt Design)指的是設計提示的策略,目的是有效引導模型生成預期輸出。這一實踐隨著 ChatGPT 的出現變得尤其重要。 為了增加獲得期望回應的可能性,提示需要具備豐富的資訊內容。這一理念類似於資訊檢索服務的原則,用戶必須清楚地表達其意圖和上下文,才能獲得相關的資訊。這一過程取決於服務的「數據可用性」以及資訊匹配和檢索能力。在提示工程的領域中,生成高質量且目標明確的輸出責任在於使用者提供的提示內容是否全面且精確。因此,提示的設計與工程變成了一種優化過程:在模型的知識基礎和互動規則的框架下,決定納入哪些資訊最能提升輸出品質。 如前所述,數據可用性對資訊檢索至關重要。如果所需資訊缺失,提示的效果自然會受到限制,導致結果不令人滿意。在此背景下,**檢索增強生成**(Retrieval-Augmented Generation, RAG)發揮了重要作用,透過識別、檢索並將相關的外部數據整合進生成過程中,提升回應的準確性與相關性。因此,提示工程與 RAG 相輔相成,能夠大幅增強模型的回應品質與相關性。 第 3.2 章將提示根據迭代次數和提供資訊的細緻程度,分為五種不同類型。而第 3.3 章則探討了 RAG 的演進,詳細說明其優勢與劣勢,並突顯其在上下文窗口大小不再構成限制時的應用潛力。 ### 3.2 提示方法 提示方法(Prompting Methods)是在使用大型語言模型(LLMs),例如 GPT-4 時,為引導模型生成特定回應而採取的策略。這些方法根據提供給模型的資訊或上下文量有所不同。本節將介紹常見的提示方法,並附上其定義、優劣勢以及用於查詢事實、意見和理由或解釋的範例。 --- #### 3.2.1 **零範例學習 (Zero-shot Learning)** **定義:** 零範例學習是指模型基於單一輸入而無需任何先前範例或上下文來生成回應。模型未接受執行特定任務(例如翻譯、摘要、分類或問答)的任何先例,直接完成任務。 **範例:** - **事實查詢:** 「What is the capital of France?」(法國的首都是哪裡?) - **意見詢問:** 「What do you think about the use of AI in education?」(你對人工智慧在教育中的應用有何看法?) - **解釋請求:** 「Explain why the sky is blue.」(解釋為什麼天空是藍色的。) 這種方式展示了模型在沒有特定範例的情況下處理多樣化問題的能力。其優勢在於快速且靈活,適用於各類問題。然而,因缺乏上下文或範例,模型回應的準確性可能受到限制。 **限制:** 當問題過於複雜或需要深度理解與綜合時,例如「Assess the impact of Renaissance art on modern graphic design」(評估文藝復興藝術對現代平面設計的影響),模型可能因無法滿足隱含期望而難以提供深入分析。 --- #### 3.2.2 **單範例學習 (One-shot Learning)** **定義:** 單範例學習是在向模型提出問題前提供一個範例,藉此幫助模型理解任務。 **範例:** - **事實查詢:** 「The capital of Italy is Rome. What is the capital of France?」(義大利的首都是羅馬。法國的首都是哪裡?) - **意見詢問:** 「AI in healthcare is beneficial. What is your opinion on AI in finance?」(人工智慧在醫療領域有益。你對人工智慧在金融領域有何看法?) - **解釋請求:** 「Plants need sunlight to perform photosynthesis. Why do humans need to eat food?」(植物需要陽光進行光合作用。為什麼人類需要進食?) **優勢:** 相比零範例學習,單範例學習提供更多上下文資訊,能夠提升模型生成準確回應的可能性。 **限制:** 模型回應仍可能受其內建知識與偏見影響,範例的提供並不總能克服這些內在局限。 --- #### 3.2.3 **少範例學習 (Few-shot Learning)** **定義:** 少範例學習是在向模型提出問題前提供多個範例,進一步幫助模型理解任務。 **範例:** - **事實查詢:** - 「The capital of Brazil is Brasilia. The capital of Egypt is Cairo. What is the capital of France?」(巴西的首都是巴西利亞,埃及的首都是開羅。法國的首都是哪裡?) - **意見詢問:** - 「AI in healthcare improves patient outcomes. AI in automotive can reduce accidents. What is your opinion on AI in education?」(人工智慧在醫療領域改善患者結果,在汽車領域降低事故發生率。你對人工智慧在教育領域有何看法?) - **解釋請求:** - 「Water boils at 100°C because at this temperature water molecules have enough energy to change state. Leaves are green because they contain chlorophyll. Why do apples fall from trees?」(水在100°C沸騰,因為此溫度下水分子具有足夠能量轉變狀態。葉子是綠色的,因為它們含有葉綠素。為什麼蘋果會從樹上掉下來?) **優勢:** 相比零範例與單範例學習,少範例學習能更好地處理複雜任務,提供更多上下文以提升回應的準確性與相關性。 **限制:** 準備高質量範例需要額外努力,且範例的品質對結果影響重大。如果範例內容不相關或不夠精確,可能導致回應質量不如零範例學習。 --- ### 3.2.4 思維鏈(Chain of Thought) **思維鏈提示法(Chain-of-thought Prompting)[6]:** 此方法通過引導模型逐步進行邏輯推理來得出結論,特別適用於複雜的推理任務。提示包括逐步分解問題或問題解決的過程,鼓勵模型遵循類似的思考路徑。 **操作方式:** 在 LLM 中使用思維鏈提示法,提供問題的邏輯序列,並為每一步提供清晰的理由。例如: - **意見詢問:** 「To form an opinion on a topic, one should consider various perspectives and their implications. What is your opinion on the use of drones in delivery services?」(要對某主題形成看法,應考慮多方面的觀點及其影響。你對無人機在配送服務中的應用有何看法?) - **解釋請求:** 「To explain why leaves change color in autumn, one must understand the process of chlorophyll breakdown and the exposure of other pigments. Explain why ice floats on water.」(要解釋葉子在秋天為何變色,需了解葉綠素分解及其他色素暴露的過程。解釋為什麼冰會浮在水面上。) **優勢:** 思維鏈提示法透過鼓勵逐步推理的方式提升模型在處理複雜任務時的表現。 **挑戰與限制:** 1. **模型模仿能力的假設:** 該方法假設模型能模仿人類的邏輯思考,但這與人類推理的真實複雜性可能不一致。模型生成的思維過程可能只是基於訓練數據模式的合理敘述,而非真正反映嚴謹的邏輯或事實準確性。 2. **過度依賴推測性推理:** 該方法常使用溯因推理(abductive reasoning),即根據現有資訊得出可能的結論,而非保證結論的真實性。如果訓練數據存在偏差或知識缺口,可能導致錯誤或偏頗的結果。 --- ### 3.2.5 思維樹(Tree of Thoughts) **思維樹方法(Tree-of-thoughts)[7]:** 為克服單一思維鏈的限制,此方法旨在探索多條可能的推理路徑,以期提高推理的覆蓋範圍及可靠性,並減少單一路徑可能帶來的偏差。 **目標:** 1. **改善推理覆蓋範圍:** 通過探索多種潛在推理路徑來增加結論的穩健性和可靠性。 2. **減少偏差:** 考慮多條推理路徑有助於緩解單一路徑推理中可能存在的偏差。 然而,思維樹方法並非始終優於思維鏈,挑戰如下: 1. **制定複雜性:** 如果構建單條邏輯清晰的思維鏈已具挑戰性,創建多條邏輯合理且相關的推理鏈更為艱難。 2. **全面性不足:** 多條路徑並不保證涵蓋所有可能或相關的推理方向,可能遺漏關鍵路徑或包含無關路徑。 3. **路徑選擇:** 多條路徑的情況下,選擇最準確或最相關的路徑成為挑戰,模型需具備可靠的機制來評估和選擇最佳路徑。 4. **知識缺口:** 在開放領域推理中,某些推理鏈可能因缺乏外部知識支持而無法進行或得出錯誤結論。 --- ### 3.2.6 改進技術 為解決上述限制,可以採取以下改進措施: 1. **引入反饋循環:** 讓模型的輸出由專家評估與修正,並將修正結果反饋至系統中,實現持續學習與調整,幫助模型更接近準確且邏輯的推理過程。 2. **整合結構化知識庫:** 將模型能查詢的結構化知識庫或資料庫融入推理過程,確保回應基於經過驗證的資訊,而非僅依賴文本模式。這部分將在下一節的 **檢索增強生成(RAG)** 中深入討論。 3. **提升訓練數據多樣性:** 增強訓練數據的多樣性與穩健性,包含來自不同領域的邏輯推理與問題解決範例,可提高模型模擬思維鏈的準確性與效率。 ### 3.2.7 說明性範例 以下提供三組範例,說明在五種提示方式下模型能力的差異。 --- #### **"What" 類問題範例** 問題類型:記憶性問題 1. **Zero-shot(零樣本):** 直接詢問模型:「What is the capital of France?」(法國的首都是什麼?) 2. **One-shot(單樣本):** 提供一個相似範例後再問:「The capital of Japan is Tokyo. What is the capital of France?」(日本的首都是東京。法國的首都是什麼?) 3. **Few-shots(多樣本):** 提供多個範例再問:「The capital of Italy is Rome. The capital of Germany is Berlin. What is the capital of France?」(義大利的首都是羅馬。德國的首都是柏林。法國的首都是什麼?) 4. **Chain of Thought(思維鏈):** 鼓勵模型逐步推理:「To find the capital of France, consider major cities in France and identify which one is the administrative center. What is the capital of France?」(要找出法國的首都,請考慮法國的主要城市,並找出哪個是行政中心。法國的首都是什麼?) 5. **Tree of Thought(思維樹):** 使用結構化方法,逐步縮小範圍:「What are the major cities in France? Among these, which one is recognized as the capital? What is the capital of France?」(法國有哪些主要城市?這些城市中,哪一個被認定為首都?法國的首都是什麼?) > **觀察:** 即使模型無法直接獲取法國首都的信息,使用「思維鏈」或「思維樹」提示可能間接得出正確答案。 --- #### **"Why" 類問題範例** 問題類型:推理性問題 1. **Zero-shot(零樣本):** 「How can a plant grow faster?」(植物如何生長得更快?) 2. **One-shot(單樣本):** 「Providing adequate water helps a plant grow. How can a plant grow faster?」(充足的水分有助於植物生長。植物如何生長得更快?) 3. **Few-shots(多樣本):** 「Sunlight is essential for photosynthesis. Nutrients in the soil contribute to plant growth. How can a plant grow faster?」(陽光對光合作用至關重要,土壤中的養分有助於植物生長。植物如何生長得更快?) 4. **Chain of Thought(思維鏈):** 「Consider the factors affecting plant growth like sunlight, water, and nutrients. How can optimizing these factors make a plant grow faster?」(考慮影響植物生長的因素,如陽光、水分和養分。如何優化這些因素以促進植物更快生長?) 5. **Tree of Thought(思維樹):** 「What are the essential elements for plant growth? How does each element contribute to faster growth? How can we optimize these elements for plant growth?」(植物生長的基本要素是什麼?每個要素如何促進更快生長?如何優化這些要素以促進植物生長?) --- #### **Many-shots 範例:Noora 聊天機器人** **案例背景:** 2022 年夏天,三位 OVAL 實習生開發了一款名為 **Noora** 的聊天機器人,旨在幫助具藝術天賦的兒童學習同理心,特別是自閉症譜系障礙(ASD)兒童。 - 使用 **GPT-3** 語言模型,透過提供上下文、目標和示例教導機器人適當的行為。 - 提供幾百個示例後,Noora 能夠適應不同的情境並做出適當反應。 **提示設計範例:** 初始提示設計清楚說明目標: > 「Dear Virtual Assistant, I’m reaching out because you are a friend and I value your support and understanding. I’d like to share some joys and sorrows I experience daily in hopes that you can respond with compassion and empathy. Here are some example dialogues to illustrate comforting and harmful responses. Each example begins with my statement followed by potential replies.」 (親愛的虛擬助手,我向您求助是因為我認為您是朋友,並重視您的支持與理解。我希望分享我日常生活中的喜悅與悲傷,期待您以同情與共情回應。以下是一些示例對話,用以說明安慰和有害的回應。) **示例設計:** | **用戶陳述** | **良好回應** | **不良回應** | |-----------------------------|---------------------------------|--------------------------| | 我今天被公司解僱了! | 「很抱歉聽到這個消息,你還好嗎?」 | 「這很糟糕,但生活還得繼續。」 | | 我的畫被評為很棒! | 「太棒了!你一定付出了很多努力。」 | 「這不過是運氣好罷了。」 | 這種提示方式教導 LLM 理解同理心,並能適應更廣泛的情境。此方法還可用於建模其他積極行為,如關注和關懷。 ![image](https://hackmd.io/_uploads/Bk1qhxYLyl.png) ### 3.3 RAG (Retrieval-Augmented Generation) Retrieval-Augmented Generation (RAG) 是一種提升大型語言模型(LLMs)能力的技術,適用於多種應用場景。LLMs 雖然能對各種主題進行推理,但其知識範圍限於訓練資料。RAG 通過將從預先索引的資料源檢索到的相關外部數據注入模型,來強化針對特定用戶查詢的回應質量。RAG 是提示工程(prompt engineering)的有效補充,能夠生成優質查詢以獲得更準確的回應。 ![image](https://hackmd.io/_uploads/HJjlpxtI1e.png) 圖 3.1 顯示了典型 RAG 的架構及資料流。 --- #### 3.3.1 使用有限上下文 LLM 的 RAG 近期一篇調查論文 [1] 討論了 RAG 所採用的技術及相關研究(如圖 3.2 所示),分為以下三類: ##### **1. 檢索技術(Retrieval Techniques)** - **遞歸檢索(Recursive Retrieval):** 根據之前的結果改進搜尋查詢,以逐步收斂到相關資訊。 - **自適應檢索(Adaptive Retrieval):** 例如 Flare 和 Self-RAG,允許 LLM 決定最佳檢索時機及內容。 - **迭代檢索(Iterative Retrieval):** 通過多次檢索收集文件,為 LLM 提供更全面的知識庫,增強生成回應的穩定性。 ##### **2. 生成技術(Generation Techniques)** RAG 的生成器至關重要,它將檢索到的資訊轉化為連貫的文本。與傳統模型不同,RAG 的生成器利用檢索數據提高準確性和相關性。 生成技術包括: - **後檢索處理:** 使用固定的 LLM 處理、篩選或優化檢索資訊,使其更符合用戶需求。 - **壓縮與重新排序:** 通過壓縮信息和排序提高檢索結果的質量。 ##### **3. 增強技術(Augmentation Techniques)** 資料源是 RAG 發揮效用的關鍵。若查詢的是醫學資訊,但資料源涉及建築,噪聲可能多於信號。增強資料可包括非結構化數據、結構化數據或由 LLM 自行生成的內容。 主要增強過程包括: - **迭代、遞歸與自適應檢索:** 強調改進檢索過程以應對冗餘和資訊範圍有限的挑戰。 > **總結:** RAG 的核心在於將最相關的資訊放入有限的上下文窗口中,以回答查詢。這些技術並非新鮮事物,與硬體設計和資料庫管理中減少延遲及提升吞吐量的研究已有三十多年歷史。 ![image](https://hackmd.io/_uploads/SJMm6gYI1l.png) #### 3.3.2 使用長上下文 LLM 的 RAG 隨著 GPT-4-turbo(128k tokens 上下文窗口)和 Gemini 1.5 Pro(1 百萬 tokens 上下文窗口)[2] 的推出,可在上下文緩衝區中檢索大量資訊。 如此大的上下文窗口,明顯減輕了需要檢索最相關資訊以改善查詢結果的挑戰。有觀點甚至認為,這使得 RAG 的優化工作變得過時,因為直接依賴 LLM 在大上下文窗口內定位相關數據,比任何基於人工啟發的方式更為優越。 ##### **高精度與高召回率** 在「大海撈針」的合成任務中(參考 Kamradt [4] 的靈感),Gemini 團隊評估了 Gemini 1.5 Pro 在大量無關數據中準確回憶特定資訊的能力。 研究顯示 [2],Gemini 1.5 Pro 在文本、影片及音訊等數據類型中,保持超過 99% 的召回準確率,即使面對上百萬 tokens 的「干擾數據」也不例外。 ##### **低延遲與低成本** 儘管 Gemini 能處理更大的上下文,一些觀點(如 [3])認為 RAG 仍具價值,原因包括: 1. **分塊提升效率:** 面對大型文檔,RAG 的分塊過程可將文檔分解為可檢索的部分,然後再餵給模型。 2. **成本效益:** 對於大型知識庫(TB 級)的特定用例,傳統 RAG 方法可能更經濟。 > **結論:** 長上下文 LLM 如 Gemini 代表了一次重大飛躍,但它們不太可能完全取代 RAG。未來的 LLM 應用將結合這兩種方法,共同應對複雜的查詢場景。 ### 3.4 結論 本章探討了如何利用大型語言模型(LLMs)處理查詢以提升回應質量。有效的提問需要明確意圖並為 LLM 提供相關上下文。 本章回顧了 GPT-3 後的最新研究,重點分析提示工程(prompt engineering,即問題設計)和檢索增強生成(RAG,通過補充額外資訊提升回應質量)。這些方法主要基於啟發式設計,並已展現良好成果。 隨著 LLM 技術進步,例如 GPT-4 提供的 128k token 緩衝區和 Gemini 的 100 萬 token 緩衝區(相較以往的 8k token),這些模型現可處理和利用海量數據來辨識相關上下文。儘管如此,RAG 仍被廣泛應用,主要原因是其成本效益,因為 GPT-4 和 Gemini 的使用費用取決於處理的 token 數量。 然而,兩項持續的挑戰仍然存在: 1. **有效提問的難度:** 當 LLM 擁有的資訊超出用戶時,設計問題尤為困難。 2. **外部數據檢索:** 如何檢索相關外部資料以確保答案的高準確率和高召回率仍是研究中的課題。 第 5 章將介紹改進問題設計的策略,而第 11 章則將展示如何利用 RAFEL 系統高效管理上下文緩衝區,協助 LLM 提供更優質的答案。