supervc-stack/VectorChord-bm25
Native BM25 Ranking Index in PostgreSQL
解決的問題
VectorChord-BM25 為 PostgreSQL 提供原生的 BM25 排名演算法,彌補標準 PostgreSQL 全文搜尋(使用 tsvector 和 GIN 索引)缺乏現代相關性評分的缺口。它讓使用者能直接在資料庫內執行高效、高品質的全文搜尋與排序,無需將搜尋作業卸載至 Elasticsearch 等外部引擎。
工作原理
本專案將 BM25 排名的 Block-WeakAnd 算法實作為 PostgreSQL 擴充。引入專用的 bm25vector 資料類型——一種儲存詞元 ID 及其頻率的稀疏向量,以及對應的 bm25 索引,以加速搜尋與排序過程。它與 pg_tokenizer.rs 協同運作,透過預訓練模型(如 BERT)或針對特定領域或語言(包括透過 Jieba 支援中文、透過 Lindera 支援日語)自訂訓練的分詞器,將原始文字轉換為這些稀疏向量。
適用對象
需要在保持原生資料庫體驗的同時,實現專業級全文搜尋與相關性排序(BM25)的 PostgreSQL 開發者與資料庫管理員,且不希望承擔管理獨立搜尋叢集的複雜性。
主要亮點
- 原生 PostgreSQL 集成:以自訂運算子與索引實作,相比外部替代方案提供更直覺的 API。
- 彈性分詞:支援預訓練模型、自訂訓練模型,以及非空格分隔語言的專用預分詞器。
- 高效率:利用 Block-WeakAnd 算法加速最相關文件的檢索。
- 稀疏向量儲存:使用
bm25vector類型高效儲存詞彙 ID 與詞頻。
相關
- 專案
- 專案
- 專案
- 專案
- 專案