# 生成式AI應用於財務投資-2 2025/06/29 蘇彥庭 ## 1. LLM的AI幻覺(Hallucination) 2025/06/07詢問問題,比較GPT-4、Gemma3:1b、deepseek-r1:1.5b的回答:  可發現: * 資訊都是錯誤的 * `gpt-4`的回答是舊資訊 * `gemma3:1b`和`deepseek-r1:1.5b`的回答是AI幻覺 LLM(大型語言模型)產生AI幻覺(hallucination)的原因主要來自於其運作原理與訓練方式。以下是幾個主要原因: * 機率性生成本質 LLM 是透過機率模型(如Transformer架構)來預測下一個最可能的字詞,而不是事實查核器。它的回答是根據統計關聯生成的文字,而非資料庫中查詢到的事實。因此即使是語言流暢、有邏輯的句子,也可能是虛構或錯誤的資訊。 * 訓練資料品質不一 LLM 通常訓練於大量網路資料,包括書籍、維基百科、論壇文章、網頁等,其中包含正確也有錯誤或過時的資訊。模型無法天然區分哪些是可靠來源,因此可能引用或合成看起來正確但實際錯誤的資訊。 * 缺乏實時知識與查證能力 除非整合搜尋工具或外部知識庫,LLM 並無法「查資料」,只能依據訓練期間的資料記憶來回答。因此在面對新知識(例如新聞、近期科技)、具體事實(例如統計數據、引用),模型可能會產生幻覺內容填補空缺。 * 提示(Prompt)模糊或誤導 若提示語(Prompt)不夠具體或邏輯上暗示某種不存在的情境,LLM 可能會「順著語境補全故事」,導致編造內容。 * 缺乏內建的「真實性驗證機制」 目前的LLM(除非額外整合檢查模組或檢索系統)不具備驗證資訊真偽的能力,因此在生成答案時無法自行糾正錯誤。 ## 2. 如何避免LLM的AI幻覺 大型語言模型(LLM)常因無法即時查證資訊、推論鏈不完整或語境誤解而產生「AI 幻覺」(hallucination)。為了提升生成內容的準確性與可信度,可以採取以下幾種策略: * 提示工程(Prompt Engineering) 透過精心設計提示詞(Prompt)來引導模型產出更準確、具邏輯性、並符合預期格式的回應。例如加入明確指示、範例、角色設定、輸出限制等方式,減少模型自由發揮時產生的錯誤內容。 * 增強式檢索生成(Retrieval-Augmented Generation; RAG) 結合語言模型與外部知識檢索系統,先根據問題檢索可信資料,再將這些資料與提示詞一併輸入模型。這種方式可降低模型亂編知識的機率,特別適用於需要時效性或專業知識的任務。 * 參數高校微調方法(Parameter-Efficient Fine-Tuning; PEFT) 透過如 LoRA、Adapter 等技術,在不大幅修改原模型的情況下,針對特定領域進行小範圍微調。可使模型在該領域產出更符合事實與語境的內容,降低幻覺風險,同時節省訓練成本與資源。 新聞參考: [[AI也有人設?研究剖析7大AI內在性格:GPT最仁愛、Claude最謙遜⋯這2款AI最失控]](https://www.bnext.com.tw/article/83351/llms-values)  [圖片來源](https://ai.plainenglish.io/optimizing-large-language-models-strategies-including-prompts-rag-and-parameter-efficient-d923f7e431ab) * 智能代理(AI Agent) 透過設計具「規劃能力」與「工具使用能力」的智能代理,讓模型不只依靠記憶,而能動態調用外部工具(如搜尋引擎、計算模組、API 查詢)來完成任務。代理具備多步驟推理與自主決策機制,有助於提高任務準確性與可靠性,進一步減少幻覺發生。 ### 2.1 提示(Prompt Engineering) #### 2.1.1 提示設計策略(Prompting Strategies) 1. Zero-shot Prompting * 不給範例,直接請模型執行任務 * 適用:已知模型可處理的標準任務(翻譯、摘要) * 範例: ``` Translate the following sentence into French: "How are you today?" ``` 2. Few-shot Prompting * 給模型少量示範範例(通常1至5個),幫助模型理解格式與任務 * 適用:資料量小,需引導模型模仿格式 * 範例: ``` Q: What is the capital of France? A: Paris Q: What is the capital of Japan? A: Tokyo Q: What is the capital of Germany? A: ``` 3. Chain of Thought Prompting * 請模型一步步推理,輸出完整的推理過程再給答案 * 適用:數學推理、邏輯推論、規劃型任務 * 範例: ``` Q: If there are 3 apples and you take away 2, how many are left? Let's think step by step. ``` #### 2.1.2 提示設計技巧(Prompt Engineering Tips) 1. **明確角色指令(Role Assignment)** * 讓模型扮演具體角色會穩定回答風格、專業度及準確度: * 「你是一位資深 Python 教學講師,請解釋以下程式碼給初學者。」 * 「你是一位資深製程工程師,請使用簡單例子解釋以下參數的意義。」 2. **指定輸出格式(Output Formatting)** * 使用以下方式讓模型輸出便於程式後續處理: ``` 請以以下 JSON 格式回應: { "問題": "", "步驟推理": "", "答案": "" } ``` ``` 請以 Markdown 表格輸出結果 ``` 3. **使用 Chain-of-Thought 指令** * 若希望模型產生推理過程,可加: * 「請逐步推理後再給答案。」 * 「Let’s think step by step.」 * 「Think aloud and explain your reasoning.」 4. **限制回應長度** * 避免輸出過長: * 「請限制回應在 100 字以內。」 * 「請僅列出三點最重要的重點。」 5. **提供上下文與目標** * 模型在不了解目標時可能無法精準作答: * 「目標是讓 5 歲小孩聽得懂。」 * 「目標是產生可以直接貼入 SQL 執行的查詢語句。」 * 「目標是協助產生可以在生產排程會議直接使用的條列討論稿。」 6. **輸入輸出示範(Few-Shot)** * 若格式敏感,可示範 1-3 個範例以提升穩定度: ``` 以下是範例: Q: 台北是台灣的什麼? A: 首都 Q: 東京是日本的什麼? A: 首都 Q: 巴黎是法國的什麼? A: ``` 7. **避免模稜兩可** * 模稜兩可的詞會使模型輸出發散,盡量避免: * 錯誤問法: 「請幫我檢查」(要檢查什麼?) * 正確問法: 「請列出以下文字的三個文法錯誤並給出修正建議」 8. **提示逐步分段(Decompose)** * 若任務複雜,可拆成多次提示: * 第一步:幫我分析背景 * 第二步:根據背景列出五個可行方案 * 第三步:針對方案二進行詳細可行性分析 9. **設定模型語氣(Tone Control)** * 可指定回答風格: * 「請用幽默風格回答。」 * 「請以正式、專業的口吻回覆。」 10. **禁止不需要的部分** * 例如: * 「不需要解釋,直接輸出結果。」 * 「請僅回答 '是' 或 '否'。」 11. **在提示中預告要評估輸出** * 模型在知道要被檢查時會更精準: * 「請確認回應是否包含精準數值,否則請重新生成。」 12. **引導模型自我檢查** * 例如: * 「生成回答後,請列出三個可能的錯誤或需要檢查的點。」 13. **使用語言或格式限制** * 例如: * 「請以繁體中文回答。」 * 「Please answer in English and use bullet points.」 14. **結合提示分隔符以避免混淆** * 例如使用: ``` <BEGIN_CONTEXT> ... </END_CONTEXT> ``` 以避免模型混淆多段上下文。 #### 2.1.2 設計提示流程總結 * 確認目標(格式、語氣、長度) * 提供上下文與必要資訊 * 引導逐步推理或固定範例 * 指定輸出格式 * 可用分段提示逐步完成複雜任務 * 測試與微調提示直到穩定 ### 2.2 檢索增強生成(RAG)  [圖片來源](https://gradientflow.com/techniques-challenges-and-future-of-augmented-language-models/) #### 2.2.1 什麼是RAG(Retrieval Augmented Generation)? 檢索增強生成(RAG)是一種讓大型語言模型(LLM)可以引用外部知識庫以生成更準確回答的方法,結合: * 檢索(Retrieval): 從資料庫中找出相關內容 * 生成(Generation): 使用 LLM 生成自然語言回答 此方法能解決純 LLM 記憶有限、知識過時的問題,適合建構企業內部知識問答、技術客服、法務文件問答等應用。 #### 2.2.2 RAG流程步驟(依圖片說明) * 資料準備階段 * A. **資料準備(Data Preparation)** * 收集 Raw Data Sources(文件、PDF、網站、報表等) * B. **Information Extraction (資訊擷取)** * 使用 OCR、PDF 資料解析、爬蟲等技術萃取文字內容 * C. **Chunking (分塊)** * 將文件切成適合檢索的區塊(例如每段300-500字) * D. **Embedding (向量化)** * 將每段文字轉成向量(Embedding),並儲存於向量資料庫(Vector Database)中 * RAG查詢與生成階段 * 1. **Query Embedding** * 使用者輸入問題(Query),將其轉換為向量 * 2. **相似度檢索** * 利用向量資料庫(如 Chroma、Weaviate、Pinecone)與 Query 向量比較,找出最相關的文字區塊 * 即計算各文本向量與Query向量的餘弦相似度(Cosine Similarity) ([圖片來源](https://businessanalytics.substack.com/p/cosine-similarity-explained)) * 為何要用向量資料庫? * 傳統關聯式資料庫(SQL)做的是主鍵/索引精準查詢 * 向量資料庫是因應「語意相似度檢索」需求而出現,幫助 AI 與搜尋系統從大量資料中快速找到「相關」而非僅「相同」的內容,並支援生成式 AI 系統強化回應準確度 * [向量資料庫排名](https://db-engines.com/en/ranking/vector+dbms) * 3. **Retrieve Relevant Data** * 回傳與 Query 相關的資料段落給 LLM * 通常會傳回最相關(即餘弦相似度最高)的前K個(TOP K)文本 * 4. **Generation with LLM** * LLM將檢索到的資料結合Query進行回應生成 * 5. **Response** * 將完整且具引用資料依據的回答回傳給使用者 ### 2.3 參數高校微調方法(PEFT) * Low-Rank Adaptation(LoRA)  [圖片來源](https://arxiv.org/abs/2106.09685) * Low-Rank Adaptation(簡稱 LoRA)是一種在訓練大型語言模型(如 GPT、BERT等)時使用的參數高效微調(parameter-efficient fine-tuning)技術,可以讓使用者在不需更新模型全部參數的情況下,有效調整模型以適應特定任務或資料。 ## 3. LangChain介紹 LangChain是一個專門為開發者構建與部署基於大型語言模型(LLMs, Large Language Models)應用而設計的框架,目標是讓 LLM 不僅作為單次對話回應,而是能夠與外部資源(資料庫、API、文件等)結合,成為真正的可用應用與代理系統(Agent)。 LangChain可讓你: * 將 LLM 與自己的資料(向量資料庫、私有知識庫、檔案、網頁等)整合 * 透過 Chain 與 Agent 機制讓 LLM 呼叫工具、自動決策、執行多步驟任務 * 輕鬆串接不同 LLM 提供者(OpenAI、Anthropic、LLama等) * 部署端到端的 LLM 應用(聊天機器人、檢索式問答系統、文件摘要、代碼生成輔助等) LangChain相關資訊: * [LangChain官網](https://www.langchain.com/) * [LangChain GitHub](https://github.com/langchain-ai/langchain) * LangChain的GitHub星星數成長圖  ## 4. LangChain實作 * [範例程式碼連結](https://github.com/SuYenTing/llm_tutorial) ## 5. 參考資料 * [Medium文章: Optimizing 🚀 Large Language Models🤖: Strategies Including Prompts, RAG, and Parameter Efficient Fine-Tuning](https://ai.plainenglish.io/optimizing-large-language-models-strategies-including-prompts-rag-and-parameter-efficient-d923f7e431ab) * [Techniques, Challenges, and Future of Augmented Language Models](https://gradientflow.com/techniques-challenges-and-future-of-augmented-language-models/) * [微調大型語言模型LLM的技術LoRA及生成式AI-Stable diffusion LoRA](https://xiaosean5408.medium.com/%E5%BE%AE%E8%AA%BF%E5%A4%A7%E5%9E%8B%E8%AA%9E%E8%A8%80%E6%A8%A1%E5%9E%8Bllm%E7%9A%84%E6%8A%80%E8%A1%93lora%E5%8F%8A%E7%94%9F%E6%88%90%E5%BC%8Fai-stable-diffusion-lora-61a41d636772)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up