centos7安装

centos7环境准备

 
docker run -itd --name pg5 -h pg5 --net mydk --ip 192.168.73.115 -v /opt:/opt/  -v /tmp:/tmp cent7 bash
docker exec -it pg5 bash

docker run -itd --name pg6 -h pg6 --net mydk --ip 192.168.73.116 -v /opt:/opt/  -v /tmp:/tmp cent7 bash
docker exec -it pg6 bash
yum install -y net-tools libaio numactl

依赖包检查
rpm -qa | grep readline-devel
rpm -qa | grep zlib-devel

yum search readline-devel

# 这个目录有讲究,如果出现命令执行完但软件包没下载的情况,就换/tmp目录试试 
mkdir -p /tmp/rpm 

yum install --downloadonly --downloaddir=/tmp/rpm readline-devel.x86_64
yum install --downloadonly --downloaddir=/tmp/rpm zlib-devel

rpm -Uvh --force --nodeps *.rpm

    

安装

 
目录准备 
mkdir -p /opt/app/pg/

cd /opt/soft/pg
tar -xvf postgresql-12.13.tar.gz
./configure --prefix=/opt/app/pg
make
make install

    

创建用户及存储数据的目录,配置环境变量

 
adduser postgres

mkdir -p /opt/app/pg/data
mkdir -p /opt/app/pg/walback

chown -R postgres /opt/app/pg/data

su - postgres

PGHOME=/opt/app/pg
PGDATA=$PGHOME/data
ARCLOG_PATH=$PGHOME/walback
PATH=$PGHOME/bin:$PATH
export PGHOME PGDATA ARCLOG_PATH PATH

    

初始化及启动

 
```
initdb
pg_ctl start
psql -U postgres

postgres=# \password
Enter new password for user "postgres":Book_1234
Enter it again:
postgres-# \q
```
    

设置监听

 
修改data目录下的pg_hba.conf配置文件,将IPv4 local connections下面的一行改为如下所示:
```sh
# IPv4 local connections:
host    all             all             0.0.0.0/0            trust

```
    

postgresql.conf配置文件

 
```sh
listen_addresses = '*'          # what IP address(es) to listen on;
                                # comma-separated list of addresses;
                                # defaults to 'localhost'; use '*' for all
                                # (change requires restart)
port = 5432                     # (change requires restart)
max_connections = 300           # (change requires restart)

```

    

重启PostgreSQL服务:

 
pg_ctl restart
pg_ctl stop
pg_ctl start 
    

测试表

 
```
createuser tpf   -h 127.0.0.1 -p 5432  -c 30 -s --replication -d -l -r -P

测试表
CREATE TABLE t_sample AS
 SELECT a1::int
 FROM generate_series(1, 100) AS a1;

ALTER TABLE t_sample ADD COLUMN a2 int;
ALTER TABLE t_sample ADD COLUMN a3 int DEFAULT 10;
ALTER TABLE t_sample ADD COLUMN a4 text DEFAULT 'weixiao';
ALTER TABLE t_sample ADD COLUMN a5 int DEFAULT random()*1000;
alter table t_sample alter COLUMN a1 type bigint;
```
    

 

    

 
```

mkdir -p /ai/app/
mv pgv1.tar.gz /ai/app/

cd /ai/app/
tar -xvf pgv1.tar.gz

cd pg/rpm 
rpm -Uvh --force --nodeps *.rpm
adduser postgres  
chown -R postgres /ai/app/pg/

su - postgres
cd
vim .bash_profile 
export PGHOME=/ai/app/pg
export PGDATA=$PGHOME/data
export ARCLOG_PATH=$PGHOME/walback
export PATH=$PGHOME/bin:$PATH

source .bash_profile

重启PostgreSQL服务:
pg_ctl start 
```
    

 

    

 

    

 
17 降低了内存使用 
15是当前(2022年)新出的版本,对大数据的支持比较强
13-14主要实现了分区表的功能
12 版本相对之前的版本是一个大的跨越

 


 


 
```
psql -U postgres -d testdb

-- 创建含向量列的表
CREATE TABLE items (
    id bigserial PRIMARY KEY,
    embedding vector(3)  -- 3维向量,根据你的模型调整维度
);

-- 插入向量数据
INSERT INTO items (embedding) VALUES 
    ('[1,2,3]'),
    ('[4,5,6]'),
    ('[7,8,9]');

-- 向量相似度搜索(欧氏距离)
SELECT * FROM items 
ORDER BY embedding <-> '[3,1,2]' 
LIMIT 5;

-- 创建 IVFFlat 索引加速搜索(推荐数据量 > 1000 时)
CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);

-- 或使用 HNSW 索引(更快但占用更多内存)
CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);
```
  
pg_ctl stop

 


ubuntu安装

 
https://ftp.postgresql.org/pub/source/

https://ftp.postgresql.org/pub/source/v17.6/postgresql-17.6.tar.gz

    

准备

 
```
sudo apt update
sudo apt install bison flex libreadline-dev
```

```
sudo su - root 
mkdir -p /ai/app/pg/ 
rsync -rltDv /mnt/g/soft/pub_source_v17.6_postgresql-17.6.tar.gz /ai/app/pg/
adduser postgres
chown -R postgres /ai/app/pg/ 
su -  postgres
cd /ai/app/pg/

mkdir -p /ai/app/pg/data
mkdir -p /ai/app/pg/walback

PGHOME=/ai/app/pg
PGDATA=$PGHOME/data
ARCLOG_PATH=$PGHOME/walback
PATH=$PGHOME/bin:$PATH
export PGHOME PGDATA ARCLOG_PATH PATH
```
    

安装

 
postgres@ii:/ai/app/pg$ tar -xvf pub_source_v17.6_postgresql-17.6.tar.gz
    
```
cd postgresql-17.6/
./configure --prefix=/ai/app/pg
make
make install
```

初始化及启动

 
```
initdb
pg_ctl -D /ai/app/pg/data -l logfile start

pg_ctl start
psql -U postgres

postgres=# \password
Enter new password for user "postgres":Book_1234
Enter it again:
postgres-# \q
```
    

postgresql.conf配置文件

 
- 修改data目录下的pg_hba.conf配置文件,将IPv4 local connections下面的一行改为如下所示:
```
cd /ai/app/pg/data
vim postgresql.conf
listen_addresses='*' 
port = 5432 
max_connections = 30
```

重启PostgreSQL服务:

 
pg_ctl restart
pg_ctl stop
pg_ctl start
    

监听

 
```
postgres@ii:/ai/app/pg/data$ netstat -tunlp|grep 5432
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      12954/postgres
tcp6       0      0 :::5432                 :::*                    LISTEN      12954/postgres
```
    

 

    

 

    

 
```
# 1. 先安装 PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib -y
sudo systemctl start postgresql

# 2. 再安装 pgvector 扩展包
sudo apt install postgresql-16-pgvector  # 根据你的PG版本调整
```

 

  

 

  

 

```
sudo apt update
sudo apt install bison flex libreadline-dev
sudo apt install -y libicu-dev pkg-config

mkdir -p /wks/app/pg/data
mkdir -p /wks/app/pg/walback
cd /wks/app/pg 
wget https://ftp.postgresql.org/pub/source/v17.6/postgresql-17.6.tar.gz

$ ls
data  postgresql-17.6.tar.gz  walback

sudo adduser postgres
sudo chown -R postgres /wks/app/pg/ 
sudo su -  postgres
```

```
PGHOME=/wks/app/pg
PGDATA=$PGHOME/data
ARCLOG_PATH=$PGHOME/walback
PATH=$PGHOME/bin:$PATH
export PGHOME PGDATA ARCLOG_PATH PATH
```

```
cd /wks/app/pg/
tar -xvf postgresql-17.6.tar.gz

cd postgresql-17.6/
./configure --prefix=/wks/app/pg
make
make install


$ pg_config --version
PostgreSQL 17.6

```

 

  

 

  
| 场景 | 大概内存需求 | | -------------- | ------------- | | **默认启动** | ~256MB 可用即可运行 | | **开发环境** | 建议 1-2GB | | **生产环境(小负载)** | 4GB+ | | **生产环境(中高负载)** | 16GB+,且需专业调优 |

 

 
```
# 先确保 PostgreSQL 已安装并运行
pg_config --version  # 验证PG安装



使用 make 和 sudo make install 安装 pgvector 时,它会自动安装到你当前系统中默认的 PostgreSQL 安装目录中。
具体来说:
make:编译源代码。
sudo make install:将编译好的文件(.so 库文件和 .sql 脚本)复制到 PostgreSQL 的共享目录和库目录。
SQL 文件通常去:$PGSHARE/extension/ (例如 /usr/share/postgresql/15/extension/)
库文件通常去:$PG_LIBDIR/ (例如 /usr/lib/postgresql/15/lib/)
这些路径是在你编译 pgvector 时,通过读取你系统中 pg_config 工具的输出来确定的。
pg_config 告诉编译器你的 PostgreSQL 装在哪里。

```
```
export PATH=/wks/app/pg/bin:$PATH
export PG_CONFIG=/wks/app/pg/bin/pg_config

$ echo $PG_CONFIG
/wks/app/pg/bin/pg_config
```

 
```

# 2. 下载 pgvector 源码
cd /tmp
git clone --branch v0.8.1 https://github.com/pgvector/pgvector.git
cd pgvector

# 3. 编译安装
make
sudo make install

# 或者指定 PostgreSQL 路径(如果你是从源码安装的 PG)
make PG_CONFIG=/wks/app/pg/bin/pg_config
sudo make install PG_CONFIG=/wks/app/pg/bin/pg_config

```
$ psql -U postgres
psql (17.6)
Type "help" for help.

postgres=# create database testdb;

# 1. 连接到 PostgreSQL
psql -U postgres -d testdb

# 2. 在数据库中创建扩展
CREATE EXTENSION vector;

# 3. 验证安装
SELECT * FROM pg_extension WHERE extname = 'vector';
SELECT vector_dims('[1,2,3]'::vector);  -- 应返回 3
  

 

超简安装·单节点

 

$ cat /etc/os-release |grep Ub
NAME="Ubuntu"
PRETTY_NAME="Ubuntu 20.04 LTS"

# 已包含vector
rsync -e 'ssh -p26225' -rltDv /mnt/d/tmp/pg17_u20.tar.gz  xt@144.34.185.72:/wks/app/pg/

sudo adduser postgres

cd /wks/app
tar -xvf pg17_u20.tar.gz 
sudo chown -R postgres:postgres /wks/app/pg

sudo su - postgres
PGHOME=/wks/app/pg
PGDATA=$PGHOME/data
ARCLOG_PATH=$PGHOME/walback
PG_CONFIG=$PGHOME/bin/pg_config
PATH=$PGHOME/bin:$PATH
export PGHOME PGDATA ARCLOG_PATH PATH PG_CONFIG


 
initdb  #仅首次
pg_ctl -D /wks/app/pg/data -l logfile start

pg_ctl start
psql -U postgres

postgres=# \password
Enter new password for user "postgres":Book_1234
Enter it again:
postgres-# \q
    
pg_ctl stop

-- 插件验证
SELECT * FROM pg_extension WHERE extname = 'vector';
SELECT vector_dims('[1,2,3]'::vector);  -- 应返回 3

-- 如果没有则进行安装
rsync -rltDv pgvector0.8.1.tar.gz /wks/app/pg/
cd /wks/app/pg/
tar -xvf pgvector0.8.1.tar.gz 

cd /wks/app/pg/pgvector
make clean  # 如果曾经编译过会出现 Nothing to be done for 'all'.
make
make install

1. 连接到 对应的数据库
psql -U postgres -d testdb

2. 在数据库中创建扩展
CREATE EXTENSION vector;

 

    

 

    

 

    

 
```

(base) xt@VM-8-13-ubuntu:~$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(base) xt@VM-8-13-ubuntu:~$ ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3.7) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
(base) xt@VM-8-13-ubuntu:~$ uname
Linux
(base) xt@VM-8-13-ubuntu:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
    
```

 
initdb
pg_ctl -D /wks/app/pg/data -l logfile start

psql -U postgres

postgres=# \password
Enter new password for user "postgres":Book_1234
Enter it again:
postgres-# \q

 
┌─────────────────────────────────────────┐
│           你的应用程序                   │
│        (PostgreSQL / initdb)            │
├─────────────────────────────────────────┤
│  ┌─────────────┐    ┌─────────────┐    │
│  │   libicu    │◄───│   libstdc++ │    │
│  │  (ICU 库)   │    │ (GCC C++库) │    │
│  └──────┬──────┘    └──────┬──────┘    │
│         │                  │            │
│         └────────┬─────────┘            │
│                  ▼                      │
│           ┌─────────────┐               │
│           │   glibc     │               │
│           │(C运行时库)   │               │
│           └─────────────┘               │
└─────────────────────────────────────────┘


| 组件 | 关系 | 作用 | | ------------- | ------------------ | -------------------- | | **libicu** | 独立库,但**编译时需要 gcc** | 提供 Unicode 和国际化支持 | | **gcc** | 编译工具链 | 编译 libicu 和依赖它的程序 | | **glibc** | 底层 C 运行时 | libicu 运行时依赖 glibc | | **libstdc++** | GCC 的 C++ 标准库 | libicu 的 C++ API 需要它 |

 


 


 


 


 


 


参考