本地 AI
進階
本地 AI

讓本地 AI 讀你的文件:RAG 知識庫入門

不用懂原理也能做:用 Open WebUI 的知識庫上傳文件問答;想自己寫程式的人,附上 40 行 Python 的最小版本。
1 小時
5 步
免費
編
AI 有解編輯部
最後更新 2026 年 11 月 4 日・CC BY 4.0
用到的工具
Python
RAG(檢索增強生成)的意思是:先從你的文件裡找出相關段落,再交給 AI 根據這些段落回答。資料留在本機,又能回答你公司的專屬問題。
你需要準備
•
已完成〈打造自己的私人 ChatGPT〉
•
幾份 PDF、Word 或文字檔(例如公司規章、產品手冊)
進度 0/5
1

先懂流程(一張圖)

文字
你的文件 → 切成小段 → 每段轉成「向量」存起來 你的問題 → 轉成向量 → 找出最相近的幾段 → 連同問題交給 AI → 回答並附出處
2

用 Open WebUI 建立知識庫(不用寫程式)

1.
左側「工作區」→「知識庫」→ 新增,例如「公司規章」。
2.
上傳文件,等它處理完成。
3.
回到對話,輸入 # 選擇這個知識庫,再提問。
提示詞
根據知識庫回答:請假需要提前幾天申請?請附上出處文件與段落,找不到就說找不到。
3

下載專門做向量的模型

終端機
ollama pull nomic-embed-text
在 Open WebUI 的管理員設定 → 文件,可以把嵌入模型改成用 Ollama 的這個模型,中文文件也可以試試多語言的嵌入模型。
4

自己寫最小版本(Python)

終端機
pip install ollama numpy
Python
import ollama import numpy as np docs = open("rules.txt", encoding="utf-8").read().split("\n\n") # 依空行切段 def embed(text): return np.array(ollama.embed(model="nomic-embed-text", input=text)["embeddings"][0]) vectors = [embed(d) for d in docs] def ask(question, k=3): q = embed(question) scores = [float(q @ v / (np.linalg.norm(q) * np.linalg.norm(v))) for v in vectors] top = [docs[i] for i in np.argsort(scores)[::-1][:k]] context = "\n---\n".join(top) reply = ollama.chat( model="qwen3:8b", messages=[{"role": "user", "content": f"只根據以下資料回答,找不到就說找不到。\n資料:\n{context}\n\n問題:{question}"}], ) return reply["message"]["content"] print(ask("請假要提前幾天申請?"))
5

提升準確度的四個技巧

1.
切段要有意義:依標題或段落切,不要硬切字數。
2.
每段帶標題:段落前面加上它屬於哪一章。
3.
要求附出處,並在介面上能點回原文。
4.
找不到就說找不到,寫在提示詞裡。
你照著做成功了嗎?
成為第一個回報的人。你的回報會決定攻略排序與作者分潤。
下一步
讓你的程式呼叫本地 AI:見〈用程式呼叫本地 AI〉。
收錄在學習路線
廣告版位
想讓正在用 AI 的人看到你的產品?了解廣告合作
問與答
卡住的地方、補充的做法都可以留在這裡
還沒有人留言。
更多「本地 AI」攻略