postgres-hybrid-text-search
Use this skill to implement hybrid search combining BM25 keyword search with semantic vector search using Reciprocal Rank Fusion (RRF).\n\n**Trigger when user asks to:**\n- Combine keyword and semantic search\n- Implement hybrid search or multi-modal retrieval\n- Use
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Use this skill to implement hybrid search combining BM25 keyword search with semantic vector search using Reciprocal Rank Fusion (RRF).\n\nTrigger when user asks to:\n- Combine keyword and semantic search\n- Implement hybrid search or multi-modal retrieval\n- Use BM25/pg_textsearch with pgvector together\n- Implement RRF (Reciprocal Rank Fusion) for search\n- Build search that handles both exact terms and meaning\n\n\nKeywords: hybrid search, BM25, pg_textsearch, RRF, reciprocal rank fusion, keyword search, full-text search, reranking, cross-encoder\n\nCovers: pg_textsearch BM25 index setup, parallel query patterns, client-side RRF fusion (Python/TypeScript), weighting strategies, and optional ML reranking.
How to use
Zainstaluj wymagane rozszerzenia PostgreSQL: pg_textsearch (BM25) i pgvector (embeddingi wektorowe). Obie są dostępne jako open-source i wspierane na Tiger Cloud oraz w wdrożeniach samodzielnie zarządzanych. Upewnij się, że używasz PostgreSQL 17 lub 18, ponieważ pg_textsearch obecnie wspiera tylko te wersje.
Skonfiguruj indeks BM25 za pomocą pg_textsearch na kolumnie tekstowej zawierającej treść, którą chcesz przeszukiwać. Równocześnie przygotuj embeddingi wektorowe za pomocą pgvector dla tej samej treści.
Napisz dwa równoległe zapytania: jedno wyszukujące wyniki za pomocą BM25 (słowa kluczowe), drugie za pomocą wyszukiwania semantycznego (wektory). Każde zapytanie powinno zwrócić ranking wyników.
Zaimplementuj Reciprocal Rank Fusion (RRF) po stronie klienta, używając Python lub TypeScript. RRF scala rankingi z obu metod w jedną listę, dając wagę zarówno dopasowaniom słów kluczowych jak i semantycznym.
Dostosuj strategie ważenia, aby kontrolować, jak bardzo wyniki BM25 wpływają na ostateczny ranking w porównaniu z wynikami semantycznymi. Możesz również dodać opcjonalne ML reranking do dalszego ulepszenia kolejności wyników.
Testuj hybrydowe wyszukiwanie na zapytaniach, które łączą konkretne terminy (nazwy produktów, kody) z koncepcyjnym zamiarem, aby upewnić się, że otrzymujesz zarówno dokładne dopasowania jak i semantycznie istotne wyniki.