簡單來說就是將文字轉換成高維度的數字序列-向量。
這串數字序列會捕捉文字的語義,讓意義相近的文字擁有相似的數字序列。
使用Hugging Face的嵌入模型來完成這個轉換。Hugging Face 是一個開源社群,提供了大量已經訓練好的 AI 模型。我們只需要選擇一個適合的模型,它就會自動幫我們完成向量化的工作。
以下是範例程式碼:
# 昨天處理好的物件列表
processed_documents = [
Document(page_content="景點名稱:士林夜市\n地址:台北市士林區\n介紹:士林夜市是台北市範圍最大的夜市,也是國外觀光客造訪台北必去的觀光景點。",
metadata={"source": "台北旅遊資料集", "title": "士林夜市"}),
Document(page_content="景點名稱:清境農場\n地址:南投縣仁愛鄉\n介紹:清境農場以其綠色草坪、綿羊秀和壯麗的山景聞名。",
metadata={"source": "南投旅遊資料集", "title": "清境農場"}),
# ... 其他 Document 物件
]
def generate_embeddings(documents: List[Document]):
print("開始載入 HuggingFace 嵌入模型...")
embeddings_model_name = "sentence-transformers/all-MiniLM-L6-v2"
embeddings = HuggingFaceEmbeddings(model_name=embeddings_model_name)
print("模型載入完成。開始將文件轉換為向量...")
# 使用 embeddings.embed_documents 將整個文件列表轉換為向量
document_vectors = embeddings.embed_documents([doc.page_content for doc in documents])
print(f"成功將 {len(documents)} 個文件轉換為向量。")
# 執行向量化函數
vectors, embeddings_instance = generate_embeddings(processed_documents)
當所有旅遊知識塊都擁有了專屬的「指紋」後,就可以將它們儲存起來,在需要時進行高速搜尋。
今天的向量化是整個RAG流程的基礎。
明天,我們會把這些向量儲存到FAISS向量資料庫中,讓AI顧問擁有一個真正的知識庫,謝謝各位今天的觀看。