前言#
在現今社會,心理健康問題已成為一個日益關注的議題。隨著更多人開始討論精神疾病與心理健康,了解公眾對這些問題的態度也變得至關重要。為了更深入理解人們在面對精神健康問題時的求助態度,開發了一個基於檢索增強生成(RAG)技術的工具,名為 MentalHealthRAG。
程式碼#
Git Repo : https://github.com/a607ernie/MentalHealthRAG
截圖#
- Qdrant

什麼是RAG技術?#
RAG技術是“Retrieval-Augmented Generation”(檢索增強生成)的縮寫,這是一種將資訊檢索和生成模型結合的技術。它利用外部知識庫或資料庫來增強生成式模型(大型語言模型)的回答準確性和一致性。
RAG的工作原理通常是:
- 檢索階段:模型首先根據問題或提示從外部資料庫中檢索相關的資訊或文獻。這可以是結構化的資料(如SQL資料庫)或非結構化的資料(如網頁或文件)。
- 生成階段:模型使用檢索到的資訊,結合其內部知識,生成回答。
這種方法的優勢在於它能夠克服傳統生成式模型對訓練資料的限制,並能在生成過程中動態地引用最新的或特定的資料,以提供更準確的結果。
實際應用:#
- 客服系統:如果你有一個產品或服務的知識庫,RAG可以幫助客服機器人基於現有的資料庫快速生成回應。
- 企業內部資料查詢:在一個企業內部,RAG技術可以幫助員工在大量的文檔中找到精確的資訊,並生成基於這些資訊的報告或答案。
- 醫學或法律領域:當涉及到專業領域的問題時,RAG技術能夠檢索現有的醫學文獻或法律文檔,生成相對應的專業解答。
MentalHealthRAG#
MentalHealthRAG的主要目的是評估和分析文章中對精神疾病的求助態度。這樣的態度可以顯示出人們在面對心理健康問題時,是否願意尋求幫助,或是對求助持保留或拒絕態度。
如何運作?#
基於特定的標註規則來評估文章中的情感和求助態度。每篇文章根據以下標註進行分類,例如:
- 1:尋求專業協助
- 0:不尋求專業幫助
範例說明#
假設有一篇文章,內容如下:
“最近心情一直不太好,但我從來沒去過心理醫生。我覺得自己應該能夠克服這些情緒,不想讓別人知道我的困擾。”
在這篇文章中,作者顯示出對專業協助的抗拒。因此,這篇文章會被標註為 0,即不尋求專業幫助。
另一篇文章的內容可能是:
“我有時會感到情緒低落,偶爾會考慮去看心理醫生,但總是覺得家裡的人不會支持我。”
這篇文章表現出有意願尋求幫助,因此,它會被標註為 1。
如何使用 MentalHealthRAG#
- 建立向量資料庫:
- 首先,將所有訓練資料進行處理,並使用LLM(大語言模型)生成相應的嵌入向量(embedding)。這些嵌入向量將被存入向量資料庫中,這樣可以進行後續的檢索工作。
- 準備 Prompt 文件:
- 撰寫並準備好對應的 prompt.txt 文件,這個文件將用於引導模型進行特定的分析。文件中應包含如何理解和處理待分析文章的提示與指引。
- 預測文章的情感分析:
- 將待分析的文章輸入系統。系統會根據內部的檢索機制從向量資料庫中檢索出與文章最相關的內容,並將這些相關資訊作為上下文提供給LLM進行分析。
- 生成結果:
- LLM會根據檢索到的相關資料和 prompt.txt 文件的指引,對文章進行心理健康求助態度的分析,最終給出對應的結果,通常以分數的形式呈現,反映文章中情感表達的態度。
實驗與結果分析#

RAG(Retrieval-Augmented Generation)在某些情境下的表現可能會比 BERT 差,這可能有幾個原因:
1. 檢索資料的品質與相關性#
RAG 的優勢在於它能夠檢索外部知識庫並結合 LLM 進行生成,但如果檢索到的資料:
- 品質較差(如包含噪音、無關資訊)
- 與問題無關(例如檢索出的文本與心理健康主題的求助態度無直接關聯)則會導致最終的回答不精確,甚至影響評估指標(如 F1-score)。
🔹 改進方式:
- 增強檢索機制(如使用更精細的向量檢索方法,或者微調檢索索引)
- 過濾檢索內容,確保其與目標任務高度相關
2. RAG 依賴檢索 + 生成,而 BERT 直接分類#
BERT 是一個 分類模型,它基於預訓練的語言理解能力,針對輸入文本直接進行分類,而 RAG 需要先檢索,再進行生成。這樣的架構帶來了一些挑戰:
- 檢索與生成的錯誤傳遞(Garbage In, Garbage Out):如果檢索階段的資訊不夠準確,生成階段就會受到影響。
- 生成的不確定性:RAG 最終的輸出來自於 LLM,而 LLM 本身可能會產生不夠精確的回答
🔹 改進方式:
- 嘗試結合 提取式問答(Extractive QA) 而非 生成式回答,避免生成過於自由的問題
- 控制 LLM 的輸出格式,使其更貼近分類需求
3. RAG 的訓練方式 vs. BERT 的訓練方式#
- BERT 是針對 標註數據 訓練的監督式分類器
- RAG 則依賴檢索 + 生成,並且很可能 沒有針對該特定任務微調,導致它無法像 BERT 那樣專門針對分類進行優化
🔹 改進方式:
- 針對 心理健康 這個特定任務,微調 RAG 的檢索與生成模型,使其更貼近分類需求
- 使用 混合方法(如讓 RAG 先檢索 + BERT 來做分類)
結論#
MentalHealthRAG 提供了一個有趣的思考方向,即透過 LLM 來分析心理健康議題,並探索公眾對精神疾病的認知與求助態度。
這次練習 RAG,利用 AI 快速建構了一個心理健康議題的分析工具,讓我對檢索增強生成技術的應用有了更深入的理解。在回應準確性方面,雖然 RAG 能結合外部知識進行文件分類,但準確性仍有待加強。期望未來可以結合更多的回答策略或提示來提高準確性。
