Loading... 随着大模型(LLM)和向量检索(RAG、Embedding)应用兴起,向量数据库变得越来越重要。其中,**PostgreSQL + [pgvector](https://github.com/pgvector/pgvector)** 成为非常流行的一种组合方案,既能保留关系数据库的强大特性,又能高效地进行向量检索。 本篇文章将手把手教你如何 **使用 Docker + Docker Compose 部署 PostgreSQL 16 + pgvector 插件**。 --- ## 1. 创建项目目录与配置文件 我们建议将项目文件组织在一个单独目录下: ```bash mkdir pgvector-demo && cd pgvector-demo ``` 然后在其中创建一个 `docker-compose.yml` 文件,内容如下: ```yaml version: '3.8' services: db: image: pgvector/pgvector:pg16 container_name: pgvector-db environment: POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword POSTGRES_DB: mydb ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata: ``` > 说明: > > - 使用 `pgvector/pgvector:pg16` 镜像,内置 PostgreSQL 16 + pgvector 插件。 > - 数据保存在 Docker 卷 `pgdata` 中,重启不会丢失。 > - 监听宿主机端口 5432,可用本地工具如 `pgAdmin`, `DBeaver`, `psql` 连接。 --- ## 2. 启动服务 在 `docker-compose.yml` 所在目录下运行: ```bash docker-compose up -d ``` 查看容器状态: ```bash docker ps ``` 输出应包含一个名为 `pgvector-db` 的容器,状态为 `Up`。 --- ## 3. 验证 pgvector 安装成功 ### 进入 PostgreSQL 容器: ```bash docker exec -it pgvector-db psql -U myuser -d mydb ``` ### 启用 pgvector 插件: ```sql CREATE EXTENSION IF NOT EXISTS vector; \dx ``` 你应该能看到如下输出: ``` List of installed extensions Name | Version | Schema | Description ----------+---------+------------+---------------------------------------------- vector | 0.X | public | vector data type and distance functions (1 row) ``` --- ## 4. 插入并查询向量数据(示例) ```sql -- 创建表,包含一个向量字段(维度为3) CREATE TABLE items ( id SERIAL PRIMARY KEY, embedding vector(3) ); -- 插入向量数据 INSERT INTO items (embedding) VALUES ('[1,1,1]'), ('[2,2,2]'), ('[1,0,0]'); -- 查询与 [1,1,1] 最接近的向量(基于欧几里得距离) SELECT id, embedding FROM items ORDER BY embedding <-> '[1,1,1]' LIMIT 3; ``` --- ## 5. 常用 Docker 管理命令 | 功能 | 命令 | | ---------------- | ------------------------------------------------------ | | 启动服务 | `docker-compose up -d` | | 停止并移除容器 | `docker-compose down` | | 查看日志 | `docker-compose logs -f` | | 进入容器终端 | `docker exec -it pgvector-db bash` | | 进入 psql | `docker exec -it pgvector-db psql -U myuser -d mydb` | --- ## 6. 延伸建议 - 可以在此基础上结合 OpenAI、HuggingFace、LangChain 等工具,将 Embedding 数据写入 `vector` 字段。 - 推荐使用 `pgvector-py`(Python SDK)或 `psycopg` 操作数据库。 - 可加入 `pgAdmin4` 服务进行可视化管理。 --- ## 总结 通过本教程完成了: - 在 Ubuntu 上使用 Docker 安装 PostgreSQL + pgvector; - 使用 `docker-compose.yml` 实现服务编排和数据持久化; - 插入和查询向量数据,验证向量检索功能。 这个方案适用于开发环境、测试向量检索应用,甚至可在生产环境中扩展为向量增强的知识库(RAG 系统)或语义搜索平台。 最后修改:2025 年 07 月 03 日 © 禁止转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏