改? alt=)
Windows 完整跑通 pgvector 向量搜索編譯安裝到首次查詢?nèi)改稀久赓M下載鏈接】pgvectorOpen-source vector similarity search for Postgres項目地址: https://gitcode.com/GitHub_Trending/pg/pgvectorpgvector 是 PostgreSQL 的開源向量相似性搜索擴展。部署好之后embedding 向量直接存在普通表里建上 HNSW 或 IVFFlat 索引一條 SQL 就能查出最相似的結(jié)果不需要再單獨維護一套向量數(shù)據(jù)庫。本文覆蓋 Windows 10/11 上 pgvector 部署的完整流程環(huán)境準(zhǔn)備、nmake 編譯、驗收與回歸測試照著敲一遍就能跑通。先定驗收標(biāo)準(zhǔn)兩行 SQL動手前先明確目標(biāo)。整個部署是否成功只看兩句話在 psql 里能否跑通、第二句能否返回版本號CREATE EXTENSION vector; SELECT vector_version();下面所有內(nèi)容都是圍繞這兩句倒推展開需要什么環(huán)境、敲哪些命令、中途報錯怎么處置。從驗收倒推編譯必須齊備的四樣?xùn)|西pgvector 是 C 語言擴展在 Windows 上構(gòu)建依賴一套完整的 C 工具鏈加上 PostgreSQL 的開發(fā)文件。開工前逐項對一下PostgreSQL 14 及以上推薦 16 或 18。編譯要讀它的頭文件include 目錄和庫文件lib 目錄跑回歸測試時還要用到它自帶的 pg_regressVisual Studio 2019 及以上安裝時務(wù)必勾選C 桌面開發(fā)工作負(fù)載漏勾是后面編譯失敗的頭號原因Windows SDK 10.0.19041 及以上通常隨 VS 工具鏈一起裝別落下Git較新版本即可用于拉取源碼前 3 項屬于硬依賴缺一項 nmake 必然報錯Git 只在開頭用一次。Windows 編譯 pgvector 的完整流程第一步拉取源碼cd %TEMP% git clone --branch v0.8.1 https://gitcode.com/GitHub_Trending/pg/pgvector.git cd pgvector源碼放系統(tǒng)臨時目錄就夠編譯安裝完成后剩下的文件不再礙事。第二步把 PGROOT 指到 PostgreSQL 安裝目錄構(gòu)建腳本 Makefile.win 靠PGROOT這個環(huán)境變量定位頭文件、庫文件和安裝目標(biāo)沒設(shè)會直接以PGROOT is not set報錯終止。順手在同一會話里把 bin 加進(jìn) PATH后面連庫時能直接敲 psqlset PGROOTC:\Program Files\PostgreSQL\16 set PATH%PGROOT%\bin;%PATH%末尾的 16 按你實際安裝的版本改。第三步編譯并安裝終端要用 VS 的x64 Native Tools Command Prompt——只有這個 shell 里配好了 SDK 和 64 位編譯器的環(huán)境變量換別的 shell 大概率找不到頭文件。nmake /F Makefile.win nmake /F Makefile.win install第一行把 src/ 下的源碼編譯成vector.dll第二行負(fù)責(zé)落地動態(tài)庫拷進(jìn) PGROOT 的lib目錄vector.control 與 sql/ 下的擴展腳本放入share\extension。兩行跑完部署就算就位。裝完驗證與完整回歸先回到開頭那兩句在任意數(shù)據(jù)庫執(zhí)行CREATE EXTENSION vector; SELECT vector_version();第二句返回你編譯出來的版本號主流程到此走通。想更穩(wěn)一點再跑一遍完整回歸。它會把 test/sql/ 下的 14 個用例全部過一遍覆蓋類型轉(zhuǎn)換、索引構(gòu)建、距離函數(shù)三大塊nmake /F Makefile.win installcheck輸出很長只看末尾匯總沒有 FAILED 就算通過。編譯報錯的三類高發(fā)問題 ??報錯信息像一張地址單先讀地址再動手別盲敲命令。Windows 上的紅屏九成落在下面三種1. 找不到crtdefs.h基本是工具鏈問題用錯了終端或 VS 缺C 生成工具組件。先切到 x64 Native Tools Command Prompt 重編仍不行就打開 VS Installer 修復(fù)對應(yīng)組件。2.PGROOT is not set環(huán)境變量沒設(shè)或設(shè)置后另開了新終端——set只在當(dāng)前會話生效。在當(dāng)前會話里重新執(zhí)行一遍set PGROOT...即可。3.C2196 case value already used通常意味著編譯環(huán)境不是 VS 原生環(huán)境編譯器對常量識別出了問題。切對命令行后先清理再重編nmake /F Makefile.win clean nmake /F Makefile.winpgvector 裝好之后的能力速查四種向量類型基本覆蓋所有 embedding 輸出vector單精度浮點HNSW/IVFFlat 索引上限 2,000 維halfvec半精度浮點體積減半索引上限 4,000 維bit二進(jìn)制向量索引上限 64,000 維適合二值量化場景sparsevec稀疏向量只存非零元素專為高維稀疏數(shù)據(jù)設(shè)計四個距離算子都能配合索引使用算子含義常見場景-L2歐氏距離通用相似性檢索#內(nèi)積取負(fù)未歸一化向量的檢索余弦距離文本 embedding重方向輕幅度L1 距離強調(diào)稀疏差異的場景兩類索引各有所長HNSW基于圖結(jié)構(gòu)查詢速度快多數(shù)場景默認(rèn)選它IVFFlat構(gòu)建快、內(nèi)存開銷低適合更看重構(gòu)建時長的數(shù)據(jù)量。索引構(gòu)建與查詢調(diào)優(yōu)要點幾條經(jīng)驗?zāi)軒湍惚荛_大部分性能坑數(shù)據(jù)灌完再建索引先建索引再插數(shù)據(jù)速度會差很多調(diào)大maintenance_work_mem它直接決定索引構(gòu)建可用的內(nèi)存預(yù)算大表開并行 worker建索引把多核用起來搜索參數(shù)二選一HNSW 調(diào)ef_searchIVFFlat 調(diào)probes調(diào)高換召回、調(diào)低換速度小表別急著上索引直接順序掃描往往更快也更穩(wěn)pgvector 的 Windows 部署沒有玄學(xué)——設(shè)一個變量、敲兩行編譯、用兩行 SQL 驗收向量搜索就在手邊了下一步建一張表灌入 embedding用ORDER BY embedding - ...跑第一條查詢試試手?!久赓M下載鏈接】pgvectorOpen-source vector similarity search for Postgres項目地址: https://gitcode.com/GitHub_Trending/pg/pgvector創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考