qidao123.com技术社区-IT企服评测·应用市场

标题: 2-PostgreSQL docker compose 安装教程-Pgvector [打印本页]

作者: 雁过留声    时间: 2025-4-15 20:50
标题: 2-PostgreSQL docker compose 安装教程-Pgvector

pgvector先容

Postgres: 开源的向量相似度搜刮
存储你的向量数据与你别的的数据一起。支持:

快速安装PostgreSQL和pgvector

https://www.postgresql.org/
https://github.com/pgvector/pgvector
1、创建Dockerfile文件,代码如下:

  1. # 使用 PostgreSQL 16 基础镜像
  2. FROM postgres:16
  3. # 安装 pgvector
  4. RUN apt-get update && \
  5.     apt-get install -y postgresql-16-pgvector && \
  6.     rm -rf /var/lib/apt/lists/*
  7. # 设置启动命令
  8. CMD ["postgres"]
复制代码
2、创建docker-compose.yaml文件。

  1. version: '3.8'
  2. services:
  3.   postgres:
  4.     build:
  5.       context: .
  6.       dockerfile: Dockerfile
  7.     container_name: postgres
  8.     environment:
  9.       POSTGRES_USER: postgres
  10.       POSTGRES_PASSWORD: postgres   # 密码
  11.       POSTGRES_DB: postgres            # 默认数据库
  12.     ports:
  13.       - "5432:5432"
  14.     volumes:
  15.       - ${postgre_location}/postgres_data:/var/lib/postgresql/data
  16.       - ./init.sql:/docker-entrypoint-initdb.d/init.sql  # 初始化脚本
  17.     restart: always
  18.     networks:
  19.       - outside
  20. networks:
  21.   outside:
  22.     external: true
复制代码
3、创建初始化脚本init.sql,docker启动时,初始化postgre

  1. -- 启用 pgvector 扩展
  2. CREATE EXTENSION IF NOT EXISTS vector;
复制代码
文档布局如下
  1. your-project/
  2. ├── docker-compose.yaml
  3. ├── Dockerfile
  4. └── init.sql  # 内容为 CREATE EXTENSION vector;  
复制代码
启动docker
docker compose up -d

4、 登录postgres


5、验证vector安装

SELECT * FROM pg_extension;

您已乐成使用 Docker Compose 安装 pgvector 。此设置答应您利用 pgvector 在 PostgreSQL 数据库中存储和搜刮嵌入。有关详细信息,请参阅 pgvector GitHub 官方文档。
使用 pgvector 进行向量利用

当处置惩罚小型数据集时,pgvector 答应进行精确的最近邻搜刮而不需要近似。您可以使用各种距离函数,如 L2、余弦距离、内积和余弦相似度来找到最靠近的匹配项。每个距离函数都使用其自己的运算符实现,可以无缝集成到 SQL 查询中:
距离函数与利用符映射

距离函数利用符索引运算符L2 距离<->vector_in_ops内积<#>vector_l2_ops余弦距离<=>vector_cosine_ops余弦相似度1 - (a <=> b)vector_cosine_ops 说明

向量

向量是多维空间中的数值表现,常用于语义搜刮等任务。在 PostgreSQL 中,向量被视为·标准数据类型·,可以与其他数据类型一起存储和查询。
pgvector 扩展增强了 PostgreSQL 的向量利用,包括内积、余弦距离和ANN 搜刮功能。
通过文本生成向量模子生成向量
pgvector 进行向量利用的完备学习示例

步骤 1: 创建测试表

   创建一个包罗向量字段的表 products,存储商品信息及其向量化特征
  1. -- 创建表
  2. CREATE TABLE products (
  3.     id SERIAL PRIMARY KEY,
  4.     name VARCHAR(100),
  5.     description TEXT,
  6.     embedding VECTOR(3)  -- 假设使用 3 维向量(实际场景中维度可能为 512、768 等)
  7. );
复制代码
步骤 2: 插入示例数据

插入 5 条示例数据,模拟不同商品的向量特征:
  1. INSERT INTO products (name, description, embedding) VALUES
  2. ('Laptop', '高性能笔记本电脑', '[0.9, 0.1, 0.2]'),
  3. ('Smartphone', '5G智能手机', '[0.8, 0.3, 0.1]'),
  4. ('Headphones', '降噪耳机', '[0.2, 0.7, 0.4]'),
  5. ('Camera', '4K数码相机', '[0.6, 0.5, 0.3]'),
  6. ('Watch', '智能手表', '[0.3, 0.6, 0.8]');
复制代码
步骤 3: 执行相似性搜刮

示例 1: 欧氏距离 (L2 距离)
查找与目标向量 [0.7, 0.2, 0.3] 最相似的商品:
  1. select
  2.         name ,
  3.         description ,
  4.         embedding <-> '[0.7,0.2,0.3]' as distance
  5. from
  6.         products
  7. order by
  8.         distance
  9. limit 3 ;
复制代码

示例 2: 余弦相似度
计算与目标向量 [0.7, 0.2, 0.3] 的余弦相似度(值越大越相似):
  1. SELECT
  2.     name,
  3.     description,
  4.     1 - (embedding <=> '[0.7, 0.2, 0.3]') AS cosine_similarity
  5. FROM products
  6. ORDER BY cosine_similarity DESC
  7. LIMIT 3;
复制代码

步骤 4: 创建索引优化查询

为提升搜刮性能,对向量字段创建 HNSW (分层的导航小天下) 索引(得当高维向量):
   这条 SQL 语句在 products 表的 embedding 列上创建了一个基于 HNSW 算法的索引,使用余弦相似度作为度量标准,并通过设置 m 和 ef_construction 参数来优化索引性能。这种索引非常得当处置惩罚高维向量数据的快速相似度搜刮任务。
  1. CREATE INDEX ON products
  2. USING hnsw (embedding vector_cosine_ops)
  3. WITH (m = 16, ef_construction = 64);
复制代码
SQL 语句解释

步骤 5: 复杂查询示例

结合文本筛选和向量搜刮,查找形貌中包罗「智能」且与目标向量相似的商品:
  1. SELECT
  2.     name,
  3.     description,
  4.     embedding <=> '[0.7, 0.2, 0.3]' AS cosine_distance
  5. FROM products
  6. WHERE description LIKE '%智能%'
  7. ORDER BY cosine_distance
  8. LIMIT 3;
复制代码

以下是一个使用 pgvector 进行向量利用的完备学习示例,涵盖数据插入、相似性搜刮和索引优化。假设你已经安装并启用了 pgvector 扩展(基于之前的 Docker 情况)。

关键概念解释


现实应用场景


性能优化发起

底子语法

https://postgresql.mosong.cc/guide/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4