什麼是 pgvector?

pgvector 是 PostgreSQL (又稱 Postgres) 的擴充功能,可簡化向量處理作業,讓您直接在關聯式資料庫儲存、搜尋及建立向量索引。

有了 pgvector,您就能輕鬆將相似度搜尋等進階功能新增至應用程式和 AI 代理,而且還能擴充規模,不必移動資料或變更應用程式架構,即可連結新的向量資料類型。

使用 pgvector、LangChain 和 LLM,在 Google Cloud 建構 AI 輔助應用程式

重點摘要

pgvector 是 PostgreSQL 的開放原始碼擴充功能,可協助您直接在現有的 PostgreSQL 資料庫中儲存、建立索引及搜尋高維度向量。pgvector 以支援下列功能聞名:

  • 相似度搜尋:比較資料中的語意模式,而非比對關鍵字
  • AI 應用程式:AI 代理作業和搜尋應用程式,包括推薦引擎、聊天機器人、自然語言處理和異常偵測

什麼是向量?

向量會以數字表示資料,並擷取資料的主要特徵,將資料對應至虛擬數學空間。在這個空間中,如果是相似的項目 (例如字詞、圖片或物件),彼此位置會很靠近。

舉例來說,傳統的關鍵字搜尋不會將「coat」和「jacket」視為相似字詞,因為這兩個字的字母差異很大。電子商務系統若想將這些關鍵字整合在一起,就必須手動完成。不過,這兩個詞的向量表示法會非常接近,因為它們的意義相似,因此能為使用者提供更準確的搜尋結果,並節省開發人員的時間。

同樣地,如果拍攝兩張不同的貓咪相片,像素可能會大相逕庭。不過,在數學空間中,這兩張圖片的向量嵌入會非常接近,就像人類可以輕易辨識出兩者都是貓的圖片:

Gemini 生成的貓咪圖像

為實現這點,嵌入模型會將原始資料 (例如圖片或文字) 轉換為向量嵌入,而 pgvector 會將這些嵌入儲存在資料庫中。使用者提交查詢時,輸入內容也會轉換成向量。接著,pgvector 會計算查詢向量與儲存向量之間的距離,有效找出相似度分數最高的「最鄰近的項目」。

想瞭解不同類型的最鄰近項目搜尋嗎?歡迎參考我們的生成式 AI 應用程式開發指南。

pgvector 常見問題

PostgreSQL 是強大的開放原始碼關聯式資料庫管理系統,可使用資料表、資料列和資料欄,處理結構化資料。

pgvector 是在 PostgreSQL 內執行的擴充功能。這項服務會在資料庫中新增「向量」資料類型,讓您能儲存及處理向量嵌入,以及標準營運資料。

否,pgvector 是直接整合至現有 PostgreSQL 資料庫的擴充功能。您不必管理新的或獨立的基礎架構,就能新增進階 AI 和搜尋功能。

PostgreSQL 中的 pgvector,適用於 AI 和搜尋應用程式

pgvector 可處理高維度向量,因此支援多種進階應用程式。

傳統關聯式資料庫的關鍵字比對功能,往往無法找出資料中的重要關聯。相似度搜尋會使用歐幾里得距離和餘弦距離等指標比較向量的鄰近程度,找出更深層的模式,這對圖像辨識和語意搜尋等應用程式至關重要,因為這類應用程式會根據意義對結果進行排名。舉例來說,在電子商務領域,相似度搜尋可分析使用者行為並找出相關商品,進而提供產品推薦。

AI 代理採用以向量為基礎的自然語言處理技術,可理解對話脈絡,提供更個人化的對話體驗和更準確的回覆。多語支援功能可提升虛擬助理和客戶服務平台的效能。

pgvector 可儲存及查詢向量嵌入,有助於找出資料中的異常模式,進而強化 AI 工作流程。透過分析向量鄰近程度,這項技術可即時偵測異常狀況,用於防範詐欺、維護網路安全或進行品質驗證 (QC)。

情緒分析功能會分析訊息意圖,讓您適當轉送負面留言,加快處理速度,並提供量身打造的解決方案。

想尋找同時擅長傳統 SQL 查詢和現代向量搜尋的單一資料庫嗎?您可以考慮 AlloyDB for PostgreSQL。AlloyDB 採用 Google 開發的 ScaNN (可擴充的最近鄰) 向量相似度搜尋演算法,處理大型資料庫的交易和分析工作負載時,效能遠勝其他雲端式 PostgreSQL 服務。

如要瞭解 AlloyDB 如何同時搜尋結構化和非結構化資料,請參閱這篇文章。

如何在 Google Cloud 資料庫中啟用及使用 pgvector

Cloud SQL 和 AlloyDB for PostgreSQL 支援 pgvector,讓您能使用標準 SQL 指令儲存及查詢向量嵌入。

1. 連線至執行個體

使用偏好的 PostgreSQL 用戶端 (例如 psql、pgAdmin 或 Google Cloud 控制台) 連線至 Cloud SQL 或 AlloyDB 執行個體。

2. 啟用 pgvector 擴充功能

執行下列 SQL 指令,為資料庫啟用擴充功能。這項操作每個資料庫只需執行一次。

  • SQL
載入中…

3. 建立含有向量資料欄的資料表

建立新資料表 (或修改現有資料表),加入向量資料欄。您必須指定向量的維度。舉例來說,如要建立資料表來儲存 3 維嵌入,可使用以下指令:

  • SQL
載入中…

4. 插入向量資料

您可以像處理標準資料一樣插入向量嵌入。向量的格式為以方括號括住的陣列。

  • SQL
載入中…

5. 使用相似度搜尋來查詢

現在您可以查詢資料,找出最鄰近的項目。<-> 運算子會計算歐幾里得距離 (L2 距離),這通常用於找出最相似的項目。

  • SQL
載入中…

6. 新增索引以提升成效

對於較大型的資料集,新增索引可大幅提升搜尋效能。HNSW 和 ScaNN 索引都是常見的選擇。以下是 HNSW 的範例:

  • SQL
載入中…

透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。

展開下一步行動

運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。