
3 條 nmake 命令在 Windows 裝好 pgvectorPostgreSQL 向量搜索擴展從編譯到驗證【免費下載鏈接】pgvectorOpen-source vector similarity search for Postgres項目地址: https://gitcode.com/GitHub_Trending/pg/pgvector你已有一套在跑的 PostgreSQL現(xiàn)在想不額外引入向量數(shù)據(jù)庫就直接做語義搜索pgvector 就是為此設計的它把向量類型、距離函數(shù)和近似索引全部放進 Postgres 內(nèi)部一次 SQL 即可完成向量搜索。在 Windows 上完成編譯安裝并不復雜只要編譯器與開發(fā)文件就位核心步驟只有 3 條命令。pgvector 是什么、能干什么向量類型齊全vector單精度最高 2,000 維、halfvec半精度、bit二進制、sparsevec稀疏可按場景選存儲格式距離度量完整L2 距離-、內(nèi)積#、余弦距離、L1 距離二進制向量還有漢明與 Jaccard 距離精確 近似兩套搜索小表可全表掃描做精確最近鄰大表建 HNSW 或 IVFFlat 索引做高速近似搜索原生融入 SQL向量列和普通列一樣參與 JOIN、過濾、事務任何帶 Postgres 客戶端的語言都能直接調(diào)用典型適用場景語義檢索、RAG 問答、相似內(nèi)容推薦、以圖搜圖等動手前的 Windows 準備清單工具作用驗證方法x64 Native Tools Command Prompt for VS 2022提供 MSVC 編譯器cl.exe與nmake運行cl能看到編譯器版本號PostgreSQL 13含 Development Files提供頭文件include\server與鏈接庫postgres.libdir %PGROOT%\include\server\postgres.h能列出該文件PGROOT 環(huán)境變量被 Makefile.win 用來定位 Postgres 的 bin、lib、share 目錄echo %PGROOT%打印出安裝路徑準備步驟按順序執(zhí)行安裝 Visual Studio 2022工作負載勾選使用 C 的桌面開發(fā)安裝 PostgreSQL組件里務必勾選 Development Files從開始菜單啟動x64 Native Tools Command Prompt for VS 2022安裝階段建議以管理員身份運行拉取源碼并進入目錄cd %TEMP% git clone https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector從零到裝好只需 3 條命令set PGROOTC:\Program Files\PostgreSQL\18用途告訴 nmake 你的 PostgreSQL 裝在哪里。 版本號按你實際安裝的目錄修改可用echo %PGROOT%確認。 預期輸出無輸出命令靜默完成。nmake /F Makefile.win用途編譯 src 下全部 C 源碼產(chǎn)出擴展動態(tài)庫。 預期輸出過程打印若干編譯日志當前目錄生成vector.dll。nmake /F Makefile.win install用途把vector.dll、vector.control及 SQL 腳本復制到 PostgreSQL 的 lib 與share\extension目錄。 預期輸出一串copy成功日志%PGROOT%\lib下出現(xiàn)vector.dll。用 2 段 SQL 驗證向量搜索是否生效第一段建擴展、建表并插入數(shù)據(jù)每個要用的數(shù)據(jù)庫都需執(zhí)行一次建擴展CREATE EXTENSION vector; CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)); INSERT INTO items (embedding) VALUES ([1,2,3]), ([4,5,6]), ([7,8,9]);第二段按 L2 距離排序查詢最近鄰SELECT id, embedding - [3,1,2] AS distance FROM items ORDER BY distance LIMIT 1;返回的是距離值最小即與查詢向量[3,1,2]最接近的那一行說明向量搜索已生效換成即得到余弦距離排序??ㄗ×薟indows 編譯常見故障速查報錯現(xiàn)象最可能原因一行處理辦法PGROOT is not set新終端里 PGROOT 丟失或未設置重新執(zhí)行set PGROOT...再編譯Cannot open include file: postgres.hPGROOT 指錯或 Postgres 沒裝 Development Filesdir %PGROOT%\include\server\postgres.h核對路徑cl 不是內(nèi)部或外部命令沒有從 VS 命令提示符啟動改用 x64 Native Tools Command Prompt 重進目錄error C2196: case value 4 already used用了 x86 命令行導致架構(gòu)不匹配換 x64 提示符先nmake /F Makefile.win clean再編譯unresolved external symbol float_to_shortest_decimal_bufnPostgres 17.0–17.2 與源碼鏈接庫不兼容升級 PostgreSQL 到 17.3 及以上版本Access is denied無權(quán)限寫入 Program Files 目錄以管理員身份重開命令提示符執(zhí)行 install裝好之后你能做什么能力一為向量列建 HNSW 或 IVFFlat 索引百萬級以上數(shù)據(jù)也能走索引快速返回 Top-K并可與 WHERE 條件混寫做混合查詢能力二用halfvec半精度或二進制向量壓縮內(nèi)存向量庫越大收益越明顯能力三向量檢索結(jié)果直接參與 SQL 的 JOIN、聚合與事務不必在兩套系統(tǒng)間搬數(shù)據(jù)編譯優(yōu)化示例Makefile.win 默認已帶/O2 /fp:fast開啟自動向量化若 CPU 支持 AVX2可在那一行的OPTFLAGS中追加/arch:AVX2提升向量運算吞吐。下一步建議跑一遍倉庫自帶回歸測試nmake /F Makefile.win installcheck確認你的環(huán)境行為一致閱讀 README.md 的 HNSW/IVFFlat 章節(jié)學會m、ef_construction、lists等參數(shù)調(diào)優(yōu)【免費下載鏈接】pgvectorOpen-source vector similarity search for Postgres項目地址: https://gitcode.com/GitHub_Trending/pg/pgvector創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考