Retrieval that actually works
Vector search alone misses. Good retrieval blends methods and reranks before the model reads anything.
Vector similarity is one signal, not the whole answer. It finds passages that are semantically close, but it misses the exact terms, names, and codes a keyword index catches, and it has no sense of how facts connect.
So we build retrieval as a pipeline, not a single call. Candidates come from several places at once: BM25 for exact terms, dense vectors for meaning, and a graph for relationships between entities. A reranker then scores the merged set against the query, so the model only ever reads the few passages that matter.
The mix is tuned to your corpus, not copied from a template. Chunking, embeddings, and weights depend on what your documents are and how people ask for them. We measure recall on real questions and adjust, rather than trusting defaults.