Skip to content

Add SimilarityLFU cache admission policy - #101

Open
Safaael25 wants to merge 1 commit into
vcache-project:masterfrom
Safaael25:feat/similarity-lfu-admission-policy
Open

Add SimilarityLFU cache admission policy#101
Safaael25 wants to merge 1 commit into
vcache-project:masterfrom
Safaael25:feat/similarity-lfu-admission-policy

Conversation

@Safaael25

Copy link
Copy Markdown
Contributor

Introduces AdmissionPolicy, a new decision point separate from EvictionPolicy: instead of deciding what to remove once the cache is full, it decides whether a cache-miss item is worth caching at all. Wired into VCacheConfig/Cache as fully opt-in (defaults to AlwaysAdmitPolicy, preserving existing behavior).

SimilarityLFUAdmissionPolicy adapts TinyLFU's "don't admit until it recurs" idea to vCache's semantic cache: since two paraphrased queries hash completely differently, exact-key frequency sketches don't apply here, so recurrence is checked via embedding cosine-similarity against a small bounded probation list instead.

@Safaael25
Safaael25 force-pushed the feat/similarity-lfu-admission-policy branch from 61ad078 to ccdb6a1 Compare July 30, 2026 08:56
Introduces AdmissionPolicy, a new decision point separate from
EvictionPolicy: instead of deciding what to remove once the cache is
full, it decides whether a cache-miss item is worth caching at all.
Wired into VCacheConfig/Cache as fully opt-in (defaults to
AlwaysAdmitPolicy, preserving existing behavior).

SimilarityLFUAdmissionPolicy adapts TinyLFU's "don't admit until it
recurs" idea to vCache's semantic cache: since two paraphrased queries
hash completely differently, exact-key frequency sketches don't apply
here, so recurrence is checked via embedding cosine-similarity against
a small bounded probation list instead.

Benchmarked against a real 1591-row workload across 6 eviction
policies and 7 cache sizes: it substantially improves hit ratio and
precision under tight cache pressure (e.g. avg hit ratio 2.13% -> 5.82%
at 40MB), but consistently hurts once the cache is generous enough
that little is actually being evicted (e.g. 13.26% -> 8.10% at 100MB).
Documented as a tight-cache-pressure tool, not a universal win.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant