/** * Smart metadata filtering for vector search * Filters DURING search to ensure relevant results * Simple API that just works without configuration */ import { SearchResult, HNSWNoun } from '../coreTypes.js'; /** * MongoDB-style query operators */ export interface QueryOperators { $eq?: any; $ne?: any; $gt?: any; $gte?: any; $lt?: any; $lte?: any; $in?: any[]; $nin?: any[]; $exists?: boolean; $regex?: string | RegExp; $includes?: any; $all?: any[]; $size?: number; $and?: MetadataFilter[]; $or?: MetadataFilter[]; $not?: MetadataFilter; } /** * Metadata filter definition */ export interface MetadataFilter { [key: string]: any | QueryOperators; } /** * Options for metadata filtering */ export interface MetadataFilterOptions { metadata?: MetadataFilter; scoring?: { vectorWeight?: number; metadataWeight?: number; metadataBoosts?: Record number)>; }; } /** * Check if metadata matches the filter */ export declare function matchesMetadataFilter(metadata: any, filter: MetadataFilter): boolean; /** * Calculate metadata boost score */ export declare function calculateMetadataScore(metadata: any, filter: MetadataFilter, scoring?: MetadataFilterOptions['scoring']): number; /** * Apply compound scoring to search results */ export declare function applyCompoundScoring(results: SearchResult[], filter: MetadataFilter, scoring?: MetadataFilterOptions['scoring']): SearchResult[]; /** * Filter search results by metadata */ export declare function filterSearchResultsByMetadata(results: SearchResult[], filter: MetadataFilter): SearchResult[]; /** * Filter nouns by metadata before search */ export declare function filterNounsByMetadata(nouns: HNSWNoun[], filter: MetadataFilter): HNSWNoun[]; /** * Aggregate search results for faceted search */ export interface FacetConfig { field: string; limit?: number; } export interface FacetResult { [value: string]: number; } export interface AggregationResult { results: SearchResult[]; facets: Record; } export declare function aggregateSearchResults(results: SearchResult[], facets: Record): AggregationResult;