本学期参与了创新实训项目----基于大语言模型以及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,实现文档的向量化存储与语义检索。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐