vexify
Version:
Portable vector database with in-process ONNX embeddings. Zero-config semantic search via SQLite. No external servers required.
43 lines (35 loc) • 980 B
JavaScript
;
const fs = require('fs');
const Papa = require('papaparse');
const { BaseProcessor } = require('./base');
class CsvProcessor extends BaseProcessor {
static get extensions() {
return ['.csv'];
}
processContent(csvContent, filePath) {
const parsed = Papa.parse(csvContent, {
header: true,
skipEmptyLines: true,
dynamicTyping: true
});
if (parsed.errors.length > 0) {
throw new Error(`CSV parse error: ${parsed.errors[0].message}`);
}
return parsed.data.map((row, index) => {
const text = Object.entries(row)
.map(([key, value]) => `${key}: ${value}`)
.join('\n');
return {
id: this.generateDocumentId(filePath, index),
content: text,
metadata: this.createMetadata(filePath, {
type: 'csv',
rowIndex: index,
rowData: row,
columns: Object.keys(row)
})
};
});
}
}
module.exports = { CsvProcessor };