postgresql集成pgvector,postgresml,实现开源库内机器学习

  1. 请保证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");
    }
  1. 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

posted @ 2024-12-04 14:38  代码世界faq  阅读(66)  评论(0)    收藏  举报