Blog · Tag

pgvector.

7 posts in this archive.

Engineering

A pgvector migration postmortem

An index rebuild that cost us 90 minutes of degraded search across a handful of tenants. What we changed in the runbook, and the piece of the migration we wish we had rehearsed.

The PursuitAgent engineering team
Engineering

Migrating to Gemini Embedding v3, the safe way

A dual-index backfill and a staged cutover across two weeks. How we evaluated retrieval deltas before the switch, what we watched for during the cutover, and the one metric that gated the final flip.

The PursuitAgent engineering team
Engineering

Backup and restore for a KB that contains embeddings

Point-in-time restore, vector consistency, and why we run a full restore drill once a month. The engineering notes on backing up a knowledge base that is half relational and half vector.

The PursuitAgent engineering team
Engineering

Tuning pgvector HNSW for proposal workloads

M, ef_construction, ef_search — the three knobs that decide retrieval latency and recall in a pgvector HNSW index. What we chose for PursuitAgent and why.

The PursuitAgent engineering team
Engineering

Turning a SOC 2 PDF into 140 KB blocks

The ingest, the extraction, the linking. A worked trace of how a SOC 2 Type II report becomes the set of KB blocks that DDQ answers cite — with the real pgvector row shape at the end.

The PursuitAgent engineering team
Engineering

Per-customer embedding tenancy, explained

How tenant isolation works at the vector level in PursuitAgent. Why we use Postgres row-level security on pgvector as the default, where shared embedding spaces would be cheaper, and the trade-offs we are not willing to take.

The PursuitAgent engineering team
Engineering

Inside the ingest pipeline: parse, extract, index

How a PDF becomes searchable KB blocks. LlamaParse for parsing, structural-plus-semantic extraction, pgvector indexing with HNSW. Where each stage wins and where it falls over.

The PursuitAgent engineering team

See the proposal workflow

Take the 5-minute tour, then start a trial workspace when you're ready to run a real pursuit against your own source material.