import { readFileSync } from "fs"; import { OpenAI } from "openai"; import sqlite3 from "sqlite3"; import { open } from "sqlite"; import dotenv from "dotenv"; import { fileURLToPath } from 'url'; import path from 'path'; // --- Basic file init --- const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const rootPath = path.resolve(__dirname, "../.."); const env = process.env.NODE_ENV?.trim() || "development"; dotenv.config({ path: path.resolve(rootPath, `.env.${env}`) }); const faqPath = path.resolve(rootPath, "backend", "data", "faqs.json"); const faqs = JSON.parse(readFileSync(faqPath, "utf8")); const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); const dbPath = path.resolve(rootPath, "user_profile.db"); const db = await open({ filename: dbPath, driver: sqlite3.Database }); for (const { q, a } of faqs) { const { data } = await openai.embeddings.create({ model: "text-embedding-3-small", input: q }); const buf = Buffer.from(new Float32Array(data[0].embedding).buffer); await db.run( `INSERT INTO faq_embeddings (question,answer,embedding) VALUES (?,?,?)`, [q, a, buf] ); } console.log("Seeded FAQ embeddings");