SERVICE · AI AND AGENT ENGINEERING
Retrieval engineering
Build or extend the retrieval stack behind a product — and prove it with numbers instead of adjectives.
WHAT WE BUILD
Graph ingestion
Markdown, PDF-to-text and HTML corpora into entities, relationships and communities, stored in PostgreSQL with pgvector so the graph and the embeddings share one database.
Hybrid retrieval
Vector, keyword and graph channels combined with reciprocal rank fusion, then community scoring for corpus-wide questions. Every answer returns its sources.
MCP server in front of it
The engine exposed over the Model Context Protocol with isolated workspaces, so an editor or an agent can query it without an SDK.
HOW IT IS EVALUATED
A retrieval system without a query set is a demo. We ask for twenty questions your team already argues about, then report on them every week.
- Strict hit rate — did the answer contain the fact at all
- Entity and phrase recall — which named things and phrases were retrieved
- Latency per query and total indexing time, on your hardware
- The harness is committed to your repository and reruns with one command
STACK NOTES
PostgreSQL and pgvector instead of a separate vector database; Leiden communities instead of Louvain; reciprocal rank fusion instead of one tuned weight. The reasoning is written up in the case study.
ENGAGEMENT
Fixed scope, quoted per project, weekly diffs and a handover on completion. If the problem is only the evaluation, that is a two-week engagement on its own.
FAQ
GraphRAG or plain vector RAG?
Vector RAG answers "which chunk looks like this question". GraphRAG also answers "which entities connect to this one", which is what multi-hop and corpus-wide questions need. Start with vector search if your questions are single-fact; add the graph when they are not.
PostgreSQL and pgvector, or a dedicated vector database?
PostgreSQL keeps the graph, the embeddings and your relational data in one place with one backup and one migration path. A dedicated vector database earns its place above roughly tens of millions of vectors or when you need its specific index types; below that the operational cost usually outweighs the query difference.
Why expose retrieval over MCP instead of a REST API?
An MCP server is usable by any MCP-capable editor or agent without writing a client. A REST API still needs an SDK, auth plumbing and a client update every time the schema moves.