PG 生態新玩家 ParadeDB
YC S23 投了一個新項目 ParadeDB[1], 非常有意思。他們的 Slogan 是 “Postgres for Search & Analytics —— Modern Elasticsearch Alternative built on Postgres”。就是用於搜索和分析的 PostgreSQL,旨在成爲 Elasticsearch 的替代。
PostgreSQL 的生態確實越來越繁榮了,在基於 PG 的擴展與衍生中,我們已經有了基於 MongoDB 開源替代 —— FerretDB,SQL Server 開源替代 Babelfish,Firebase 開源替代 Supabase,AirTable 開源替代 NocoDB,等等等等,現在又多了 ElasticSearch 開源替代 —— ParadeDB。
ParadeDB 實際上是由三個 PostgreSQL 擴展組成:pg_bm25
,pg_analytics
,以及 pg_sparse
。這三個擴展都可以獨立使用了。應 ParadeDB 創始人所託,我已經將這幾個擴展打好包(v0.5.6),並將會在 Pigsty 的下個 Release v2.6 中默認收錄,讓用戶能夠開箱即用。
我翻譯了 ParadeDB 的官網介紹與四篇博客文章,爲您介紹這個 PostgreSQL 生態的新星。今天是第一篇 —— ParadeDB 概覽
ParadeDB
我們榮幸地向您介紹 ParadeDB:針對搜索場景優化的 PostgreSQL 數據庫。ParadeDB 是第一個旨在成爲 Elasticsearch 替代的 Postgres 數據庫構建,被設計爲可以在 PG 表上進行閃電般快速的全文檢索、語義檢索、以及混合檢索。
ParadeDB 解決什麼問題?
對於許多組織而言,搜索依然是一個未解問題 —— 儘管有像 Elasticsearch 這樣的巨頭存在,但大多數與其打過交道的開發者都知道,運行、調優和管理 Elasticsearch 是多麼蛋疼。雖然也有其他的搜索引擎服務,但在現有數據庫上粘連對接這些外部服務,會引入更多重建索引和數據複製的複雜難題與成本。
那些追求統一權威數據源與搜索引擎的開發者轉向了 PostgreSQL,PG 已經通過 tsvector
提供了基本的全文檢索能力,也通過 pgvector
提供了向量語義檢索能力。這些工具也許對於簡單用例和中等大小的數據集來說很好使,但當表變大或查詢變得複雜時就有些不夠用了:
- 大表上的排序和關鍵詞搜索非常緩慢 2. 不支持 BM25 計算 3. 沒有混合檢索支持,將向量搜索與全文搜索的技術 4. 沒有實時搜索 — 數據必須手動重新索引或重新嵌入 5. 對複雜查詢如分面或相關性調優的支持有限
到目前爲止,我們已經目睹了許多工程團隊用很勉強的方式在 Postgres 上疊加了一套 Elasticsearch,隨即因爲後者太過於臃腫、昂貴或複雜,而最終放棄。我們在想:如果 Postgres 本身就帶有 ElasticSearch 水平的搜索會發生什麼?那麼開發者就不會有這種兩難選擇了 —— 統一使用 PostgreSQL 但搜索能力受限,還是使用事實源和搜索引擎兩種獨立的服務?
ParadeDB 適用於誰?
Elasticsearch 擁有廣泛的應用場景,但我們並不企圖一蹴而就地覆蓋所有場景——至少現階段不是。我們更傾向於專注於一些核心場景 —— 專爲那些希望在 PostgreSQL 上進行搜索的用戶服務。對於以下情況,ParadeDB 會是您的理想選擇:
• 希望使用單一 Postgres 作爲事實來源,厭惡在多個服務之間搬運複製數據。• 希望在不損害性能與可伸縮性的前提下,對存儲在 Postgres 中的海量文檔進行全文搜索。• 希望 ANN / 相似度搜索與全文搜索相結合,從而獲得更精準的語義匹配效果
譯者注:在 Clickbench 中,ParadeDB 的分析性能表現相當不錯,目前在 PG 生態的分析類插件中拔得頭籌。
ParadeDB 產品介紹
ParadeDB 是一個完全託管的 Postgres 數據庫,目前任何其他 PG 供應商都還沒有提供此類全文索引和搜索 PG 表的能力:
與 AWS RDS 等託管服務不同,ParadeDB 是一個 PostgreSQL 擴展插件,不需要任何設置,可以與整個 PG 生態集成,並完全可定製。ParadeDB 是開源的(AGPLv3),並提供了一個簡單的 Docker Compose 模板以滿足需要自建 / 定製的開發者的需求。
ParadeDB 的構建方式
ParadeDB 的核心是一個帶有自定義擴展的標準 Postgres 數據庫,這些擴展使用 Rust 編寫,引入了增強的搜索能力。
ParadeDB 的搜索引擎基於 Tantivy 構建,Tantivy 是受 Apache Lucene 啓發的開源 Rust 搜索庫。其索引作爲原生的 PG 索引存儲在 PG 中,從而避免了繁瑣的數據複製 / ETL 工作,並同時可以確保事務 ACID。
ParadeDB 爲 Postgres 生態提供了一個新擴展:pg_bm25
。pg_bm25
使用 BM25 評分算法在 Postgres 中實現了基於 Rust 的全文搜索。ParadeDB 會預裝這個擴展插件。
下一步是什麼?
ParadeDB 的託管雲版本目前處於 PrivateBeta 階段。我們的目標是在 2024 年初推出一個自助服務的雲平臺。如果你想在此期間訪問 PrivateBeta 版本,歡迎加入我們的等待名單 [2]。
我們核心團隊的重點是開發 ParadeDB 的開源版本,將在 2023 年冬季推出。
我們 Build in Public,並很高興能與整個社區分享 ParadeDB。歡迎關注我們,在未來的博文中我們會進一步詳細介紹 ParadeDB 背後的有趣技術挑戰。
References
[1]
ParadeDB: https://www.paradedb.com/
[2]
加入 ParadeDB 等待名單: https://paradedb.typeform.com/to/jHkLmIzx?typeform-source=www.paradedb.com
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/bx2dRxlrtLcM6AD2qsplQQ