iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
佛心分享-IT 人自學之術

學習 LLM系列 第 28

Day28 寫 README

  • 分享至 

  • xImage
  •  

概述

  • FAQ 資料管理(faqs.csv)
  • 對話歷史記錄(SQLite / JSONL 可選)
  • 向量檢索(Sentence-Transformers embedder + Chroma / FAISS 選用)
  • 簡易 CLI 與 Colab 執行範例
  • 測試流程

目錄

  • run_faq.py:主 CLI 程式(檢索 FAQ、簡單回覆、記錄對話歷史)
  • run_chat.py:簡易 CLI 聊天(使用 SQLite 記憶示範)
  • memory_sqlite.py:SQLite 記憶工具(初始化、寫入、取最近)
  • simple_memory.py:JSONL 記憶工具
  • day27_test.ipynb 或 day27_test.py:Day27 測試流程(20 筆中文測試、匯出報表)
  • faqs.csv:FAQ 資料(id, question, answer)
  • faq_question_embeddings.npy:FAQ 問題 embeddings(可重建)

快速安裝
i> !pip install -q sentence-transformers chromadb faiss-cpu pandas transformers gradio
ii> 把專案檔案(run_faq.py, memory_sqlite.py, faqs.csv 等)貼成 cell 並執行 %%writefile 以建立檔案

FAQ 檔案格式
CSV 欄位範例(UTF-8 / utf-8-sig)
更新 FAQ 的基本流程:

  1. 編輯 faqs.csv(加入/修改/刪除列)
  2. 重新跑 embedding(或刪除 faq_question_embeddings.npy 讓程式重建)
  3. 重新建立或 upsert 向量索引(Chroma/FAISS)

測試 20 筆中文測試

  1. 準備 test_queries.csv(20 筆)
  2. 載入 FAQ 的 embeddings
  3. 對每一題做 top-k 檢索
  4. 自動判定(id 比對 or fuzzy 字串比對)

常見錯誤與排除建議
ValueError: You are using a deprecated configuration of Chroma.

  • 原因:使用舊版 chromadb.Client(Settings(...)) 初始化
  • 解法:改用 chromadb.PersistentClient(path=...) 並使用 get_or_create_collection() / upsert()

ModuleNotFoundError: No module named 'memory_sqlite'

  • 原因:在 Notebook 內沒有把 .py 檔寫出來
  • 解法:使用 %%writefile memory_sqlite.py 建立檔案,或把程式放在同一個 cell 中直接執行

argparse 在 Colab 出現 -f /.../kernel-xxx.json 參數錯誤

  • 解法:在程式中使用 args, unknown = parser.parse_known_args() 或於 Colab 中以 !python run_faq.py 單獨執行

記憶體不足 / OOM

  • 解法:使用較小的 embedder(如 paraphrase-multilingual-MiniLM-L12-v2)、減少 batch_size、或在 Colab 選用 GPU/TPU(或用 CPU 版本的模型)

Chroma distances 行為不同

  • 注意:不同版本的 Chroma 返回距離(越小越好)或相似度(越大越好),上線前務必 print() 檢查 sample 值並調整判定邏輯(例如把距離轉為 similarity: sim = 1/(1+dist))

上一篇
Day27 專案測試
下一篇
Day29 DEMO
系列文
學習 LLM29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言