HI!大家好,我是 Shammi 😊
第一個週末過去了…
我成功將 SDGs 知識庫的文字內容,轉化成了一組組的數字向量,而這些向量,就像是每一段知識的「指紋」。現在有個問題必需思考:有了這麼多的向量內容,要怎麼高效地管理它們,並在需要時快速找出最相似的那個呢?
所以,今天要探討向量資料庫(Vector Database),它就像是 AI 機器人的「記憶中樞」或「指紋辨識系統」,讓我的機器人能在在海量的知識指紋中,以毫秒級的速度進行搜尋,此次專案用的是「FAISS模組」。
在眾多向量資料庫解決方案中,我選擇 FAISS (Facebook AI Similarity Search) 作為實作工具。
FAISS 並非一個完整的資料庫,而是一個輕量級、高效能的向量索引函式庫。它的核心功能是能夠幫助我對大量向量進行索引,並以極快的速度執行相似性搜尋。
FAISS 的主要優勢在於:
👉 極致的速度:它針對 GPU 和 CPU 進行了優化,能處理數百萬甚至數十億個向量,並提供近乎即時的搜尋結果。
👉 專注於核心:它只做一件事,就是高效地相似性搜尋,這讓它變得非常精簡且強大。
透過 FAISS,我能夠把 Day 7 產生的所有 SDGs 知識向量,變成一個可搜尋、可快速檢索的索引。
在 Colab 筆記本中執行以下指令來安裝 FAISS:
#直接安裝穩定且高效能的 faiss-cpu 版本
!pip install faiss-cpu
此專案的效能使用CPU資源就己經很足夠了,但如後續需求更新要用到 GUP 資源時,可手動調整 Colab 為 GUP 資源更改。
補充:
要手動調整 Colab 的執行階段類型,確保它使用 GPU,請按照以下步驟操作:
完成這些步驟後,Colab 會重新啟動執行階段,並為你分配一個 GPU 資源。
建立 FAISS 索引並儲存
import faiss
#建立 FAISS 索引
vector_array = np.array(all_embeddings)
dimension = vector_array.shape[1]
index = faiss.IndexFlatL2(dimension)
index.add(vector_array)#將向量陣列加入到索引中
faiss.write_index(index, "sdgs_faiss.index") #將索引儲存到檔案中,方便載入
print(f"FAISS 索引中包含的向量數量: {index.ntotal}")
print("✅ FAISS 索引已儲存為 sdgs_faiss.index")
參考結果:
開賽第八天了,也近一步的將所有 SDGs 知識向量,存入了一個高效的 FAISS 向量索引中。這個索引,就是我的 AI 對話機器人「記憶中樞」。
有了這個記憶中樞,明天可以來實作最激動人心的部分:檢索機制!透過檢索機制可以設計一個能讓機器人能夠根據使用者的問題功能,從這個向量索引中,精準地找出最相關的 SDGs 內容。