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