The knowledge base stores company policies, product guides, shipping information, and FAQs that the AI uses to provide accurate responses through the RAG system.
// Fetch all knowledge base entries (without embeddings)const items = await prisma.$queryRaw` SELECT id, content, metadata, "createdAt" FROM knowledge_base ORDER BY "createdAt" DESC`;
curl -X POST https://yourdomain.com/api/admin/knowledge \ -H "Authorization: Bearer YOUR_ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Política de Envíos Bogotá", "type": "Ciudad", "content": "Los envíos a Bogotá tienen un costo de $12.000 y se entregan en 1-2 días hábiles. Zonas cubiertas: Usaquén, Chapinero, Suba, Engativá. Envío gratis en compras superiores a $150.000." }'
Título: Política de EnvíosTipo: PolíticaTiempos de Entrega:- Bogotá: 1-2 días hábiles ($12.000)- Medellín: 2-3 días hábiles ($15.000)- Cali: 2-3 días hábiles ($14.000)- Otras ciudades principales: 3-5 días hábiles ($18.000)Envío Gratis:Compras superiores a $150.000 tienen envío gratis a cualquier ciudad principal.Contra Entrega:Disponible en Bogotá, Medellín y Cali con recargo de $5.000.
-- Most common search queries (add logging first)SELECT query, COUNT(*) as frequencyFROM search_logsGROUP BY queryORDER BY frequency DESCLIMIT 20;-- Documents never retrieved (low relevance)SELECT kb.id, kb.metadata->>'title' as titleFROM knowledge_base kbLEFT JOIN retrieval_logs rl ON kb.id = rl.document_idWHERE rl.id IS NULLAND kb."createdAt" < NOW() - INTERVAL '30 days';
// scripts/import-csv.jsimport { PrismaClient } from '@prisma/client';import fs from 'fs';import { parse } from 'csv-parse/sync';import { generateEmbedding } from '../backend/services/ai/Retriever.js';const prisma = new PrismaClient();async function importCSV(filePath) { const fileContent = fs.readFileSync(filePath, 'utf-8'); const records = parse(fileContent, { columns: true }); for (const record of records) { const embedding = await generateEmbedding(record.content); await prisma.knowledgeBase.create({ data: { content: record.content, metadata: { title: record.title, type: record.type || 'Documento' }, embedding } }); console.log(`✅ Imported: ${record.title}`); }}importCSV('./knowledge.csv');
CSV format:
title,type,content"Envíos Bogotá","Ciudad","Los envíos a Bogotá cuestan $12.000 y tardan 1-2 días.""Política Devoluciones","Política","Tienes 15 días para devolver productos sin abrir."