
來源 | Datawhale
作者 | 吳錦鳳 冬靈
首篇:零基礎入門:DeepSeek微調教程來了!
前篇:微調篇「資料集構建」保姆級教程來了!
這次是「資料集構建」保姆級教程第二篇,會持續更新。
一、構建屬於自己的知識庫
檢索增強生成(Retrieval Augmented Generation),簡稱 RAG。在構建RAG(Retrieval-Augmented Generation)的向量知識庫時,資料的處理方式直接影響系統的效能和可靠性。不能隨意塞入未經處理的資料,否則可能導致檢索效果差、生成結果不準確甚至安全隱患。
二、構建向量知識庫資料集強調事項
資料質量直接影響結果(向量知識庫資料集嚴禁噪聲與微調不一樣!!!)
-
問題:噪聲、重複、低質資料會汙染知識庫,導致檢索到無關內容。 -
解決方案: -
清洗資料:去除HTML標籤、特殊符號、亂碼等噪聲。 -
去重:合併相似內容,避免冗餘資料干擾檢索。 -
標準化:統一文字格式(如日期、單位)、大小寫、標點符號。 -
質量篩選:優先保留權威來源、高可信度的內容。
資料與場景的匹配性
-
問題:知識庫與應用場景偏離會導致檢索失效。 -
解決方案: -
場景過濾:僅保留與目標任務相關的資料(例如醫療場景需剔除無關行業內容)。 -
動態更新:定期增量更新資料,避免時效性內容過期。 -
冷啟動最佳化:初期可引入人工標註的高質量種子資料。
安全與合規風險
-
問題:隨意匯入資料可能洩露敏感資訊或引入偏見。 -
解決方案: -
敏感資訊過濾:使用NER識別並脫敏(如身份證號、電話號碼)。 -
偏見檢測:透過公平性評估工具(如Fairness Indicators)篩查歧視性內容。 -
許可權控制:對知識庫分級訪問,限制敏感資料檢索許可權。
如果你不是使用Dify開源框架構建向量資料庫,而是使用類似faiss向量資料庫構建向量資料庫還有以下注意事項:
1.文字分塊(Chunking)需策略化
-
問題:隨意分塊可能導致語義不完整,影響向量表示。 -
解決方案: -
按語義切分:使用句子邊界檢測、段落分割或基於語義相似度的演算法(如BERT句間相似度)。 -
動態調整塊大小:根據資料特性調整(例如技術文件適合較長的塊,對話資料適合短塊)。 -
重疊分塊:相鄰塊保留部分重疊文字,避免關鍵資訊被切分到邊緣。
2.向量化模型的適配性
-
問題:直接使用通用模型可能無法捕捉領域語義。 -
解決方案: -
領域微調:在領域資料上微調模型(如BERT、RoBERTa)以提升向量表徵能力。 -
多模態支援:若包含圖表、程式碼等,需選擇支援多模態的模型(如CLIP、CodeBERT)。 -
輕量化部署:權衡精度與效率,可選擇蒸餾後的模型(如MiniLM)。
3.索引結構與檢索效率
-
問題:海量資料未經最佳化會導致檢索延遲。 -
解決方案: -
分層索引:對高頻資料使用HNSW,長尾資料用IVF-PQ(Faiss或Milvus)。 -
元資料過濾:為資料新增標籤(如時間、類別),加速粗篩過程。 -
分散式部署:按資料熱度分片,結合快取機制(如Redis)提升響應速度。
補充說明:向量知識庫資料集也要是問答對?
將資料整理成問答對(QA Pair)形式是一種最佳化策略,而非必要步驟。但這種方式在特定場景下能顯著提升檢索和生成的效果。以下是其核心原因和適用場景的分析:
1. 為什麼問答對形式能最佳化RAG?
(1)精準對齊使用者查詢意圖
-
問題:使用者輸入通常是自然語言問題(如“如何重置密碼?”),而知識庫若儲存的是純文字段落(如技術文件),檢索時可能因語義差異導致匹配失敗。 -
問答對的優勢: -
直接以“問題-答案”形式儲存知識,檢索時相似度計算更聚焦於“問題與問題”的匹配(Question-Question Similarity),而非“問題與段落”的匹配。 -
例如,若知識庫中存有QA對 Q: 如何重置密碼? → A: 進入設定頁面,點選“忘記密碼”…,當用戶提問“密碼忘了怎麼辦?”時,即使表述不同,向量模型也能捕捉到語義相似性。
(2)降低生成模型的負擔
-
問題:若檢索到的是長文字段落,生成模型(如GPT)需要從段落中提取關鍵資訊並重組答案,可能導致資訊冗餘或遺漏。 -
問答對的優勢: -
答案部分已是對問題的直接回應,生成模型只需“改寫”或“補充”答案,而非從頭生成,降低幻覺風險。 -
例如,QA對中的答案已結構化(如步驟列表),生成結果更規範。
(3)提升檢索效率與召回率
-
問題:傳統分塊檢索可能因文字塊過長或過短導致關鍵資訊丟失(如答案分散在多個段落)。 -
問答對的優勢: -
每個QA對是自包含的語義單元,檢索時直接返回完整答案,減少上下文碎片化問題。 -
可針對高頻問題設計專用QA對,提高熱門問題的響應速度和準確性。
2. 哪些場景適合問答對形式?
(1)任務型對話系統
-
適用場景:客服機器人、技術支援、醫療諮詢等垂直領域。 -
原因:使用者需求明確,答案通常簡短且結構化(如操作步驟、診斷建議)。 -
案例: -
使用者問:“如何退訂會員?” → 直接匹配QA對中的答案:“登入賬號→進入訂閱管理→點選取消”。
(2)FAQ(常見問題解答)庫
-
適用場景:產品幫助文件、政策解讀等。 -
原因:FAQ天然適合QA形式,直接覆蓋高頻問題。 -
案例: -
知識庫儲存 Q: 保修期多久? → A: 本產品保修期為2年。
(3)知識密集型生成任務
-
適用場景:需要精確引用事實的場景(如法律諮詢、學術問答)。 -
原因:QA對中的答案可作為“事實錨點”,減少生成模型的自由發揮。 -
案例: -
使用者問:“《民法典》規定離婚冷靜期多久?” → 返回QA對中的法條原文。
問答對構建的注意事項
並非所有資料都適合QA形式
-
避免強制轉換: -
敘述性文字(如小說、新聞)或開放域知識(如百科條目)更適合以段落或實體為中心儲存。 -
強行拆分為QA可能導致資訊割裂(例如將“量子力學發展史”拆解為多個不連貫的問答)。
三、具體步驟示例(大學生求職不踩坑指南資料集——基於Dify向量知識庫構建)
1、明確目標
確定你要解決的問題或任務,然後就可以尋找優質的資料集以及構建自己的資料集了~
2、資料收集
原始文件格式轉換
可以是pdf轉word,也可以是ppt轉word,pdf轉tx,
經過測試,大模型對TXT格式文件的識別度較高,尤其是在中文語言編碼的情況下。因此,建議使用第三方工具將原始文件轉換為TXT格式,以提高大模型的識別效果。 以下是筆者用過的一些方式:
2.1. 懶人辦公(免費)
https://www.lanren.work/pdf/pdf-to-txt.html

2.2. 電腦自帶的word
這個每個人的電腦都有,但是要看轉換效果,感覺方法一可能效果會更好,要根據實際情況決定

2.3. wps(要會員)
這個方法適用於有wps的小夥伴,

3、資料標註和資料清洗
3.1、匯入檔案到大模型對話助手,進行初步格式調整
GPT可以進行轉換,但不是所有ai助手的都可以進行格式轉換
提示詞模板:
幫我去除掉文件中所有空格,刪除掉所有頁碼,同時刪除掉“xx”相關字樣,記住無需保留空行。

3.2、格式重新調整
把問題以QA形式羅列,格式如下,記住每個問答之間空格一行:
Q:問題
A:答案
原文字中問題格式為:
xxxxxxxxx
答案為下一個問題之前的所有文字

到這隻需要人工再進行一些抽驗~沒問題的話,資料集就建立完成了!效果如下~

如果還有問題的話,可以再讓GPT進行調整
3.3、匯入Dify進行資料集訓練



測試一下~構建一個agent

引用知識庫~

這樣資料集就構建好啦~

四、完結感言
首先,非常感謝合作小夥伴冬靈和我一起共創資料集構建系列二。
其次,非常感謝Deepseek官網滿血版以及kimi在本章的程式碼修改、資料收集以及文章潤色方面提供的寶貴幫助!
這是本系列的第二篇,中間還有很多需要完善的地方,我們非常期待各位小夥伴的寶貴建議和指正,讓我們共同進步,一起在AI學習的道路上探索更多樂趣!
技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群
關於我們
MLNLP 社群是由國內外機器學習與自然語言處理學者聯合構建的民間學術社群,目前已經發展為國內外知名的機器學習與自然語言處理社群,旨在促進機器學習,自然語言處理學術界、產業界和廣大愛好者之間的進步。
社群可以為相關從業者的深造、就業及研究等方面提供開放交流平臺。歡迎大家關注和加入我們。

掃描二維碼新增小助手微信
關於我們
