完整離線 RAG
適合資料敏感或無外網的環境。首次 embedding 需 ~30 GB RAM + 10-30 分鐘。
from datasets import load_dataset
from sentence_transformers import SentenceTransformer
import faiss
ds = load_dataset("lius-cc/daoism-knowledge-rag", split="train")
enc = SentenceTransformer("BAAI/bge-m3")
emb = enc.encode(
[f"{x['name']}:{x['summary']}" for x in ds],
normalize_embeddings=True,
)
idx = faiss.IndexFlatIP(emb.shape[1])
idx.add(emb)
# Query
q = enc.encode(["三朝醮 流程"])
scores, ids = idx.search(q, k=5)
for i in ids[0]:
print(ds[int(i)]["name"])