A semantic preference store for AI applications. Store key-value preferences with natural language content and retrieve them by semantic similarity.
- Semantic retrieval — Find preferences by meaning, not just exact keys
- Key routing — Known keys (e.g.
theme,packageManager) get exact matches first - SQLite storage — Persistent storage with optional lazy loading
- AI SDK embeddings — Uses any AI SDK–compatible embedding model
bun add zenpreference @openrouter/ai-sdk-providerimport { createOpenRouter } from "@openrouter/ai-sdk-provider";
import { PreferenceStore } from "zenpreference";
const openrouter = createOpenRouter({ apiKey: process.env.OPENROUTER_API_KEY! });
const embeddingModel = openrouter.textEmbeddingModel("openai/text-embedding-3-small");
const store = new PreferenceStore({
embeddingModel,
filePath: "./.preferences.db",
knownKeys: ["theme", "packageManager", "language", "framework"],
});
await store.add({
key: "theme",
value: "dark",
content: "User prefers dark mode for all applications",
});
const prefs = await store.getRelevant("user's color scheme preference");PreferenceStore— Main store classadd(preference)— Store a preferencegetByKey(key)— Get by exact keygetRelevant(query)— Semantic search over preferences
MIT