
如何在 Windows 上快速源碼編譯安裝 pgvector 向量搜索擴展完整指南【免費下載鏈接】pgvectorOpen-source vector similarity search for Postgres項目地址: https://gitcode.com/GitHub_Trending/pg/pgvector這篇指南帶你走完 pgvector 在 Windows 上源碼編譯、安裝進 PostgreSQL 并啟用向量相似性搜索的完整流程先核對版本與工具鏈再一次性跑通 nmake 構(gòu)建最后用幾行 SQL 完成驗證、調(diào)優(yōu)與排錯。環(huán)境核對無誤的前提下整個過程可以一次做對。動手前核對環(huán)境三處最容易翻車的地方Windows 上的構(gòu)建失敗絕大多數(shù)能歸因到下面三個位置建議動編譯器之前先過一遍。對齊 PostgreSQL 版本pgvector 0.8.1 支持 PostgreSQL 13 及以上版本版本越高越穩(wěn)妥。如果你機器上裝過多個版本先選定一個并記住它的安裝目錄——下一步的 PGROOT 就指向這里選錯版本是后續(xù)一切報錯的源頭之一。確認 Visual Studio 的 C 工具鏈完整編譯依賴 Microsoft Visual Studio 2019 或更高版本中的桌面 C 生成工具。裝完后在開始菜單找得到 “x64 Native Tools Command Prompt for VS” 才算齊活找不到就說明 C 組件沒裝全。預先認識三種典型失敗現(xiàn)象make / gmake 不被識別Linux 與 macOS 習慣里的make、make install在 Windows 環(huán)境里跑不起來本項目的 Windows 構(gòu)建入口是nmake /F Makefile.win。提示缺少 pgxs.mk它屬于 PostgreSQL 的構(gòu)建系統(tǒng)找不到通常意味著 PGROOT 沒設(shè)置或沒指對安裝目錄。復制文件時拒絕訪問安裝環(huán)節(jié)要寫入 PostgreSQL 的 lib 與 share 目錄非管理員的終端會被擋下來。編譯流程一次性跑通的順序以管理員身份打開 x64 Native Tools Command Prompt右鍵以管理員身份運行 “x64 Native Tools Command Prompt for VS”。這里要的不是普通 PowerShell 或 cmd而是這個預配置好的原生編譯環(huán)境。判斷標準終端標題欄帶 “x64 Native Tools” 字樣且窗口是以管理員身份打開的。設(shè)置 PGROOT 指向 PostgreSQL 安裝目錄set PGROOTC:\Program Files\PostgreSQL\18把版本號換成你實際安裝的版本。這個變量是 Makefile.win 的硬性要求——不設(shè)置時構(gòu)建腳本會直接報PGROOT is not set。設(shè)置后可以在同一窗口里執(zhí)行echo %PGROOT%回顯確認輸出的路徑應(yīng)真實存在。克隆源碼并進入項目目錄cd %TEMP% git clone --branch v0.8.1 https://gitcode.com/GitHub_Trending/pg/pgvector.git cd pgvector固定在 v0.8.1 標簽上拉取保證代碼與本指南描述的行為一致。用 nmake 編譯并安裝nmake /F Makefile.win nmake /F Makefile.win install判斷標準第一條命令結(jié)束后目錄下應(yīng)出現(xiàn)vector.dll及一批.obj文件第二條命令結(jié)束后%PGROOT%\lib下多了vector.dll%PGROOT%\share\extension下多了 vector 的控制文件與 SQL 腳本。任一步失敗對照文末的排錯速查表處理。構(gòu)建之后驗證、調(diào)優(yōu)與排錯速查用最小 SQL 驗證擴展可用以數(shù)據(jù)庫超級用戶身份進入 psql依次執(zhí)行CREATE EXTENSION vector; SELECT NULL::vector; CREATE TABLE test_items (id bigserial PRIMARY KEY, embedding vector(3)); INSERT INTO test_items (embedding) VALUES ([1,2,3]), ([4,5,6]); SELECT * FROM test_items ORDER BY embedding - [3,1,2] LIMIT 5;第一條必須返回CREATE EXTENSION且無報錯報找不到擴展則回到安裝步驟檢查文件是否落盤。類型測試應(yīng)返回一個 NULL 的 vector 值而不是類型錯誤。-算子是 L2 距離結(jié)果應(yīng)是[1,2,3]排在[4,5,6]前面——順序正確即代表擴展工作正常。該擴展需要在每個想使用它的數(shù)據(jù)庫里單獨創(chuàng)建一次。內(nèi)存參數(shù)與 HNSW 索引數(shù)據(jù)量上來后配合調(diào)整 PostgreSQL 內(nèi)存參數(shù)先用SHOW shared_buffers;、SHOW work_mem;查看現(xiàn)狀再用SET maintenance_work_mem 2GB;之類的語句加速索引構(gòu)建具體數(shù)值以機器實際內(nèi)存為準。查詢側(cè)推薦 HNSW 索引搭配vector_l2_ops算子類CREATE INDEX ON test_items USING hnsw (embedding vector_l2_ops);其余算子類與 IVFFLAT 的取舍以 README.md 的說明和官方文檔為準。排錯速查表現(xiàn)象原因與處理PGROOT is not set漏了set PGROOT...一步補上后重新編譯Cannot open include file: postgres.hPGROOT 未設(shè)置或指錯目錄修正后重編error C2196: case value 4 already used沒用 x64 Native Tools 終端換終端后執(zhí)行nmake /F Makefile.win clean再重新編譯Access is denied非管理員權(quán)限運行換管理員終端重跑安裝命令make 命令不識別Windows 上請使用nmake /F Makefile.win而不是make以上判斷依據(jù)來自倉庫 README 的 Windows 安裝說明一節(jié)可自行對照 README.md 核對。驗證通過后就可以接入真實數(shù)據(jù)了先灌入一小批向量做近鄰查詢確認索引被命中且耗時符合預期再逐步放量。下一步建議按 README.md 中 Getting Started 之后的索引與檢索章節(jié)繼續(xù)深入?!久赓M下載鏈接】pgvectorOpen-source vector similarity search for Postgres項目地址: https://gitcode.com/GitHub_Trending/pg/pgvector創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考