在 Azure PostgreSQL 中設定 pgvector 擴充功能以搭配 Spring AI 使用
什麼是向量相似性搜尋?
向量相似性搜尋是一種技術,用來藉由比較其向量表示法來尋找數據集中的類似項目。 向量相似度通常是使用距離計量來計算,例如 Euclidean 距離或 cosine
相似度。 在 AI 和機器學習的內容中,向量表示法或內嵌是數據點的數值表示法,例如文字、影像或用戶查詢。 這些向量會擷取數據點的語意意義,以啟用有效率的相似性搜尋。
例如,在問答系統中,用戶查詢可以轉換成向量內嵌。 然後,您可以將這些內嵌與先前提示預先計算的內嵌資料庫進行比較,並尋找最類似的提示和答案。 此程式稱為向量相似性搜尋。
什麼是 pgvector 延伸模組?
延伸 pgvector
模組是 PostgreSQL 的延伸模組,可新增對向量數據類型和作業的支援。 它可讓您直接在PostgreSQL資料庫中儲存和查詢向量內嵌。 透過 pgvector
,您可以使用向量作業執行有效率的相似性搜尋,使其成為需要語意搜尋功能的應用程式的理想選擇。
擴充套件 pgvector
包含以下主要功能:
- 支援向量數據類型。
- 有效率的向量數據的索引編製和查詢。
- 與 PostgreSQL 的現有功能和延伸模組整合。
Azure PostgreSQL 中的 pgvector 擴充功能
pgvector
延伸模組會將開放原始碼向量相似度搜尋新增至 PostgreSQL。
您必須先將它新增至允許清單,才能在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體上啟用 pgvector
,如允許延伸模組中所述。 若要判斷您是否已正確新增它,請使用下列命令: SHOW azure.extensions;
這很重要
PostgreSQL 社群通常將此延伸模組稱為 pgvector
。 不過,二進位檔的名稱和副檔名本身是 vector
,這是您必須在 allowlist 中使用的名稱,以及透過 CREATE EXTENSION
命令在 PostgreSQL 中建立它時使用的名稱。
將擴充功能新增至allowlist之後,請使用下列 SQL 命令來安裝擴充功能:
CREATE EXTENSION IF NOT EXISTS vector;
pgvector 作業
延伸 pgvector
模組會啟用有效率的相似性搜尋,如下列範例所示:
SELECT id, prompt, response
FROM chat_history
ORDER BY embedding <-> '[0.1,0.2,...]'::vector
LIMIT 3;
pgvector 的 Spring AI 實作
Spring AI 包含名為 VectorStore
的pgvector
抽象概念。 此實作需要另外兩個 PostgreSQL 延伸模組: hstore
和 uuid-ossp
。
啟動時,Spring Boot 會安裝必要的擴充功能,並在不存在時建立具有索引的必要 vector_store
數據表。
單元摘要
向量相似性搜尋和 pgvector
延伸模組提供強大的功能,可建置需要語意搜尋功能的 AI 支援應用程式。 在 Azure PostgreSQL 中使用這些工具,您可以有效地儲存、編製索引和查詢向量內嵌,以啟用應用程式中的進階搜尋和擷取功能。
在下一個單元中,您會執行建立及設定PostgreSQL資料庫、啟用 pgvector
擴充功能,以及建立必要數據表以搭配 Spring AI 使用的步驟。