实训1:本地搭建PostgreSQL + pgvector向量数据库
本学期参与了创新实训项目----基于大语言模型以及RAG的智能面试辅助系统。我主要负责私有知识库问答模块和AI能力集成的部分,第一步就是搭建向量数据库环境。在RAG系统中,向量数据库用于存储为文档的Embedding向量,以支持后续语义检索。本文记录使用Docker在本地快速部署PostgreSQL + pgvector的过程。
一. 核心概念理解
1.什么是向量?
文本本身是字符串,计算机无法比较两句话有多像,Embedding模型(如阿里云的text-embedding-v3)可以把一段文字转换成一个高维数字的数组,比如 [0.1, 0.2, 0.3 ...],共1024个数字。语义比较相近的文本,转换成向量之后在空间中距离也很近。
2.什么是向量数据库?
普通数据库通常擅长精准查询(如,WHERE id = 1),但对于“找出和这段话语义最相似的10条内容”这种模糊检索则无法处理。向量数据库就是为了解决这个问题,核心能力是近似最近邻搜索,能在百万级向量中快速找到最相似的几条。
3.什么是pgvector?
pgvector是PostgreSQL的一个开源扩展插件,为postgreSQL提供了向量数据类型和向量相似度搜索能力。安装后可以直接用SQL进行向量检索。
4.pgvector在RAG中处于哪个环节?
用户上传文档
↓
文本分块(TokenTextSplitter)
↓
调用 Embedding 模型(text-embedding-v3)→ 生成1024维向量
↓
存入 PostgreSQL + pgvector
↓
用户提问 → 问题也转成向量 → 向量相似度检索 → 找到相关文档片段
↓
将文档片段 + 问题一起喂给 LLM → 生成回答
二.数据存储为什么要选择PostgreSQL + pgvector?
| 方案 | 优点 | 代价 |
| PostgreSQL + pgvector | 一个数据库即可,运维比较简单,支持结构化+向量一起查 | 向量检索性能一般 |
| PostgreSQL+Milvus | 向量检索性能强,适合大规模 | 架构复杂,需要多系统维护 |
| PostgreSQL+Pinecone | 托管服务,上手快,无需自运维 | 成本高,数据依赖第三方 |
选择pgvector的理由:
架构简单:不引入额外组件,运维和部署复杂度低
性能够用:HNSW索引支持毫秒级检索,万级文档场景完全够用
事务一致性:向量数据和业务数据在同意数据库,天然支持事务
SQL查询:可以结合WHERE条件查询,比如“只在某个分类的知识库中检索”
三.环境准备
本项目使用了docker快速安装PostgreSQL + PGvector。
四. Docker拉取并启动容器
docker run -d \
--name my_pgvector \
-p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-v C:/docker/postgresql/data:/var/lib/postgresql/data \
pgvector/pgvector:pg17
1.docker run -d: docker run是Docker中用于创建一个新的容器并运行一个命令。-d 让它在后台跑,不会占用终端。
2.--name my_pgvector:给容器的命名,后续如果想停掉它,可以直接docker stop my_pgvector就行。
3.-p 5432:5432:做端口映射,把容器里的5432映射到本机的5432,这样就可以用localhost:5432连接到数据库了。
4.-e POSTGRES_PASSWORD=123456: 设置postgres用户的密码
5.-v C:/docker/postgresql/data:/var/lib/postgresql/data:把数据目录挂到本次磁盘上。
6.pgvector/pgvector:pg17:使用pgvector的PostgreSQL 17版本。
可以使用如下命令查看容器的运行情况。
docker ps
五.用DataGrip连接数据库
DataGrip是一款为开发者打造的,跨平台的数据库IDE,是一个数据库客户端,还集成了智能代码补全,AI辅助,Git版本控制和强大SQL编辑功能的一站式开发环境。
1.打开DataGrip,新建一个项目
2.配置连接协议,输入用户名postgres,密码123456,连接默认数据库postgres
3.创建业务数据库,连接成功后,可以新建一个数据库,
create database interview_agent;
名为interview_agent

六.启用pgvector扩展
镜像已经内置了向量功能,而PostgreSQL的设计原则是“插件按需加载”,因此应该手动执行。
CREATE EXTENSION vector;
Spring AI在Spring容器启动时,一般会自动检测并初始化PostgreSQL的向量数据库环境。
七. 总结
至此,PostgreSQL + pgvector的本地环境搭建完毕。整个过程依赖Docker实现了快速部署,后续将在此基础上对接Spring AI,实现文档的向量化存储与语义检索。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)