/** * HNSW Parameter Presets * * These presets are workload-informed starting points. `expectedRecall` is a * heuristic field from historical benchmark runs, not a guarantee; callers * should validate recall against exact brute-force ground truth on their data. * * Key parameters: * - M: Maximum connections per node (higher = better recall, more memory) * - efConstruction: Beam width during index building (higher = better quality, slower build) * - efSearch: Beam width during search (higher = better recall, slower search) */ export interface HNSWPreset { name: string; description: string; M: number; efConstruction: number; efSearch: number; expectedRecall: number; targetDimensions: string; targetDatasetSize: string; } export interface BrowserPresetOptions { /** Expected number of vectors. Used by getRecommendedPreset before browser caps are applied. */ datasetSize?: number; /** User agent override. Defaults to navigator.userAgent in browsers. */ userAgent?: string; /** Hardware concurrency override. Defaults to navigator.hardwareConcurrency in browsers. */ hardwareConcurrency?: number; /** Force low-memory/mobile-style caps. Auto-detected from userAgent and hardwareConcurrency when omitted. */ memoryConstrained?: boolean; /** Force Safari-specific search cap. Auto-detected from userAgent when omitted. */ safari?: boolean; /** Force mobile-specific caps. Auto-detected from userAgent when omitted. */ mobile?: boolean; } /** * Preset for low-dimensional vectors (128D or less) * Suitable for: Image features, word2vec, GloVe embeddings */ export declare const PRESET_LOW_DIM: Readonly; /** * Preset for medium-dimensional vectors (256-512D) * Suitable for: Sentence embeddings, smaller transformer outputs */ export declare const PRESET_MEDIUM_DIM: Readonly; /** * Preset for high-dimensional vectors (768D+) * Suitable for: BERT, GPT embeddings, Cohere, OpenAI embeddings * This is the recommended preset for RAG applications * * A seeded synthetic 768D sweep informed this heuristic, but recall remains * workload-specific. Validate the selected parameters against exact ground * truth for the target data before treating the preset as sufficient. */ export declare const PRESET_HIGH_DIM: Readonly; /** * Preset for very high-dimensional vectors (1536D+) * Suitable for: OpenAI text-embedding-ada-002, text-embedding-3-large * * Scaled from PRESET_HIGH_DIM benchmarks (higher M for higher dimensions) */ export declare const PRESET_VERY_HIGH_DIM: Readonly; /** * Preset for small datasets (<10K vectors) * Prioritizes recall over speed since brute-force is viable */ export declare const PRESET_SMALL_DATASET: Readonly; /** * Preset for large datasets (100K-1M vectors) * Balances recall with build time and memory * * Uses a deeper default search beam than older releases. Large graphs * generally need more query-time exploration to keep recall stable. */ export declare const PRESET_LARGE_DATASET: Readonly; /** * Preset for maximum recall (prioritizes accuracy over speed) * Use when recall is critical and latency is acceptable */ export declare const PRESET_MAX_RECALL: Readonly; /** * Preset for minimum latency (prioritizes speed over recall) * Use as a latency-oriented starting point when a lower recall target may be * acceptable; validate the actual quality/latency trade-off on your workload. */ export declare const PRESET_LOW_LATENCY: Readonly; /** * All available presets */ export declare const PRESETS: Readonly>>; /** * Get recommended preset based on dimension and dataset size * * For high-dimensional vectors (768D+), dimension takes priority over dataset size * because recall degrades significantly without higher M values. */ export declare function getRecommendedPreset(dimension: number, datasetSize?: number): HNSWPreset; /** * Get a browser-safe preset that caps memory-heavy HNSW parameters. * * This keeps the high-recall server/runtime defaults intact while giving browser * apps a one-call preset for OPFS/WebWorker use, especially on Safari and * lower-memory mobile devices where aggressive M/efSearch values can cause * long tasks or tab crashes. */ export declare function getBrowserRecommendedPreset(dimension: number, options?: BrowserPresetOptions): HNSWPreset; /** * Get preset by name */ export declare function getPreset(name: string): HNSWPreset | undefined; /** * RAG-specific preset recommendation * For typical RAG applications using popular embedding models */ export declare function getRAGPreset(embeddingModel: string): HNSWPreset; //# sourceMappingURL=presets.d.ts.map