Home
學生控制台
註冊會員/登入
研究知情同意書
UeduGPTs
Uedu Jupyter
我的學習畫像
學習特質探索
Uedu Mind
Uedu Fit
Garmin 儀錶板
運動紀錄
Wellness Toolkit
PALM
Uedu Brain Dev
Learning Portfolio
山巒地圖
我的證書
教師控制台
課程設定
EMI Toolkit
Assessment Toolkit
Interaction Toolkit
Forum Toolkit
AI 知識庫
功能介紹
教學實踐研究
學術交流
教學工作坊
活動主辦
課程搜尋
FAQ常見問答
使用教學
更新紀錄
學生研究團隊招募
建立AI助教說明
教師研究社群
教學研究支援
Uedu Labs
隱私權政策
資料安全
研究倫理
支援與訊息
支持 Uedu
Uptime 數據

UeduGPTs

--

Jupyters

6

AI 回覆桌面通知

AI 助教回覆完成時顯示桌面通知

聊天訊息通知

同學在討論區發送訊息時通知

聲音通知

每當有新通知時播放提示音

METHODOLOGY

Chat Embedding
語意向量方法論

說明 Uedu 平台如何將學生與 AI 助教的對話訊息向量化,透過語意搜尋與相似度比對,支援對話歷史檢索、相似問題偵測與研究聚類分析。

1. 概述

Chat Embedding 是 Uedu 平台的對話語意向量化模組,屬於 Educational Omics 框架中 Cognomics(認知歷程)與 Linguomics(語言表達)維度的基礎設施。

系統會將學生發送給 AI 助教的每一則訊息(request)轉換為高維度語意向量,儲存於資料庫中。這些向量可用於:

  • 語意搜尋:在對話歷史中以自然語言進行語意檢索,取代傳統關鍵字搜尋
  • 相似問題偵測:找出不同學生提出的語意相近問題,協助教師掌握學習痛點
  • 研究聚類分析:透過向量空間中的分布,分析學生的提問模式與認知軌跡
與 RAG 的關係

Chat Embedding 複用了 RAG(教材檢索增強)模組的 embedding 基礎設施,包括相同的模型(text-embedding-3-small)與向量維度(1536 維)。RAG 嵌入的是教材 chunks,Chat Embedding 嵌入的是學生對話訊息。

2. 向量化流程

2.1 嵌入對象

系統僅嵌入學生發送的訊息(request),不嵌入 AI 的回應(response)。這是因為研究關注的是學生的提問行為與認知表達,而非 AI 的輸出。

2.2 文本前處理

訊息在嵌入前需經過以下前處理步驟:

  1. 清理:去除多餘空白與格式雜訊
  2. 最短長度檢查:訊息至少需 2 個字元,過短的訊息(如單一標點符號)將被跳過
  3. Token 截斷:使用 cl100k_base tokenizer 計算 token 數,超過 8,000 tokens 的訊息會被截斷(並標記 was_truncated = 1
  4. 內容雜湊:計算 MD5 content hash,用於去重(deduplication),避免相同內容重複嵌入

2.3 嵌入模型

參數說明
模型text-embedding-3-smallOpenAI embedding model
向量維度1536輸出浮點數向量長度
Tokenizercl100k_baseGPT-4 / embedding 共用
最大 Token8,000超過即截斷

2.4 雙路徑處理

系統採用即時 + 批次回填的雙路徑架構,確保新訊息即時向量化,同時補齊歷史數據:

Chat Embedding 雙路徑架構 學生訊息 request to AI chat_log 寫入 即時嵌入 embed_message_async daemon thread per message 批次回填 3 workers · log_id % 3 分區 15 秒輪詢 · 每批 50 筆 補齊歷史未嵌入訊息 chat_message_embeddings log_id (UK) · embedding BLOB content_hash · token_count INSERT IGNORE 冪等寫入 語意搜尋 cosine similarity in-memory cache

2.5 跳過訊息處理

不符合嵌入條件的訊息(過短、無實質內容)會被寫入一筆 NULL embedding 記錄,以防止批次回填程序反覆嘗試處理。這確保每則訊息只被評估一次。

3. 語意搜尋機制

3.1 搜尋原理

語意搜尋使用餘弦相似度(cosine similarity)計算查詢向量與資料庫中所有嵌入向量的相似程度。系統使用 numpy 矩陣運算進行高效計算:

similarity = (A · B) / (||A|| × ||B||)

3.2 範圍篩選

搜尋支援三種範圍篩選,可依研究需求限縮搜尋範圍:

篩選範圍說明適用場景
Classroom限定特定課程的所有對話教師搜尋全班學生的提問
User限定特定學生的對話追蹤個別學生的認知軌跡
Chat限定特定對話串在單一對話中搜尋上下文

3.3 搜尋參數

參數預設值範圍說明
top_k101 ~ 50回傳最相似的前 k 筆結果
threshold0.30.0 ~ 1.0最低相似度門檻,低於此值的結果會被過濾

3.4 記憶體快取

為提升搜尋效能,系統為每個範圍鍵(scope key)維護一組記憶體快取(in-memory cache),快取策略如下:

  • TTL:5 分鐘自動過期
  • 快取失效:當該範圍有新的嵌入寫入時,快取即刻失效並重新載入
  • 快取內容:包含向量矩陣與對應的 metadata,避免重複資料庫查詢

4. 系統參數

參數說明
Embedding Modeltext-embedding-3-smallOpenAI embedding 模型
向量維度1536每則訊息產生的浮點數向量長度
最短訊息長度2 字元低於此長度的訊息不嵌入
最大 Token 數8,000超過即截斷(cl100k_base
Content HashMD5用於內容去重
即時嵌入daemon thread每則新訊息觸發一個背景執行緒
批次 Workers3log_id % 3 分區
批次輪詢間隔15 秒每個 worker 的輪詢週期
批次大小50 筆每次輪詢處理的最大訊息數
搜尋 top_k10(最大 50)預設回傳筆數
搜尋門檻0.3最低 cosine similarity
快取 TTL5 分鐘per scope key
寫入策略INSERT IGNORE冪等性保證

5. 批次處理

5.1 批次回填架構

批次回填程序負責處理即時嵌入遺漏的訊息(例如服務重啟期間產生的訊息),以及系統上線前的歷史訊息。

  • Worker 數量:3 個並行 worker
  • 分區策略:以 log_id % 3 分配訊息到不同 worker,避免重複處理
  • 輪詢間隔:每 15 秒查詢一次資料庫,取得尚未嵌入的訊息
  • 批次大小:每次最多處理 50 筆訊息

5.2 冪等性保證

資料庫以 log_id 作為 UNIQUE KEY,寫入時使用 INSERT IGNORE。即使即時路徑與批次路徑同時處理同一則訊息,也不會產生重複記錄。

為什麼需要雙路徑?

即時路徑確保新訊息在送出後立即可被語意搜尋,提供最佳使用者體驗。批次路徑則負責補齊所有遺漏,確保資料完整性。兩者透過 INSERT IGNORE 協同運作,互不干擾。

6. 資料儲存

6.1 資料表結構

嵌入結果儲存於 chat_message_embeddings 資料表:

欄位型態說明
idINT AUTO_INCREMENT PK主鍵
log_idINT, UNIQUE KEY對應 chat_log 的訊息 ID
embeddingBLOB1536 維浮點數向量(二進位格式)
content_hashCHAR(32)MD5 內容雜湊,用於去重
content_previewVARCHAR(200)訊息前 200 字元預覽
token_countINT訊息的 token 數量
was_truncatedTINYINT(1)是否經過截斷(0/1)
created_atDATETIME嵌入時間

6.2 NULL Embedding 記錄

不符合嵌入條件的訊息(長度不足、無實質內容)會寫入一筆 embedding = NULL 的記錄。這使得批次回填程序可以透過 LEFT JOIN 快速識別尚未處理的訊息,避免反覆嘗試。

儲存空間考量

每筆 embedding 為 1536 個 float32,佔用約 6 KB。以一門 50 人、每人平均 200 則訊息的課程計算,約需 60 MB 儲存空間。建議定期監控資料表大小。

7. 研究引用建議

方法論描述範本

學生與 AI 助教的對話訊息透過 Uedu 平台的 Chat Embedding 模組進行語意向量化。系統使用 OpenAI text-embedding-3-small 模型(1536 維),將每則學生訊息(request)轉換為語意向量。文本前處理包含最短長度檢查(2 字元)、cl100k_base tokenizer 截斷(上限 8,000 tokens)及 MD5 內容雜湊去重。系統採用即時嵌入(daemon thread)與批次回填(3 workers、log_id % 3 分區、15 秒輪詢、每批 50 筆)的雙路徑架構。語意搜尋採用餘弦相似度(cosine similarity),支援課程、使用者、對話串三種範圍篩選,預設回傳前 10 筆相似結果(門檻 0.3)。嵌入結果儲存於 chat_message_embeddings 資料表,以 INSERT IGNORE 確保冪等性。詳細方法論說明見 https://uedu.tw/doc/chat-embedding。

建議同時提供:

  • 嵌入的訊息類型(僅學生 request 或含 AI response)
  • 資料收集期間與有效訊息數量
  • 搜尋參數設定(top_k、threshold)
  • 知情同意書版本與 IRB 核准文號
  • 若用於聚類分析,說明所用的降維與聚類演算法