跳到主要内容

PostgreSQL常见扩展

  • pgvector
  • PostGIS
  • TimescaleDB
  • pg_stat_statements
  • pg_trgm
  • hstore
  • pgcrypto
  • pg_repack
  • postgres_fdw

pgvector​

  • pgvector = 给 PostgreSQL 增加向量检索能力
  • <-> 是 pgvector 定义的一个距离操作符, 来用
    • 计算两个向量之间欧式距离
sql
SELECT
id,
embedding <-> '[0.1, 0.2, 0.3]' AS distance
FROM documents
ORDER BY embedding <-> '[0.1, 0.2, 0.3]'
LIMIT 10;

pg_trgm​

  • pg_trgm 是 PostgreSQL 的一个扩展,用来做基于 trigram(三字符片段)的字符串相似度匹配和模糊搜索
  • 简单来说,pg_trgm用来做关键词搜索,利用字符串相似度和模糊搜索

使用​

  • 启用扩展 → 建 trigram 索引 → 用 LIKE/ILIKE

场景​

  • 利用pgvector + pg_trgm 来做混合检索
    • 向量检索 + 关键词/模糊搜索 的混合检索
sql
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS pg_trgm;

CREATE TABLE documents (
id bigserial PRIMARY KEY,
content text NOT NULL,
embedding vector(1536)
);