AI workloads as first-class entities.
Vectors, embeddings, time-series — Vadyl treats them as canonical storage models, not auxiliary services. PostgreSQL with pgvector ≥ 0.7 gets native HNSW / IVFFlat indexes. MongoDB ≥ 6.0 gets native time-series collections with bucket policies and downsample rollups. Below the floor, Vadyl falls back to companion adapters honestly — never silently degrades.
Native pgvector. Capability-gated fallback.
IVectorAugmentationProvider
Composite contract: VectorSearchAsync, VectorHybridSearchAsync, UpsertVectorAsync, DeleteVectorAsync, CreateVectorIndexAsync, DropVectorIndexAsync.
HNSW + IVFFlat
Canonical defaults pinned: HNSW (M=16, EfConstruction=64) up to 2000 dims. IVFFlat (lists=100) up to 16000 dims. Per-column opclasses + opclass parameters honored.
Three distance operators
Cosine (<=>), L2 (<->), inner product (<#>). Hamming and Jaccard rejected with NotSupportedException — companion-only. No silent metric substitution.
Hybrid search
VectorHybridSearchAsync combines lexical + semantic ranking. Capability-gated; below 0.7.0 the call lands on a companion vector index with the same outcome.
Companion fallback
When pgvector is missing or below the version floor, VectorCompanionIndex provides equivalent semantics with explicit performance honesty. Operators see the maturity gate, not silent degradation.
Optional auto-provisioning
Configurations.EnsurePgVectorExtension = true lets Vadyl install the extension on bootstrap when permitted. Otherwise the gate is honest: native or companion, never both at once.
Native Mongo time-series. Honest maturity gate.
ITimeSeriesProvider
Composite contract: QueryRangeAsync, DownsampleAsync, IngestAsync, IngestBatchAsync, CreateTimeSeriesCollectionAsync, SetRetentionAsync, CreateDownsampleRollupAsync.
TimeSeriesCollectionOptions
TimeField, MetaField, Granularity, RetainFor — declarative collection shape. Vadyl emits the right Mongo command per server version.
Mongo ≥ 6.0
MinTimeSeriesMajorVersion = 6 enforced via buildInfo probe at InitializeAsync. Below the floor, every method throws InvalidOperationException pointing to the canonical companion adapter.
Bucket policies
BucketPolicy declared on the product entity — coarse / fine, retention windows, downsample rollups. Honored where the provider supports them.
The pipeline that feeds your retrieval.
CorpusEmbeddingPipelineHostedService is canonical. Knowledge corpora attach to entities; embedding adapters route through governed LLM connections; vectors land in pgvector or the companion index. The pipeline is branchable, observable, and capability-aware — same shape as every other plane.
pgvector ≥ 0.7, Mongo ≥ 6.0
Honest fallback, explicit gate
Maturity gates everywhere
Indexes, corpora, pipelines
Vectors and time-series, not bolted on.
Mark a field as a vector. Declare a time-series collection. Vadyl picks native where it can, companion where it can't. The product model is the same.