ProjectBuild a Permission-Aware Knowledge Hub as an MCP Server: the explanation · Module 9: Hybrid search and ranking · part 11 of 22
Part 11 · Module 9: Hybrid search and ranking

Module 9: Hybrid search and ranking

25 min read·
About 50 minutes · Needs: Module 5 (the chunks table), Module 7 (groups), Module 8 (embeddings and chunks) · Code: server/wayfinder/search.py, server/tests/retrieval/test_search.py

Where this fits

WHERE THIS FITS Wayfinder this module AI CLIENTS the model writes the answer CONSOLE React, nginx WAYFINDER SERVER Starlette, mcp 2.3 RETRIEVAL permission filter before ranking INDEXING fastembed DATA Postgres 17 OPERATIONS evals, Docker, Cloud Run Claude Code HTTP + OAuth Cursor HTTP + OAuth Claude Desktop stdio bridge or connector MCP Inspector debugging, quick OAuth Web console React: search, audit, connect nginx one URL: /mcp, OAuth, /api MCP layer tools, resources Elicitation confirm create_issue OAuth 2.1 auth server, PKCE Tokens, sessions wf_pat_, cookie Console API /api REST Audit log every call, redacted stdio bridge wayfinder-stdio Guards proxy secret, limits Access rules groups per team Hybrid search pgvector + full text Fusion, boosts RRF, freshness, ADRs Knowledge decisions, owners Indexer loader, chunker bge-small-en fastembed, CPU PostgreSQL pgvector, full text Seed company Tidewater Freight Evaluation retrieval, 0 leaks Containers Docker Compose Deploy Cloud Run, Cloud SQL CI/CD GitHub Actions, WIF
This module (blue): the vector and full-text searches inside PostgreSQL and the fusion that merges them; the embedding model is amber because it is a model.

This module is the search engine inside Wayfinder: how a question becomes a short, ranked list of passages. The highlighted parts are the two searches that run inside PostgreSQL (meaning and words), the fusion step that merges them with a few boosts, and the embedding model that turns the question into a vector. The permission filter sits inside the same queries; Module 10 is about that filter alone.

The rest of this project is yours to keep

This project is bought on its own, once, and stays readable afterwards, including the parts added to it later.

Or open everything with a plan