Home
學生控制台
註冊會員/登入
研究知情同意書
UeduGPTs
Aida 優學伴
Uedu Open
支援與訊息

UeduGPTs

--

Jupyters

3

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 模型名稱與版本