@aiconnect/easy-rag 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +181 -0
- package/dist/chunker/csv.d.ts +4 -0
- package/dist/chunker/csv.d.ts.map +1 -0
- package/dist/chunker/csv.js +10 -0
- package/dist/chunker/csv.js.map +1 -0
- package/dist/chunker/index.d.ts +5 -0
- package/dist/chunker/index.d.ts.map +1 -0
- package/dist/chunker/index.js +20 -0
- package/dist/chunker/index.js.map +1 -0
- package/dist/chunker/markdown.d.ts +4 -0
- package/dist/chunker/markdown.d.ts.map +1 -0
- package/dist/chunker/markdown.js +35 -0
- package/dist/chunker/markdown.js.map +1 -0
- package/dist/chunker/pdf.d.ts +4 -0
- package/dist/chunker/pdf.d.ts.map +1 -0
- package/dist/chunker/pdf.js +26 -0
- package/dist/chunker/pdf.js.map +1 -0
- package/dist/chunker/types.d.ts +12 -0
- package/dist/chunker/types.d.ts.map +1 -0
- package/dist/chunker/types.js +2 -0
- package/dist/chunker/types.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +120 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/serve.d.ts +2 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +17 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +66 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +5 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/embeddings/index.d.ts +3 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +2 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/openai.d.ts +2 -0
- package/dist/embeddings/openai.d.ts.map +1 -0
- package/dist/embeddings/openai.js +57 -0
- package/dist/embeddings/openai.js.map +1 -0
- package/dist/embeddings/types.d.ts +15 -0
- package/dist/embeddings/types.d.ts.map +1 -0
- package/dist/embeddings/types.js +2 -0
- package/dist/embeddings/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +248 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/index.d.ts +4 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +3 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/orchestrator.d.ts +3 -0
- package/dist/indexer/orchestrator.d.ts.map +1 -0
- package/dist/indexer/orchestrator.js +106 -0
- package/dist/indexer/orchestrator.js.map +1 -0
- package/dist/indexer/scanner.d.ts +2 -0
- package/dist/indexer/scanner.d.ts.map +1 -0
- package/dist/indexer/scanner.js +34 -0
- package/dist/indexer/scanner.js.map +1 -0
- package/dist/indexer/types.d.ts +12 -0
- package/dist/indexer/types.d.ts.map +1 -0
- package/dist/indexer/types.js +2 -0
- package/dist/indexer/types.js.map +1 -0
- package/dist/parsers/csv.d.ts +3 -0
- package/dist/parsers/csv.d.ts.map +1 -0
- package/dist/parsers/csv.js +63 -0
- package/dist/parsers/csv.js.map +1 -0
- package/dist/parsers/fileTypeDetector.d.ts +3 -0
- package/dist/parsers/fileTypeDetector.d.ts.map +1 -0
- package/dist/parsers/fileTypeDetector.js +16 -0
- package/dist/parsers/fileTypeDetector.js.map +1 -0
- package/dist/parsers/index.d.ts +3 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +18 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/markdown.d.ts +3 -0
- package/dist/parsers/markdown.d.ts.map +1 -0
- package/dist/parsers/markdown.js +30 -0
- package/dist/parsers/markdown.js.map +1 -0
- package/dist/parsers/pdf.d.ts +3 -0
- package/dist/parsers/pdf.d.ts.map +1 -0
- package/dist/parsers/pdf.js +22 -0
- package/dist/parsers/pdf.js.map +1 -0
- package/dist/parsers/types.d.ts +17 -0
- package/dist/parsers/types.d.ts.map +1 -0
- package/dist/parsers/types.js +2 -0
- package/dist/parsers/types.js.map +1 -0
- package/dist/query/embedding.d.ts +2 -0
- package/dist/query/embedding.d.ts.map +1 -0
- package/dist/query/embedding.js +6 -0
- package/dist/query/embedding.js.map +1 -0
- package/dist/query/index.d.ts +3 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +86 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/search.d.ts +6 -0
- package/dist/query/search.d.ts.map +1 -0
- package/dist/query/search.js +45 -0
- package/dist/query/search.js.map +1 -0
- package/dist/query/types.d.ts +19 -0
- package/dist/query/types.d.ts.map +1 -0
- package/dist/query/types.js +2 -0
- package/dist/query/types.js.map +1 -0
- package/dist/vector-store/chroma-server.d.ts +10 -0
- package/dist/vector-store/chroma-server.d.ts.map +1 -0
- package/dist/vector-store/chroma-server.js +102 -0
- package/dist/vector-store/chroma-server.js.map +1 -0
- package/dist/vector-store/chromadb.d.ts +8 -0
- package/dist/vector-store/chromadb.d.ts.map +1 -0
- package/dist/vector-store/chromadb.js +98 -0
- package/dist/vector-store/chromadb.js.map +1 -0
- package/dist/vector-store/index.d.ts +4 -0
- package/dist/vector-store/index.d.ts.map +1 -0
- package/dist/vector-store/index.js +3 -0
- package/dist/vector-store/index.js.map +1 -0
- package/dist/vector-store/types.d.ts +12 -0
- package/dist/vector-store/types.d.ts.map +1 -0
- package/dist/vector-store/types.js +2 -0
- package/dist/vector-store/types.js.map +1 -0
- package/dist/vector-store/utils.d.ts +2 -0
- package/dist/vector-store/utils.d.ts.map +1 -0
- package/dist/vector-store/utils.js +17 -0
- package/dist/vector-store/utils.js.map +1 -0
- package/package.json +57 -0
- package/skills/easy-rag/SKILL.md +198 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/embeddings/openai.ts"],"names":[],"mappings":"AAyBA,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CA2C7E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import { getOpenAIKey, getEmbeddingModel } from '../config/index.js';
|
|
3
|
+
const MAX_RETRIES = 3;
|
|
4
|
+
const INITIAL_RETRY_DELAY = 1000;
|
|
5
|
+
let openaiClient = null;
|
|
6
|
+
let cachedApiKey;
|
|
7
|
+
async function getClient() {
|
|
8
|
+
if (!openaiClient || cachedApiKey !== await getOpenAIKey()) {
|
|
9
|
+
cachedApiKey = await getOpenAIKey();
|
|
10
|
+
if (!cachedApiKey) {
|
|
11
|
+
throw new Error('OpenAI API key is required. Set it with "easy-rag init" or OPENAI_API_KEY environment variable.');
|
|
12
|
+
}
|
|
13
|
+
openaiClient = new OpenAI({ apiKey: cachedApiKey });
|
|
14
|
+
}
|
|
15
|
+
return openaiClient;
|
|
16
|
+
}
|
|
17
|
+
async function delay(ms) {
|
|
18
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
19
|
+
}
|
|
20
|
+
export async function generateEmbeddings(texts) {
|
|
21
|
+
const client = await getClient();
|
|
22
|
+
const model = await getEmbeddingModel();
|
|
23
|
+
let lastError = null;
|
|
24
|
+
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
25
|
+
try {
|
|
26
|
+
const response = await client.embeddings.create({
|
|
27
|
+
model,
|
|
28
|
+
input: texts,
|
|
29
|
+
});
|
|
30
|
+
return response.data
|
|
31
|
+
.sort((a, b) => a.index - b.index)
|
|
32
|
+
.map((item) => item.embedding);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
36
|
+
if (error instanceof Error && 'status' in error) {
|
|
37
|
+
const status = error.status;
|
|
38
|
+
if (status === 401) {
|
|
39
|
+
throw new Error('Invalid OPENAI_API_KEY. Please check your API key.');
|
|
40
|
+
}
|
|
41
|
+
if (status === 429 && attempt < MAX_RETRIES - 1) {
|
|
42
|
+
const retryDelay = INITIAL_RETRY_DELAY * Math.pow(2, attempt);
|
|
43
|
+
await delay(retryDelay);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (attempt < MAX_RETRIES - 1) {
|
|
48
|
+
const retryDelay = INITIAL_RETRY_DELAY * Math.pow(2, attempt);
|
|
49
|
+
await delay(retryDelay);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
throw lastError;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
throw lastError || new Error('Failed to generate embeddings');
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/embeddings/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface Embedding {
|
|
2
|
+
embedding: number[];
|
|
3
|
+
index: number;
|
|
4
|
+
object: string;
|
|
5
|
+
}
|
|
6
|
+
export interface EmbeddingResponse {
|
|
7
|
+
object: string;
|
|
8
|
+
data: Embedding[];
|
|
9
|
+
model: string;
|
|
10
|
+
usage: {
|
|
11
|
+
prompt_tokens: number;
|
|
12
|
+
total_tokens: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/embeddings/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/embeddings/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { parseDocument } from './parsers/index.js';
|
|
4
|
+
import { indexFolder } from './indexer/index.js';
|
|
5
|
+
import { executeQuery } from './query/index.js';
|
|
6
|
+
import { listCollections, deleteCollection, initializeChromaDB } from './vector-store/index.js';
|
|
7
|
+
import { ensureChromaRunning } from './vector-store/chroma-server.js';
|
|
8
|
+
import { init } from './commands/init.js';
|
|
9
|
+
import { serve } from './commands/serve.js';
|
|
10
|
+
import { getOpenAIKey } from './config/index.js';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import fs from 'fs/promises';
|
|
13
|
+
const program = new Command();
|
|
14
|
+
program
|
|
15
|
+
.name('easy-rag')
|
|
16
|
+
.description('A TypeScript CLI tool for local RAG indexing and querying')
|
|
17
|
+
.version('0.3.0');
|
|
18
|
+
program
|
|
19
|
+
.command('init')
|
|
20
|
+
.description('Initialize EasyRAG configuration (OpenAI API key and embedding model)')
|
|
21
|
+
.action(async () => {
|
|
22
|
+
try {
|
|
23
|
+
await init();
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (error instanceof Error) {
|
|
27
|
+
console.error(`Error: ${error.message}`);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
console.error('Error: Unknown error occurred');
|
|
31
|
+
}
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
program
|
|
36
|
+
.command('serve')
|
|
37
|
+
.description('Start the ChromaDB server and keep it running in the foreground')
|
|
38
|
+
.action(async () => {
|
|
39
|
+
try {
|
|
40
|
+
await serve();
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error instanceof Error) {
|
|
44
|
+
console.error(`Error: ${error.message}`);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.error('Error: Unknown error occurred');
|
|
48
|
+
}
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
program
|
|
53
|
+
.command('parse')
|
|
54
|
+
.description('Parse a document file (PDF, Markdown, CSV) and extract text with metadata')
|
|
55
|
+
.argument('<filePath>', 'Path to the document file')
|
|
56
|
+
.action(async (filePath) => {
|
|
57
|
+
try {
|
|
58
|
+
await fs.access(filePath);
|
|
59
|
+
const result = await parseDocument(filePath);
|
|
60
|
+
if (Array.isArray(result)) {
|
|
61
|
+
console.log(`\nParsed ${result.length} documents from ${path.basename(filePath)}:\n`);
|
|
62
|
+
result.forEach((doc, index) => {
|
|
63
|
+
console.log(`--- Document ${index + 1} ---`);
|
|
64
|
+
console.log(`Row Number: ${doc.metadata.rowNumber}`);
|
|
65
|
+
console.log(`Source: ${doc.metadata.sourcePath}`);
|
|
66
|
+
console.log(`Content Type: ${doc.metadata.contentType}`);
|
|
67
|
+
console.log(`\nContent:\n${doc.content}\n`);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
console.log(`\nParsed document from ${path.basename(filePath)}:\n`);
|
|
72
|
+
console.log(`Source: ${result.metadata.sourcePath}`);
|
|
73
|
+
console.log(`Content Type: ${result.metadata.contentType}`);
|
|
74
|
+
if (result.metadata.sections) {
|
|
75
|
+
console.log(`Sections: ${result.metadata.sections.join(', ')}`);
|
|
76
|
+
}
|
|
77
|
+
console.log(`\nContent:\n${result.content}\n`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (error instanceof Error) {
|
|
82
|
+
console.error(`Error: ${error.message}`);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.error('Error: Unknown error occurred');
|
|
86
|
+
}
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
program
|
|
91
|
+
.command('index')
|
|
92
|
+
.description('Index documents from a folder into ChromaDB for RAG queries')
|
|
93
|
+
.argument('<folder>', 'Path to the folder containing documents to index')
|
|
94
|
+
.action(async (folder) => {
|
|
95
|
+
const apiKey = await getOpenAIKey();
|
|
96
|
+
if (!apiKey) {
|
|
97
|
+
console.error('Error: OpenAI API key is required');
|
|
98
|
+
console.error('\nTo set your API key:');
|
|
99
|
+
console.error(' 1. Run: easy-rag init');
|
|
100
|
+
console.error(' 2. Set environment variable:');
|
|
101
|
+
console.error(' export OPENAI_API_KEY=your-api-key-here');
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
const folderPath = path.resolve(folder);
|
|
105
|
+
try {
|
|
106
|
+
await fs.access(folderPath);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
console.error(`Error: Folder not found: ${folder}`);
|
|
110
|
+
console.error(`\nPlease check the path and try again.`);
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
if (!await ensureChromaRunning()) {
|
|
114
|
+
console.error('Error: ChromaDB is required for indexing.');
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
const result = await indexFolder(folderPath);
|
|
118
|
+
if (!result.success) {
|
|
119
|
+
console.error('\nIndexing failed.');
|
|
120
|
+
if (result.stats.errors.length > 0) {
|
|
121
|
+
console.error('\nErrors:');
|
|
122
|
+
result.stats.errors.forEach((err) => console.error(` - ${err}`));
|
|
123
|
+
}
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
program
|
|
128
|
+
.command('query')
|
|
129
|
+
.description('Query indexed documents using vector similarity search')
|
|
130
|
+
.argument('<question>', 'Question to search for in indexed documents')
|
|
131
|
+
.option('-t, --top <number>', 'Number of results to return', '5')
|
|
132
|
+
.option('-m, --metadata', 'Include metadata in results (source, score, chunk index)')
|
|
133
|
+
.option('-c, --collection <name>', 'Search in a specific collection (default: all collections)')
|
|
134
|
+
.action(async (question, options) => {
|
|
135
|
+
const apiKey = await getOpenAIKey();
|
|
136
|
+
if (!apiKey) {
|
|
137
|
+
console.error('Error: OpenAI API key is required');
|
|
138
|
+
console.error('\nTo set your API key:');
|
|
139
|
+
console.error(' 1. Run: easy-rag init');
|
|
140
|
+
console.error(' 2. Set environment variable:');
|
|
141
|
+
console.error(' export OPENAI_API_KEY=your-api-key-here');
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
const top = parseInt(options.top, 10);
|
|
145
|
+
if (isNaN(top) || top <= 0) {
|
|
146
|
+
console.error('Error: --top must be a positive number');
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
const queryOptions = {
|
|
150
|
+
top,
|
|
151
|
+
includeMetadata: !!options.metadata,
|
|
152
|
+
collection: options.collection,
|
|
153
|
+
};
|
|
154
|
+
if (!await ensureChromaRunning()) {
|
|
155
|
+
console.error('Error: ChromaDB is required for querying.');
|
|
156
|
+
process.exit(1);
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
await executeQuery(question, queryOptions);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
if (error instanceof Error) {
|
|
163
|
+
console.error(`Error: ${error.message}`);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
console.error('Error: Unknown error occurred');
|
|
167
|
+
}
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
program
|
|
172
|
+
.command('collections')
|
|
173
|
+
.description('List all ChromaDB collections with document counts')
|
|
174
|
+
.action(async () => {
|
|
175
|
+
if (!await ensureChromaRunning()) {
|
|
176
|
+
console.error('Error: ChromaDB is required to list collections.');
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
await initializeChromaDB();
|
|
181
|
+
const collections = await listCollections();
|
|
182
|
+
if (collections.length === 0) {
|
|
183
|
+
console.log('No collections found.');
|
|
184
|
+
process.exit(0);
|
|
185
|
+
}
|
|
186
|
+
console.log('\nCollections:');
|
|
187
|
+
console.log('─'.repeat(50));
|
|
188
|
+
for (const collection of collections) {
|
|
189
|
+
console.log(`${collection.name.padEnd(30)} ${collection.count} documents`);
|
|
190
|
+
}
|
|
191
|
+
console.log('─'.repeat(50));
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
if (error instanceof Error) {
|
|
195
|
+
console.error(`Error: ${error.message}`);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.error('Error: Failed to list collections');
|
|
199
|
+
}
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
program
|
|
204
|
+
.command('delete')
|
|
205
|
+
.description('Delete a ChromaDB collection')
|
|
206
|
+
.argument('<collectionName>', 'Name of the collection to delete')
|
|
207
|
+
.option('-f, --force', 'Skip confirmation prompt')
|
|
208
|
+
.action(async (collectionName, options) => {
|
|
209
|
+
if (!await ensureChromaRunning()) {
|
|
210
|
+
console.error('Error: ChromaDB is required to delete collections.');
|
|
211
|
+
process.exit(1);
|
|
212
|
+
}
|
|
213
|
+
try {
|
|
214
|
+
await initializeChromaDB();
|
|
215
|
+
const collections = await listCollections();
|
|
216
|
+
const collectionExists = collections.some(c => c.name === collectionName);
|
|
217
|
+
if (!collectionExists) {
|
|
218
|
+
console.error(`Error: Collection '${collectionName}' not found`);
|
|
219
|
+
process.exit(1);
|
|
220
|
+
}
|
|
221
|
+
if (!options.force) {
|
|
222
|
+
const readline = await import('node:readline/promises');
|
|
223
|
+
const rl = readline.createInterface({
|
|
224
|
+
input: process.stdin,
|
|
225
|
+
output: process.stdout,
|
|
226
|
+
});
|
|
227
|
+
const answer = await rl.question(`Are you sure you want to delete collection '${collectionName}'? (y/N): `);
|
|
228
|
+
rl.close();
|
|
229
|
+
if (answer.toLowerCase() !== 'y') {
|
|
230
|
+
console.log('Deletion cancelled.');
|
|
231
|
+
process.exit(0);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
await deleteCollection(collectionName);
|
|
235
|
+
console.log(`Collection '${collectionName}' deleted successfully.`);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
if (error instanceof Error) {
|
|
239
|
+
console.error(`Error: ${error.message}`);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
console.error('Error: Failed to delete collection');
|
|
243
|
+
}
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
program.parse();
|
|
248
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/indexer/orchestrator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAU1D,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA6G1E"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { scanFolder } from './scanner.js';
|
|
2
|
+
import { parseDocument } from '../parsers/index.js';
|
|
3
|
+
import { chunkDocument } from '../chunker/index.js';
|
|
4
|
+
import { generateEmbeddings } from '../embeddings/index.js';
|
|
5
|
+
import { getOrCreateCollection, storeEmbeddings, initializeChromaDB } from '../vector-store/index.js';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import crypto from 'crypto';
|
|
8
|
+
import fs from 'fs/promises';
|
|
9
|
+
export async function indexFolder(folderPath) {
|
|
10
|
+
const stats = {
|
|
11
|
+
filesProcessed: 0,
|
|
12
|
+
filesSkipped: 0,
|
|
13
|
+
chunksIndexed: 0,
|
|
14
|
+
errors: [],
|
|
15
|
+
};
|
|
16
|
+
try {
|
|
17
|
+
await fs.access(folderPath);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return {
|
|
21
|
+
success: false,
|
|
22
|
+
stats,
|
|
23
|
+
collectionName: '',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const folderName = path.basename(folderPath);
|
|
27
|
+
try {
|
|
28
|
+
await initializeChromaDB();
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
stats.errors.push(error instanceof Error ? error.message : String(error));
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
stats,
|
|
35
|
+
collectionName: '',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
let collection;
|
|
39
|
+
try {
|
|
40
|
+
collection = await getOrCreateCollection(folderName);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
stats.errors.push(error instanceof Error ? error.message : String(error));
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
stats,
|
|
47
|
+
collectionName: '',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const files = await scanFolder(folderPath);
|
|
51
|
+
if (files.length === 0) {
|
|
52
|
+
console.log('No supported files found in the folder.');
|
|
53
|
+
return {
|
|
54
|
+
success: true,
|
|
55
|
+
stats,
|
|
56
|
+
collectionName: folderName,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
console.log(`Found ${files.length} supported file(s).`);
|
|
60
|
+
for (let i = 0; i < files.length; i++) {
|
|
61
|
+
const filePath = files[i];
|
|
62
|
+
const fileName = path.basename(filePath);
|
|
63
|
+
console.log(`\n[${i + 1}/${files.length}] Processing: ${fileName}`);
|
|
64
|
+
try {
|
|
65
|
+
const parsed = await parseDocument(filePath);
|
|
66
|
+
const chunks = chunkDocument(parsed);
|
|
67
|
+
if (chunks.length === 0) {
|
|
68
|
+
console.warn(` Warning: No chunks generated from ${fileName}`);
|
|
69
|
+
stats.filesSkipped++;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const texts = chunks.map((c) => c.content);
|
|
73
|
+
const embeddings = await generateEmbeddings(texts);
|
|
74
|
+
const vectorChunks = chunks.map((chunk, idx) => ({
|
|
75
|
+
id: crypto.createHash('md5').update(`${filePath}:${idx}`).digest('hex'),
|
|
76
|
+
embedding: embeddings[idx],
|
|
77
|
+
metadata: chunk.metadata,
|
|
78
|
+
content: chunk.content,
|
|
79
|
+
}));
|
|
80
|
+
await storeEmbeddings(collection, vectorChunks);
|
|
81
|
+
stats.filesProcessed++;
|
|
82
|
+
stats.chunksIndexed += chunks.length;
|
|
83
|
+
console.log(` Indexed ${chunks.length} chunk(s)`);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
87
|
+
console.warn(` Warning: Failed to process ${fileName}: ${errorMessage}`);
|
|
88
|
+
stats.errors.push(`${filePath}: ${errorMessage}`);
|
|
89
|
+
stats.filesSkipped++;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
console.log(`\nIndexing complete!`);
|
|
93
|
+
console.log(`Files processed: ${stats.filesProcessed}`);
|
|
94
|
+
console.log(`Files skipped: ${stats.filesSkipped}`);
|
|
95
|
+
console.log(`Total chunks indexed: ${stats.chunksIndexed}`);
|
|
96
|
+
console.log(`Collection: ${folderName}`);
|
|
97
|
+
if (stats.errors.length > 0) {
|
|
98
|
+
console.log(`\nErrors encountered: ${stats.errors.length}`);
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
success: true,
|
|
102
|
+
stats,
|
|
103
|
+
collectionName: folderName,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/indexer/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/indexer/scanner.ts"],"names":[],"mappings":"AAKA,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BtE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
const SUPPORTED_EXTENSIONS = ['.pdf', '.md', '.csv'];
|
|
4
|
+
export async function scanFolder(folderPath) {
|
|
5
|
+
const files = [];
|
|
6
|
+
async function scan(currentPath) {
|
|
7
|
+
try {
|
|
8
|
+
const entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
9
|
+
for (const entry of entries) {
|
|
10
|
+
const fullPath = path.join(currentPath, entry.name);
|
|
11
|
+
if (entry.isDirectory()) {
|
|
12
|
+
await scan(fullPath);
|
|
13
|
+
}
|
|
14
|
+
else if (entry.isFile()) {
|
|
15
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
16
|
+
if (SUPPORTED_EXTENSIONS.includes(ext)) {
|
|
17
|
+
files.push(fullPath);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof Error && 'code' in error && error.code === 'EACCES') {
|
|
24
|
+
console.warn(`Warning: Skipping directory due to permission error: ${currentPath}`);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
await scan(folderPath);
|
|
32
|
+
return files;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/indexer/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,UAAU,IAAI,CAAC,WAAmB;QACrC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEpD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBACnD,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBACvC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAK,KAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClF,OAAO,CAAC,IAAI,CAAC,wDAAwD,WAAW,EAAE,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface IndexStats {
|
|
2
|
+
filesProcessed: number;
|
|
3
|
+
filesSkipped: number;
|
|
4
|
+
chunksIndexed: number;
|
|
5
|
+
errors: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface IndexResult {
|
|
8
|
+
success: boolean;
|
|
9
|
+
stats: IndexStats;
|
|
10
|
+
collectionName: string;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../src/parsers/csv.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAuCvE"}
|