Skip to content

punkish/zcache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zcache

A zemantic, no-dependency, file-based cache

There are loads of wonderful, battle-tested caching modules. This is not one of them. But, if you want a no-dependency, file-based cache that can store both semantic and non-semantic queries, this one is for you. A really zimple, zemantic caching module. The only dependency is @huggingface/transformers using the Supabase/gte-small model for generating embeddings.

architecture

flow

Create a cache

import { Cache } from '@punkish/zcache';

const options = {
    dir: './cache',
    segment: 'default',
    ttl: 86400000
    similarityThreshold: 0.9
};

// Create a new cache with options
const cache = new Cache(options);

// Initialize the cache
await cache.init();

Cache a semantic query

const query1 = 'What is the speed of a swallow?';
const response1 = 500;
const isSemantic = true;
const res = await cache.set({ 
    query: query1, 
    response: response1, 
    isSemantic 
});
console.log(res);
// {
//     query: "What is the speed of a swallow?",
//     response: 500,
//     stored: <date>
//     ttl: 86400000
// }

Cache a non-semantic query

const query2 = 'Half of 1000';
const response2 = 500;
const res = await cache.set({ 
    query: query2, 
    response: response2 
});
console.log(res);
// {
//     query: "Half of 1000",
//     response: 500,
//     stored: <date>
//     ttl: 86400000
// }

Retrieve the values

const res1 = await cache.get({ query: query2 });
console.log(res1);
// {
//     query: "Half of 1000",
//     response: 500,
//     stored: <date>
//     ttl: 86400000
// }
const res2 = await cache.get({ query: query1, isSemantic });
console.log(res2);
// {
//     query: "What is the speed of a swallow?",
//     response: 500,
//     stored: <date>
//     ttl: 86400000
// }

Retrieve another semantic query

const query3 = 'How fast does the swallow fly?';
const res = await cache.get({ query: query3, isSemantic });
console.log(res);
// {
//     query: "What is the speed of a swallow?",
//     response: 500,
//     stored: <date>
//     ttl: 86400000
// }

About

A zimple file-based cache

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published