本学期参与了创新实训项目----基于大语言模型以及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.什么是pgvectorpgvector是PostgreSQL的一个开源扩展插件为postgreSQL提供了向量数据类型和向量相似度搜索能力。安装后可以直接用SQL进行向量检索。4.pgvector在RAG中处于哪个环节用户上传文档↓文本分块TokenTextSplitter↓调用 Embedding 模型text-embedding-v3→ 生成1024维向量↓存入 PostgreSQL pgvector↓用户提问 → 问题也转成向量 → 向量相似度检索 → 找到相关文档片段↓将文档片段 问题一起喂给 LLM → 生成回答二.数据存储为什么要选择PostgreSQL pgvector?方案优点代价PostgreSQL pgvector一个数据库即可运维比较简单支持结构化向量一起查向量检索性能一般PostgreSQLMilvus向量检索性能强适合大规模架构复杂需要多系统维护PostgreSQLPinecone托管服务上手快无需自运维成本高数据依赖第三方选择pgvector的理由架构简单不引入额外组件运维和部署复杂度低性能够用HNSW索引支持毫秒级检索万级文档场景完全够用事务一致性向量数据和业务数据在同意数据库天然支持事务SQL查询可以结合WHERE条件查询比如“只在某个分类的知识库中检索”三.环境准备本项目使用了docker快速安装PostgreSQL PGvector。四. Docker拉取并启动容器docker run -d \ --name my_pgvector \ -p 5432:5432 \ -e POSTGRES_PASSWORD123456 \ -v C:/docker/postgresql/data:/var/lib/postgresql/data \ pgvector/pgvector:pg171.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_PASSWORD123456: 设置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连接默认数据库postgres3.创建业务数据库连接成功后可以新建一个数据库create database interview_agent;名为interview_agent六.启用pgvector扩展镜像已经内置了向量功能而PostgreSQL的设计原则是“插件按需加载”因此应该手动执行。CREATE EXTENSION vector;Spring AI在Spring容器启动时一般会自动检测并初始化PostgreSQL的向量数据库环境。七. 总结至此PostgreSQL pgvector的本地环境搭建完毕。整个过程依赖Docker实现了快速部署后续将在此基础上对接Spring AI实现文档的向量化存储与语义检索。