安装一个PGsql体验RAG

一 安装PGSQL

1、直接在线安装

#安装
 sudo yum install postgresql-server postgresql-contrib
 #初始化
 sudo postgresql-setup --initdb
 
 #安装日志,确认安装成功
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
 postgresql

2、启动服务

#启动
sudo systemctl start postgresql
#设置开启启动
sudo systemctl enable

3、修改远程连接信息,配置名称是 postgresql.conf、 pg_hba.conf,在安装目录下。

#编辑配置文件,这将允许 PostgreSQL 在所有网络接口上监听连接
vi /var/lib/pgsql/data/postgresql.conf
 
 #添加配置项,所有地址可访问,也可以指定IP地址等操作,增加安全性。
 listen_addresses = '*'
 # 编辑文件
 vi /var/lib/pgsql/data/pg_hba.conf
 #添加以下行以允许所有 IP 地址的密码认证访问(或者修改0.0.0.0/0为IP):
 host    all             all             0.0.0.0/0               md5

4、重启服务

sudo systemctl reload postgresql
sudo systemctl restart postgresql

5、切换系统用户postgres进入数据库,连接数据库。

sudo -u postgres psql

注意,报错postgres is not in the sudoers file. This incident will be reported.需要在、etc/sudoers添加用户信息,才能执行命令

postgres ALL=(ALL)       ALL

6、创建用户

CREATE ROLE username WITH LOGIN PASSWORD 'password';  -- 创建用户
CREATE DATABASE dbname OWNER username;                -- 创建数据库并指定所有者

#查看数据库是否创建成功
/l 

7、安装还差最后一步,开放防火墙 我这边使用的阿里云,直接修改主机安全组,添加5432端口,远程连接完成。

二、拓展pgvector

pgvector 是 PostgreSQL 的开源向量相似度搜索扩展插件‌,可直接在 PostgreSQL 数据库中存储和查询高维向量数据,无需部署独立的向量数据库系统 。

由于阿里云内存太小,编译安装拓展pgvector一直内存不够,在win10安装了一个PGSQL实现

1、下载pgvector 包,此处使用最新版本0.8.6,解压到D盘目录 https://codeload.github.com/pgvector/pgvector/zip/refs/tags/v0.8.6

2、win10下操作,以管理员权限打开VS2019 命令行, 进入解压D盘目录执行安装扩展

#编译
nmake /F Makefile.win
#安装
nmake /F Makefile.win install

linux下操作编译安装

make
make install # 权限不足可能需要提升权限

3、验证,进入pgsql,执行sql

SELECT * FROM pg_extension WHERE extname='vector';

三、相关概念

pgvector 是一个开源的 PostgreSQL 扩展,它为数据库添加了向量相似性搜索能力,是构建 ‌RAG(检索增强生成)‌ 系统中向量存储与检索环节的核心组件。RAG 技术通过从外部知识库检索相关信息来增强大语言模型的回答准确性,而 pgvector 使得开发者可以直接在熟悉的 PostgreSQL 数据库中完成向量数据的存储、索引和查询,无需引入额外的专用向量数据库。

核心关系与工作流程

数据向量化‌:在 RAG 流程中,文档首先被分割成小块(Chunk),然后通过 Embedding 模型转化为数值向量。 ‌向量存储‌:pgvector 允许在 PostgreSQL 表中定义 vector 类型字段,将这些数值向量直接存入关系型数据库,同时保留文档的元数据(如来源、作者、时间等)。 ‌相似性检索‌:当用户提问时,问题也被转化为向量。pgvector 利用专门的索引(如 IVFFlat 或 HNSW)和距离函数(如余弦相似度、欧氏距离),在数据库中快速找到与问题向量最相似的文档片段。 ‌生成回答‌:检索到的相关片段作为上下文,与大模型结合,生成准确且有依据的回答。 pgvector 在 RAG 中的优势 ‌架构简化‌:将向量数据与业务数据保存在同一数据库中,避免了维护独立向量数据库(如 Milvus、Chroma)的复杂性和数据同步问题,降低了运维成本。 ‌事务一致性‌:利用 PostgreSQL 的 ACID 特性,确保向量数据与元数据在增删改操作中的强一致性。 ‌混合检索能力‌:结合 PostgreSQL 原有的全文检索(如 pg_trgm)或新的扩展(如 VectorChord-bm25),可以实现“关键词匹配 + 语义向量检索”的混合搜索模式,显著提升召回率和准确性。 ‌生态兼容‌:开发者可以直接使用 SQL 进行向量查询,并利用现有的 PostgreSQL 工具链、权限管理和备份策略。

典型应用场景

企业知识库问答‌:基于内部文档(PDF、Wiki)构建智能客服或助手。 ‌多租户隔离‌:通过在表中增加 user_id 字段,轻松实现不同用户数据的物理隔离与独立检索。 ‌多模态检索‌:配合多向量存储技术,支持对包含视觉布局信息的文档进行无 OCR 的直接检索。 对于中小规模的知识库(亿级以下),使用 pgvector 构建 RAG 系统是一个高效且经济的选择;若数据量极大或对延迟有极致要求,则可能需要针对索引参数进行深度调优或考虑专用向量数据库方案。