pg_search
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2100 | pg_search | 否 | 是 | 是 | 是 | 否 | 否 | paradedb |
| 相关扩展 | vector pg_textsearch pg_bestmatch vchord_bm25 pg_fts pgroonga pg_rrf psql_bm25s pgcontext vectorize pgfaceting roaringbitmap rum |
|---|
Requires shared_preload_libraries=pg_search and pgvector; bm25 access method conflicts with pg_textsearch and vchord_bm25; PIGSTY uses pgrx 0.19.1 for upstream pgrx 0.19.0.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.25.2 | 1817161514 | pg_search | vector |
| RPM | PIGSTY | 0.25.2 | 1817161514 | pg_search_$v | pgvector_$v, openblas |
| DEB | PIGSTY | 0.25.2 | 1817161514 | postgresql-$v-pg-search | postgresql-$v-pgvector, libopenblas0 |
构建
您可以使用 pig build 命令构建 pg_search 扩展的 RPM / DEB 包:
安装
您可以直接安装 pg_search 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
预加载配置:
创建扩展:
用法
来源:
- pg_search v0.25.2 README
- pg_search v0.25.2 发行说明
- pg_search v0.25.2 变更日志
- pg_search v0.25.1 迁移说明
- 创建 ParadeDB 索引
- 全文匹配操作符
- BM25 评分
- 高亮与摘要
- 索引向量
- 查询向量
- 混合搜索概述
pg_search 0.25.2 为 PostgreSQL 增加 ParadeDB 的全文、结构化、向量和混合搜索索引。版本 0.25 使用 paradedb 索引访问方法;旧的 bm25 访问方法名称仍保留为兼容别名。该扩展依赖 vector,上游支持 PostgreSQL 15-18,且必须通过 shared_preload_libraries 加载。
安装并构建索引
重启 PostgreSQL,然后创建扩展以及一张拥有稳定唯一键的表:
key_field 必须是第一个索引列,并能唯一标识每一行。文本键必须以不分词的方式建立索引。一张表只能拥有一个 ParadeDB 索引,因此应将所有需要搜索的字段都纳入该索引。
全文搜索
使用 ||| 匹配任意词元,使用 &&& 要求匹配所有词元:
pdb.score(key_field) 提供当前行的相关性分数。pdb.snippet(indexed_text_column) 返回高亮摘要。这些辅助函数只有在 ParadeDB 搜索谓词驱动的查询中才有意义。
向量搜索
向量索引在 0.25 系列中处于 beta 阶段,使用 pgvector 的 vector 类型。创建索引时应选择操作符类;更改距离度量需要重建索引。
支持的索引操作符类为 vector_l2_ops、vector_ip_ops 和 vector_cosine_ops。0.25 向量索引不为 halfvec、sparsevec 或 bit 列建立索引。
混合搜索
单个 ParadeDB 索引可以组合词法谓词、结构化过滤与向量排序。需要更复杂的融合时,应使用文档中的 RRF 和加权混合搜索函数,而不是直接将量纲不同的分数相加。
版本 0.25.2 与注意事项
- 版本 0.25 将主要索引访问方法从
bm25重命名为paradedb。现有的USING bm25定义仍受支持,但新示例应使用USING paradedb。 - 版本 0.25.1 支持确定性的向量并列结果排序,并将倒数排名融合查询的向量分支下推到索引中。它还新增
paradedb.vector_clustering_threshold,默认值为 500,并将向量索引构建并行度上限设为四个工作进程。 - 版本 0.25.1 移除了
paradedb.vector_cluster_probe_epsilon,并更改了向量索引的边界门控。从 0.25.0 升级数据库后,必须对所有包含向量字段的 ParadeDB 索引执行REINDEX;对于这些索引,仅安装新的共享库并执行ALTER EXTENSION并不充分。 - 0.25.2 是稳定性与正确性版本:它修复带向量列的无字段
more_like_this、通用预备计划中的pdb.fuzzy、遗留动态过滤器、多种并行子计划和 MPP 计划形态错误,并收紧 typemod 定义的访问控制。除了继承自 0.25.0 的向量索引重建要求外,没有新增索引迁移。 CREATE EXTENSION pg_search CASCADE可以安装所需的vector扩展,但仍须先为所有服务器进程配置预加载并重启。仅通过LOAD或session_preload_libraries加载并不充分。- 使用不同字段选项重建索引后,查询计划、分词和排名都可能变化。在上线前,请使用符合生产形态的数据测试相关性与向量召回率。