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

5

AI 回覆桌面通知

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

聊天訊息通知

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

聲音通知

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

METHODOLOGY

RAG 教材檢索增強
方法論

說明 Uedu 平台如何透過 Retrieval-Augmented Generation(RAG)技術,讓 AI 助教的回覆以教師上傳的教材為依據,提高回答的準確性與教學相關性。

1. 概述

Uedu 平台的 AI 助教(UeduGPTs)支援 AI 知識庫 功能:教師上傳課程教材(PDF、DOCX、PPTX),系統自動將教材內容切塊、向量化,並在學生提問時進行語意檢索,將最相關的教材片段注入 AI 的 System Prompt,使 AI 的回覆能以教材內容為依據。

此機制稱為 RAG(Retrieval-Augmented Generation),是目前業界讓 LLM 回答「有依據」的主流方法。本文件說明 Uedu 的 RAG 實作細節,供研究者理解資料產生過程。

2. 什麼是 RAG

RAG(Retrieval-Augmented Generation)是一種結合資訊檢索文本生成的技術架構(Lewis et al., 2020)。其核心概念為:

  1. Retrieval(檢索):當使用者提出問題時,先從知識庫中找出最相關的文件片段
  2. Augmentation(增強):將檢索到的片段作為額外上下文注入 LLM 的輸入
  3. Generation(生成):LLM 基於原始問題 + 檢索到的教材內容生成回答

相較於僅依賴 LLM 內建知識的回答,RAG 可以讓 AI 的回覆以特定教材為依據,降低幻覺(hallucination)的風險,並確保回答內容與課程相關。

3. 資料處理流程

教師上傳教材後,系統在背景執行以下處理流程:

RAG 資料處理 Pipeline 教師上傳教材(PDF / DOCX / PPTX) Step 1:文字提取 pypdf / python-docx / python-pptx 提取全文 保留頁碼 / 投影片編號 Step 2:語意分塊(Chunking) tokenizer: cl100k_base (tiktoken) max_tokens=800, overlap=100, min_tokens=20 相鄰 chunk 有 100 token 重疊,避免語意在邊界斷裂 Step 3:向量嵌入(Embedding) model: text-embedding-3-small, 1536 維 批次處理,每批 20 個 chunks Step 4:儲存至資料庫 rag_chunks 表:content + embedding (BLOB) + 頁碼 + token 數 Step 5:載入記憶體快取 numpy matrix 快取(TTL 5 分鐘),加速後續檢索 選用:自動觸發 知識圖譜生成 (GraphRAG 模式) 教材就緒,等待學生提問

3.1 文字提取

系統支援三種文件格式,使用對應的 Python 套件提取全文:

格式提取工具頁碼追蹤
PDFpypdf保留原始頁碼
DOCXpython-docx無頁碼(段落合併)
PPTXpython-pptx保留投影片編號

3.2 語意分塊(Chunking)

提取的全文使用 tiktoken cl100k_base tokenizer 進行 token 級分塊:

  • 最大 chunk 長度:800 tokens
  • 相鄰 chunk 重疊:100 tokens — 確保跨 chunk 邊界的語意不會斷裂
  • 最小 chunk 長度:20 tokens — 過短的片段會被丟棄

分塊在逐頁(或逐投影片)內進行。若單頁文字不超過 800 tokens,該頁整體作為一個 chunk;否則在 token 層級滑動切割。

3.3 向量嵌入(Embedding)

每個 chunk 的文字內容通過 OpenAI text-embedding-3-small 模型轉換為 1536 維的稠密向量,以 float32 格式儲存於資料庫的 BLOB 欄位。

4. 語意檢索機制

學生送出提問時,系統在回覆前執行以下檢索步驟:

  1. 將學生的問題文字通過同一 embedding 模型(text-embedding-3-small)轉為 1536 維向量
  2. 從記憶體快取載入該課程所有 chunk 的 embedding matrix(快取 TTL 5 分鐘)
  3. 計算問題向量與所有 chunk 向量的 cosine similarity
  4. 取相似度最高的 top-k 個 chunks,過濾掉低於 threshold 的結果
  5. 將檢索到的教材片段格式化後注入 AI 的 System Prompt
Cosine Similarity

餘弦相似度衡量兩個向量在方向上的接近程度,值域 [-1, 1]。在 embedding 空間中,語意相近的文本會有較高的相似度分數。系統使用 numpy 進行高效的矩陣運算。

5. 系統參數

參數說明
EMBEDDING_MODELtext-embedding-3-smallOpenAI embedding 模型
EMBEDDING_DIMENSIONS1536向量維度
CHUNK_MAX_TOKENS800每個 chunk 的最大 token 數
CHUNK_OVERLAP_TOKENS100相鄰 chunk 重疊的 token 數
CHUNK_MIN_TOKENS20chunk 最小長度(低於此值丟棄)
RETRIEVAL_TOP_K3每次檢索回傳的最大 chunk 數
RETRIEVAL_THRESHOLD0.3最低 cosine similarity 門檻
CACHE_TTL300 秒記憶體快取存活時間

6. GraphRAG 擴展

Uedu 支援進階的 GraphRAG 模式。當教師開啟此模式時,系統除了標準的向量檢索外,還會利用知識圖譜進行圖擴展檢索

  1. 標準向量檢索命中若干 chunks
  2. 查詢這些 chunks 對應的知識概念(kg_concepts)
  3. 沿知識圖譜的關聯邊(1-hop)找到相鄰概念
  4. 將相鄰概念的教材 chunks 補充進檢索結果(最多額外 3 個)

圖擴展時,prerequisite(先備知識)和 contains(包含關係)的邊權重會獲得 1.2 倍加成,優先補充這兩類關聯的教材。

標準 RAG vs. GraphRAG

標準 RAG 僅依靠向量相似度檢索,可能遺漏「語意不直接相似但概念上相關」的教材。GraphRAG 透過知識圖譜的結構化關聯補充這些片段,提高回答的完整性。

7. 檢索紀錄與透明性

每次檢索的詳細紀錄都儲存於 rag_retrieval_log 資料表,包含:

  • query_text:學生的原始提問
  • chunk_ids:檢索命中的 chunk ID 陣列
  • similarity_scores:對應的 cosine similarity 分數
  • retrieval_time_ms:檢索耗時(毫秒)

這些紀錄可供研究者分析「AI 回答時參考了哪些教材片段」,以及「學生的提問與教材的語意匹配程度」。

8. 研究引用建議

方法論描述範本

AI 助教的回覆透過 Retrieval-Augmented Generation(RAG; Lewis et al., 2020)技術以教師上傳的教材為依據。教材文件(PDF/DOCX/PPTX)經文字提取後,使用 tiktoken cl100k_base tokenizer 進行語意分塊(每塊最多 800 tokens,相鄰重疊 100 tokens),並透過 OpenAI text-embedding-3-small 模型轉換為 1536 維稠密向量。學生提問時,系統以 cosine similarity 檢索語意最相關的教材片段(top-3,門檻 0.3),注入 AI 的 System Prompt 作為回覆依據。每次檢索紀錄(命中片段、相似度分數)均保存供研究分析。詳細方法論說明見 https://uedu.tw/doc/rag。

建議同時附註以下資訊:

  • 課程使用的是標準 RAG 或 GraphRAG 模式
  • 上傳的教材數量與總 token 數(可從教師端查看)
  • embedding 模型名稱與版本