11#include <unordered_map>
23 virtual std::vector<float>
embed(
const std::string& text)
const = 0;
69 const std::string& model_id,
70 const std::string& cache_namespace = {},
71 const std::string& embedder_id = {},
72 const std::string& query_prompt = {})
const;
74 void insert(
const std::vector<float>& embedding,
75 const std::string& model_id,
76 std::vector<std::uint8_t> output,
77 const std::string& cache_namespace = {},
78 const std::string& embedder_id = {},
79 const std::string& prompt = {});
83 std::shared_ptr<const HitVerifier>
verifier()
const;
97 const std::vector<float>& b);
100 mutable std::mutex mu_;
102 mutable std::vector<SemanticCacheEntry> entries_;
103 std::size_t max_entries_;
104 float similarity_threshold_;
105 mutable std::uint64_t clock_ = 0;
106 std::shared_ptr<const HitVerifier> verifier_ = std::make_shared<LexicalNearMissVerifier>();
107 mutable std::int64_t verifier_rejections_ = 0;
110 mutable std::unordered_map<std::string, bool> verdicts_;
111 static constexpr std::size_t kMaxVerdicts = 4096;
118 std::vector<float>
embed(
const std::string& text)
const override;
Definition semantic_cache.hpp:114
std::string identity() const override
"continuum/char-ngram-v1:<dim>".
std::size_t dimension() const override
BruteForceEmbeddingProvider(std::size_t dim=64)
std::vector< float > embed(const std::string &text) const override
Embed text; the result must have dimension() elements.
Definition semantic_cache.hpp:54
void set_verifier(std::shared_ptr< const HitVerifier > verifier)
Replace the hit verifier; nullptr serves any candidate above threshold.
SemanticCacheIndex(std::size_t max_entries=2048, float similarity_threshold=0.85f)
std::size_t estimated_bytes() const
Approximate resident bytes: embeddings, outputs, ids, and per-entry overhead.
float similarity_threshold() const
std::int64_t verifier_rejections() const
Candidates turned down by the verifier since construction / clear().
void set_similarity_threshold(float t)
std::shared_ptr< const HitVerifier > verifier() const
LookupResult lookup(const std::vector< float > &query_embedding, const std::string &model_id, const std::string &cache_namespace={}, const std::string &embedder_id={}, const std::string &query_prompt={}) const
Best entry for the same model, namespace, and embedder identity.
std::size_t max_entries() const
Capacity in entries passed at construction.
Definition semantic_cache.hpp:90
static float cosine_similarity(const std::vector< float > &a, const std::vector< float > &b)
void insert(const std::vector< float > &embedding, const std::string &model_id, std::vector< std::uint8_t > output, const std::string &cache_namespace={}, const std::string &embedder_id={}, const std::string &prompt={})
Definition checkpoint.hpp:12
Definition semantic_cache.hpp:20
virtual std::string identity() const =0
virtual ~EmbeddingProvider()=default
virtual std::size_t dimension() const =0
virtual std::vector< float > embed(const std::string &text) const =0
Embed text; the result must have dimension() elements.
Definition semantic_cache.hpp:31
std::int64_t last_access_ns
Definition semantic_cache.hpp:35
std::vector< float > embedding
Definition semantic_cache.hpp:32
std::vector< std::uint8_t > cached_output
Definition semantic_cache.hpp:33
std::string embedder_id
EmbeddingProvider::identity() of the embedder that produced embedding.
Definition semantic_cache.hpp:38
std::string prompt
Prompt text the entry was cached for, checked by the HitVerifier.
Definition semantic_cache.hpp:40
std::string model_id
Definition semantic_cache.hpp:34
std::string cache_namespace
Definition semantic_cache.hpp:36
Definition semantic_cache.hpp:59
float similarity
Definition semantic_cache.hpp:61
std::int32_t verifier_rejections
candidates the verifier turned down
Definition semantic_cache.hpp:64
bool above_threshold
true when an answer is served
Definition semantic_cache.hpp:62
std::string prompt
prompt of the served entry
Definition semantic_cache.hpp:63
std::vector< std::uint8_t > output
Definition semantic_cache.hpp:60