postgresql集成pgvector,postgresml,实现开源库内机器学习
- 请保证postgresql的python环境和pgml的python环境一致
1. pgvector
https://github.com/pgvector/pgvector.git
cd /tmp
git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
make install # 可能需要加sudo 权限
问题记录:
src/bitutils.c:1:10: fatal error: postgres.h file not found
include "postgres.h"
1 error generated.
make: *** [/usr/lib/postgresql/17/lib/pgxs/src/makefiles/../../src/Makefile.global:1085: src/bitutils.bc] Error 1
解决:需要安装对应版本的postgresql开发包
sudo apt update
sudo apt install postgresql-server-dev-16
2. postgresqlml
安装rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
pgml安装指导:https://postgresml.org/docs/open-source/pgml/developers/self-hosting/building-from-source
出现问题:1. 添加linux的三方库环境,并安装缺失库文件
fn main() {
#[cfg(target_os = "macos")]
{
println!("cargo:rustc-link-search=/opt/homebrew/opt/openblas/lib");
println!("cargo:rustc-link-search=/opt/homebrew/opt/libomp/lib");
}
#[cfg(target_os = "linux")]
{
println!("cargo:rustc-link-search=/usr/lib/x86_64-linux-gnu");// Adjust this if needed
println!("cargo:rustc-link-search=/usr/lib/llvm-14/lib");
println!("cargo:rustc-link-lib=omp"); // Link OpenMP
println!("cargo:rustc-link-lib=openblas");
}
- pgrx版本
在执行cargo install cargo-pgrx --version "0.10.0"的时候
这里的version最好和Cargo.toml 中的pgrx版本更换为一致
打包发布成功后
从target的文件复制到对应的postgresql扩展目录下,保证以下这些存在:
/usr/share/postgresql/16/extension/pgml.control
/usr/lib/postgresql/16/lib/pgml.so
/usr/share/postgresql/16/extension/pgml--****.sql