iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0
Software Development

建構跨平台AI對話機器人:從LINE到Telegram實踐SDGs推廣的30天專案紀實系列 第 8

Day 8【向量資料庫】用 FAISS 打造 AI 機器人的記憶中樞

  • 分享至 

  • xImage
  •  

HI!大家好,我是 Shammi 😊

第一個週末過去了…
我成功將 SDGs 知識庫的文字內容,轉化成了一組組的數字向量,而這些向量,就像是每一段知識的「指紋」。現在有個問題必需思考:有了這麼多的向量內容,要怎麼高效地管理它們,並在需要時快速找出最相似的那個呢?

所以,今天要探討向量資料庫(Vector Database),它就像是 AI 機器人的「記憶中樞」或「指紋辨識系統」,讓我的機器人能在在海量的知識指紋中,以毫秒級的速度進行搜尋,此次專案用的是「FAISS模組」。

🌐 一、FAISS模組介紹:專為高效相似性搜尋而生的工具

在眾多向量資料庫解決方案中,我選擇 FAISS (Facebook AI Similarity Search) 作為實作工具。

FAISS 並非一個完整的資料庫,而是一個輕量級、高效能的向量索引函式庫。它的核心功能是能夠幫助我對大量向量進行索引,並以極快的速度執行相似性搜尋。

FAISS 的主要優勢在於:
👉 極致的速度:它針對 GPU 和 CPU 進行了優化,能處理數百萬甚至數十億個向量,並提供近乎即時的搜尋結果。
👉 專注於核心:它只做一件事,就是高效地相似性搜尋,這讓它變得非常精簡且強大。

透過 FAISS,我能夠把 Day 7 產生的所有 SDGs 知識向量,變成一個可搜尋、可快速檢索的索引。

🌐 二、實作教學:使用 FAISS 建立向量索引

步驟 1:安裝 FAISS 套件(新增程式區塊)

在 Colab 筆記本中執行以下指令來安裝 FAISS:

#直接安裝穩定且高效能的 faiss-cpu 版本
!pip install faiss-cpu

此專案的效能使用CPU資源就己經很足夠了,但如後續需求更新要用到 GUP 資源時,可手動調整 Colab 為 GUP 資源更改。

補充:

要手動調整 Colab 的執行階段類型,確保它使用 GPU,請按照以下步驟操作:

  1. 在你的 Colab 筆記本上方選單列,點擊「執行階段 (Runtime)」。
  2. 在下拉式選單中,選擇「變更執行階段類型 (Change runtime type)」。
  3. 在彈出的視窗中,找到「硬體加速器 (Hardware accelerator)」選項。
  4. 從下拉式選單中,選擇「GPU」。
  5. 點擊右下角的「儲存 (Save)」。

完成這些步驟後,Colab 會重新啟動執行階段,並為你分配一個 GPU 資源。

步驟 2:準備向量資料(新增程式區塊)

建立 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")

參考結果:
https://ithelp.ithome.com.tw/upload/images/20250902/20151627hZKQotJfwR.jpg

總結

開賽第八天了,也近一步的將所有 SDGs 知識向量,存入了一個高效的 FAISS 向量索引中。這個索引,就是我的 AI 對話機器人「記憶中樞」。

有了這個記憶中樞,明天可以來實作最激動人心的部分:檢索機制!透過檢索機制可以設計一個能讓機器人能夠根據使用者的問題功能,從這個向量索引中,精準地找出最相關的 SDGs 內容。


上一篇
Day 7【向量化】 實作將 PDF 內容向量化:為你的 AI 機器人建立知識庫的基石
下一篇
Day 9【檢索機制】實作檢索功能:讓機器人具備「查閱」能力
系列文
建構跨平台AI對話機器人:從LINE到Telegram實踐SDGs推廣的30天專案紀實9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言