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("請假要提前幾天申請?"))