import { readFileSync, writeFileSync, existsSync } from 'node:fs'; import { config } from './config.js'; import { cosine } from './embeddings.js'; // Vetor store simples em arquivo JSON: { items: [{ id, text, source, vector }] } export function load() { if (!existsSync(config.storePath)) return { items: [] }; return JSON.parse(readFileSync(config.storePath, 'utf8')); } export function save(store) { writeFileSync(config.storePath, JSON.stringify(store)); } export function search(store, queryVector, k = config.topK) { return store.items .map((it) => ({ ...it, score: cosine(queryVector, it.vector) })) .sort((a, b) => b.score - a.score) .slice(0, k); }