Data plane

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.

Vector search

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.

Time-series

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.

Embeddings

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.

Native
Where supported

pgvector ≥ 0.7, Mongo ≥ 6.0

Companion
Where not

Honest fallback, explicit gate

0
Silent degradation

Maturity gates everywhere

Branchable
Like every other plane

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.