在PostgreSQL的AI扩展生态中,Timescale的动作似乎慢了半拍。作为早期获得融资的知名时序数据库插件,其在AI浪潮中的反应速度,相比Neon、Crunchy Data乃至后来的VectorChord、Mooncake、ParadeDB等玩家,显得不够迅速。直到近期,Timescale才正式开源了其关键词搜索插件 pg_textsearch。
AI搜索能力的构建远非单一技术所能覆盖。一个强大的AI系统离不开高效、多模态的数据检索作为“外脑”。仅依靠预训练数据的LLM,其知识和时效性都存在局限。因此,搜索是AI应用不可或缺的能力。
而搜索本身也不应被局限于单一的“语义搜索”。不同的应用场景对数据检索有着各异的需求,关键词搜索、精确的标量过滤同样至关重要。场景,永远是技术选型的核心考量。
当前的数据库AI搜索赛道,主要聚焦于向量搜索、关键词搜索、标量过滤及其混合模式。可以预见,未来对OLAP分析、GIS地理信息、图谱关系等场景的搜索需求将接踵而至。AI搜索真正需要的是能够应对多模态查询的“全家桶”式解决方案。
值得注意的是,国内已有不少产品洞察到这一趋势,并开始布局,例如分布式解耦架构的晨章Eloq、单机嵌入式的OceanBase SeekDB等。
反观Timescale此次开源pg_textsearch(其早前已开源负责语义搜索的pg_vectorscale),步伐确实稍显迟缓。相比之下,VectorChord早已开源了涵盖向量搜索、关键词搜索(BM25)及分词器的完整工具链。
这一现象也折射出数据库领域应对AI搜索的两种主要流派:
解决方案派:
以满足最终需求为核心,通过组合多种技术栈来实现功能,可能涉及数据多副本、异步同步等问题,但力求提供完整的搜索体验。
大一统派:
追求在单一数据副本上,通过插件化或多种计算引擎来提供所有搜索能力。PostgreSQL无疑是此派的典型代表,其丰富的插件生态为构建一体化数据平台提供了可能。这也为基于PG的国产分布式数据库产品创造了差异化发展的机会。
那么,pg_textsearch究竟提供了哪些能力?
pg_textsearch是由Timescale团队开发的一个PostgreSQL扩展,旨在为Postgres提供高性能、现代化的全文搜索能力,并针对AI工作负载和混合搜索进行了优化。
核心功能
- BM25算法支持:引入了工业标准的BM25排名算法,其相关性评分通常比Postgres原生的
ts_rank更为精准,能够提供接近Elasticsearch等专业搜索引擎的搜索质量。
- 极致性能:采用内存表架构与共享内存存储,设计目标是实现毫秒级的检索响应。
- 混合搜索:可与
pgvector或pgvectorscale无缝配合。开发者可以在同一查询中,轻松结合“语义搜索”(向量相似度)与“关键词搜索”(BM25相关性),从而显著提升搜索准确率。
产品特点
- 事务一致性:作为Postgres原生扩展,它完全遵循ACID事务原则。数据更新或删除时,搜索索引同步更新,无需处理外部搜索引擎常见的数据同步与最终一致性问题。
- 语法简洁:提供了自定义操作符(如
<@>),允许通过直观的SQL语句执行复杂的排名搜索,例如:ORDER BY content <@> 'search terms'。
- 高度兼容:支持Postgres原生的文本搜索配置(包括多语言分词器),并兼容分区表,适用于处理海量数据集。
适用场景
- RAG(检索增强生成):在构建AI应用或聊天机器人时,需要从大量文档中快速、精准地检索上下文信息。
- 替代外部搜索系统:对于希望简化技术栈,避免维护独立Elasticsearch或Algolia服务的团队,
pg_textsearch使得在Postgres内部即可完成高质量的全文搜索成为可能。
总结
pg_textsearch的发布,进一步强化了PostgreSQL作为“集成式AI数据库”的定位。它消除了在数据库与搜索引擎间维护数据同步的复杂度,同时通过BM25算法大幅提升了内置全文搜索的相关性质量。PostgreSQL的AI插件生态正日趋完善与内卷,这最终将为开发者带来更多利好。
|