Google Cloud在2026年9月14日发布Cloud SQL for PostgreSQL的pg_textsearch使用文档。该扩展把BM25相关性评分带进托管PostgreSQL,让应用可以在数据库内部完成全文索引、查询和排序。
这项能力适合商品检索、文档搜索和知识库等需要词频排序的场景,但它并不是语义向量搜索的替代品。官方也提供了把BM25结果与vector扩展结果合并的混合检索方式。

BM25补足内置ts_rank的排序能力
pg_textsearch考虑逆文档频率、词频饱和和文档长度归一化。Google说明,这些因素可以让结果比PostgreSQL内置的ts_rank更贴近文本相关性。
扩展直接使用标准PostgreSQL存储页,应用不必为同一批数据额外维护Elasticsearch集群。这能减少双集群同步问题,但不会自动解决分词语言、字段权重和搜索质量评估。
启用条件限定在PostgreSQL 17及以上
官方要求实例运行PostgreSQL 17或更高版本,并使用维护版本R20260712.01_06或更新版本。管理员还要把数据库标志cloudsql.enable_pg_textsearch设为on,系统会把扩展加入shared_preload_libraries。
旧版本实例不能仅靠执行CREATE EXTENSION获得该功能。应先核对数据库主版本和维护版本,并评估修改数据库标志是否需要重启或维护操作。
创建扩展后还要建立BM25索引
满足前置条件后,可在目标数据库执行CREATE EXTENSION pg_textsearch;,再查询pg_extension确认版本。全文检索前需要使用USING bm25为文本列建立索引,并指定合适的text_config。
查询通过<@>运算符计算分数,官方示例按分数升序取回结果。语言配置必须与实际内容相匹配,否则索引存在也不代表分词和召回结果正确。
向量搜索可以与关键词排序并存
官方文档展示了与vector扩展组合的方式:分别获得语义搜索和全文搜索排名,再使用倒数排名融合计算合并分数。这样既能匹配关键词,也能召回表达不同但语义接近的内容。
混合检索的融合常数和候选数量属于业务参数。生产使用前应以真实查询集测量准确率、延迟与成本,不能直接把示例中的限制值当作所有应用的最佳配置。
上线前应观察索引构建与查询资源
扩展提供批量加载阈值、段压缩、默认评分文档上限、内存页阈值和每层段数量等配置。Google列出的默认值适合作为起点,但大表初建索引和高并发检索仍可能增加CPU、内存与存储压力。
验收标准应包含扩展版本正确、BM25索引有效、典型查询排序符合预期,并且实例资源和查询延迟处于预算范围。若要回滚,应先确认应用不再依赖相关索引和运算符,再处理扩展与数据库标志。


