General Applications
← Back to Blog
3 min read

Search Relevance Starts with the Taxonomy

Data & Search
Information Architecture

Many organizations believe that implementing vector databases and semantic embeddings will instantly resolve their internal retrieval issues. The promise is attractive: index your unstructured documents, let a model translate them into high-dimensional space, and allow users to search using natural language. No keywords or tagging required.

In practice, purely semantic search models frequently fail under real-world operational constraints. They struggle with exact matching (such as part numbers, serial codes, or alphanumeric identifiers), obscure industry-specific abbreviations (e.g., matching 'ECCS' in nuclear contexts or 'SCADA' in controls), and temporal queries (e.g., 'recent updates'). True search relevance does not start with embeddings; it starts with metadata taxonomy and clean data modeling.

The Limits of Pure Vector Similarity

Vector search excels at matching conceptual synonyms, but vector similarity alone does not enforce structured attributes; those constraints must be modeled separately and applied by the retrieval system. For example, if a user searches for 'quarterly report 2025 energy', a vector model might match documents discussing quarterly results in 2023 or agriculture-related energy policies because the semantic distance is close. It cannot perform a strict logical filter on the 'year' or 'industry' fields unless those attributes are explicitly extracted, modeled, and filtered.

Without a structured taxonomy to organize documents, search results collapse into a list of conceptually similar but operationally irrelevant files.

Hybrid Search: The Pragmatic Standard

To build a search system that actually works under real operating conditions, we must combine semantic capability with structured filters in a hybrid architecture.

  • Keyword / BM25 Matching: Handles exact terminology, identifiers, names, and short codes.
  • Semantic Dense Retrieval: Matches synonyms, intent, and cross-lingual concepts.
  • Taxonomy Filters: Limits the search space to logical dimensions (e.g., document type, department, date range, client).

A Typical Hybrid Search Pipeline

At General Applications, we design search pipelines that enforce metadata constraints at retrieval time (pre-filtering) rather than filtering results afterward. Post-filtering vector lookups often discard the top K semantic matches, resulting in empty pages; pre-filtering preserves the eligible result pool before ranking, reducing empty or undersized pages and making pagination behavior more predictable.

Pre-filtered Hybrid Search Retrieval Pipeline ArchitecturePipeline diagram showing a search query pre-filtered by taxonomy metadata constraints before parallel BM25 keyword matching and dense vector search, merged via Reciprocal Rank Fusion into ranked relevant results.PRE-FILTERED RETRIEVAL BOUNDARYSearch QueryText + Meta FiltersTaxonomy Pre-FilterMetadata Boundaries & Constraintsexact termssemantic similarityBM25 Keyword IndexExact Codes & Part NumbersDense Vector StoreSemantic Intent & Synonymscandidate ranksReciprocal Rank Fusion (RRF)Rank Aggregation & RescoringRanked Relevant ResultsHigh-Precision Candidate Output
Pre-filtering taxonomy metadata constraints before parallel keyword and vector retrieval prevents undersized result pages and enforces structural bounds across both search indexes.
typescript
type SearchQuery = {
  text: string;
  filters: {
    industry?: string;
    docType?: string;
    dateMin?: string;
  };
};

async function executeHybridSearch(query: SearchQuery) {
  // 1. Build strict filters using the taxonomy
  const filterClause = buildTaxonomyFilter(query.filters);
  
  // 2. Query vector database with pre-filtering
  const semanticResults = await vectorStore.query({
    vector: await generateEmbedding(query.text),
    filter: filterClause,
    limit: 50
  });

  // 3. Query keyword index with the same constraints
  const keywordResults = await fullTextIndex.query({
    query: query.text,
    filter: filterClause,
    limit: 50
  });

  // 4. Reciprocal Rank Fusion (RRF) to merge and score
  return mergeAndScore(semanticResults, keywordResults);
}

The Role of Canonical Modeling

Before search indexation, data must be normalized. If three systems store client names as 'GA LLC', 'General Apps', and 'General Applications', the system cannot perform strict filtering. Establishing a canonical data model and writing automated pipelines to reconcile references is essential. Search relevance is rarely just a search index tuning challenge; it is fundamentally an information architecture and source-data cleanliness challenge.

Related Reads

Have thoughts on this post?

We welcome discussions and feedback on our architectural observations.

Start a Conversation