@vivantel/rag-core 2.0.0 → 2.1.1
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/README.md +46 -26
- package/dist/cli/init.d.ts +7 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +95 -58
- package/dist/cli/init.js.map +1 -1
- package/dist/helpers/create-chunker.d.ts +13 -4
- package/dist/helpers/create-chunker.d.ts.map +1 -1
- package/dist/helpers/create-chunker.js +13 -2
- package/dist/helpers/create-chunker.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,34 +15,54 @@ npm install @vivantel/rag-core
|
|
|
15
15
|
|
|
16
16
|
## Quick Start
|
|
17
17
|
|
|
18
|
-
### 1.
|
|
18
|
+
### 1. Generate a config (recommended)
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
rag-update init
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Scans your project for known file types and generates a `rag.config.ts` with the right strategy per pattern. You then fill in your embedding provider and vector store.
|
|
25
|
+
|
|
26
|
+
### 2. Or write a config manually (`rag.config.ts`)
|
|
19
27
|
|
|
20
28
|
```typescript
|
|
21
|
-
import {
|
|
22
|
-
|
|
29
|
+
import {
|
|
30
|
+
RAGPipelineConfig,
|
|
31
|
+
createChunker,
|
|
32
|
+
markdownHeadersStrategy,
|
|
33
|
+
tokenStrategy,
|
|
34
|
+
} from '@vivantel/rag-core';
|
|
23
35
|
|
|
24
|
-
|
|
36
|
+
const config: RAGPipelineConfig = {
|
|
25
37
|
chunkers: [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return [{
|
|
31
|
-
content,
|
|
32
|
-
metadata: { type: 'doc', file: filePath },
|
|
33
|
-
sourceFile: filePath,
|
|
34
|
-
commitHash
|
|
35
|
-
}];
|
|
36
|
-
}
|
|
37
|
-
})
|
|
38
|
+
// Different directories can use different strategies
|
|
39
|
+
createChunker({ patterns: ['docs/**/*.md'], strategy: markdownHeadersStrategy() }),
|
|
40
|
+
createChunker({ patterns: ['rules/**/*.md'], strategy: wholeFileStrategy() }),
|
|
41
|
+
createChunker({ patterns: ['src/**/*.ts', 'src/**/*.tsx'], strategy: tokenStrategy() }),
|
|
38
42
|
],
|
|
39
|
-
|
|
40
43
|
embedder: new MyEmbedderProvider({ apiKey: process.env.API_KEY }),
|
|
41
|
-
vectorStore: new MyVectorStore({ url: process.env.DB_URL })
|
|
42
|
-
}
|
|
44
|
+
vectorStore: new MyVectorStore({ url: process.env.DB_URL }),
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default config;
|
|
43
48
|
```
|
|
44
49
|
|
|
45
|
-
|
|
50
|
+
For custom chunking logic, use the `process` callback instead of `strategy`:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
createChunker({
|
|
54
|
+
name: 'custom',
|
|
55
|
+
patterns: ['**/*.txt'],
|
|
56
|
+
process: async (content, filePath, commitHash) => [{
|
|
57
|
+
content,
|
|
58
|
+
metadata: { file: filePath },
|
|
59
|
+
sourceFile: filePath,
|
|
60
|
+
commitHash,
|
|
61
|
+
}],
|
|
62
|
+
})
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 3. Run the pipeline
|
|
46
66
|
|
|
47
67
|
```bash
|
|
48
68
|
rag-update --config rag.config.ts
|
|
@@ -50,12 +70,12 @@ rag-update --config rag.config.ts
|
|
|
50
70
|
|
|
51
71
|
## Built-in Strategies
|
|
52
72
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
73
|
+
| Factory | Best for |
|
|
74
|
+
|---------|----------|
|
|
75
|
+
| `tokenStrategy({ maxTokens?, overlap? })` | Source code, structured text |
|
|
76
|
+
| `markdownHeadersStrategy()` | Markdown documentation |
|
|
77
|
+
| `semanticStrategy()` | Prose, articles |
|
|
78
|
+
| `wholeFileStrategy()` | Small configs, rule files, YAML |
|
|
59
79
|
|
|
60
80
|
## License
|
|
61
81
|
|
package/dist/cli/init.d.ts
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
interface ExtGroup {
|
|
2
|
+
exts: string[];
|
|
3
|
+
strategyFn: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function detectFileExtensions(cwd: string): Promise<ExtGroup[]>;
|
|
1
7
|
export declare function runInit(): Promise<void>;
|
|
8
|
+
export {};
|
|
2
9
|
//# sourceMappingURL=init.d.ts.map
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAMA,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAoDD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAI3E;AAsLD,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAsF7C"}
|
package/dist/cli/init.js
CHANGED
|
@@ -1,28 +1,60 @@
|
|
|
1
1
|
import { checkbox, select, input } from "@inquirer/prompts";
|
|
2
2
|
import { writeFile } from "fs/promises";
|
|
3
3
|
import { existsSync } from "fs";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { readdir } from "fs/promises";
|
|
5
|
+
import { join, extname } from "path";
|
|
6
|
+
const EXT_GROUPS = [
|
|
7
|
+
{
|
|
8
|
+
exts: [".md", ".mdx"],
|
|
9
|
+
strategyFn: "markdownHeadersStrategy",
|
|
10
|
+
name: "markdown",
|
|
9
11
|
},
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
},
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
{ exts: [".ts", ".tsx"], strategyFn: "tokenStrategy", name: "typescript" },
|
|
13
|
+
{ exts: [".js", ".jsx"], strategyFn: "tokenStrategy", name: "javascript" },
|
|
14
|
+
{ exts: [".py"], strategyFn: "tokenStrategy", name: "python" },
|
|
15
|
+
{ exts: [".go"], strategyFn: "tokenStrategy", name: "go" },
|
|
16
|
+
{ exts: [".cs"], strategyFn: "tokenStrategy", name: "csharp" },
|
|
17
|
+
{ exts: [".java"], strategyFn: "tokenStrategy", name: "java" },
|
|
18
|
+
{ exts: [".yaml", ".yml"], strategyFn: "wholeFileStrategy", name: "yaml" },
|
|
19
|
+
{ exts: [".txt"], strategyFn: "semanticStrategy", name: "text" },
|
|
20
|
+
];
|
|
21
|
+
const IGNORED_DIRS = new Set([
|
|
22
|
+
"node_modules",
|
|
23
|
+
".git",
|
|
24
|
+
"dist",
|
|
25
|
+
"build",
|
|
26
|
+
"coverage",
|
|
27
|
+
".cache",
|
|
28
|
+
".next",
|
|
29
|
+
"out",
|
|
30
|
+
".turbo",
|
|
31
|
+
]);
|
|
32
|
+
async function collectExtensions(dir, found) {
|
|
33
|
+
let entries;
|
|
34
|
+
try {
|
|
35
|
+
entries = await readdir(dir, { withFileTypes: true });
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
for (const entry of entries) {
|
|
41
|
+
if (entry.isDirectory()) {
|
|
42
|
+
if (!IGNORED_DIRS.has(entry.name)) {
|
|
43
|
+
await collectExtensions(join(dir, entry.name), found);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const ext = extname(entry.name).toLowerCase();
|
|
48
|
+
if (ext)
|
|
49
|
+
found.add(ext);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export async function detectFileExtensions(cwd) {
|
|
54
|
+
const found = new Set();
|
|
55
|
+
await collectExtensions(cwd, found);
|
|
56
|
+
return EXT_GROUPS.filter((g) => g.exts.some((e) => found.has(e)));
|
|
57
|
+
}
|
|
26
58
|
function buildEmbedderSection(provider) {
|
|
27
59
|
switch (provider) {
|
|
28
60
|
case "openai":
|
|
@@ -144,38 +176,27 @@ const vectorStore: VectorStore = {
|
|
|
144
176
|
};`;
|
|
145
177
|
}
|
|
146
178
|
}
|
|
147
|
-
function buildChunkersSection(
|
|
148
|
-
if (
|
|
149
|
-
|
|
179
|
+
function buildChunkersSection(groups) {
|
|
180
|
+
if (groups.length === 0) {
|
|
181
|
+
groups = [EXT_GROUPS.find((g) => g.name === "typescript")];
|
|
150
182
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const patterns = JSON.stringify(
|
|
154
|
-
return ` createChunker({
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
process: async (content) => ${info.fn}()(content),
|
|
158
|
-
}),`;
|
|
159
|
-
});
|
|
160
|
-
return entries.join("\n");
|
|
183
|
+
return groups
|
|
184
|
+
.map((g) => {
|
|
185
|
+
const patterns = JSON.stringify(g.exts.map((e) => `**/*${e}`));
|
|
186
|
+
return ` createChunker({ patterns: ${patterns}, strategy: ${g.strategyFn}() }),`;
|
|
187
|
+
})
|
|
188
|
+
.join("\n");
|
|
161
189
|
}
|
|
162
190
|
function generateConfig(answers) {
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
];
|
|
167
|
-
const imports = [
|
|
168
|
-
"RAGPipelineConfig",
|
|
169
|
-
"EmbeddingProvider",
|
|
170
|
-
"VectorStore",
|
|
171
|
-
"VectorSearchResult",
|
|
172
|
-
"createChunker",
|
|
173
|
-
...strategyFns,
|
|
174
|
-
].join(", ");
|
|
191
|
+
const strategyFns = [...new Set(answers.groups.map((g) => g.strategyFn))];
|
|
192
|
+
if (strategyFns.length === 0)
|
|
193
|
+
strategyFns.push("tokenStrategy");
|
|
194
|
+
const valueImports = ["createChunker", ...strategyFns].join(", ");
|
|
175
195
|
const embedderSection = buildEmbedderSection(answers.embedder);
|
|
176
196
|
const vectorStoreSection = buildVectorStoreSection(answers.vectorStore);
|
|
177
|
-
const chunkersSection = buildChunkersSection(
|
|
178
|
-
return `import
|
|
197
|
+
const chunkersSection = buildChunkersSection(answers.groups);
|
|
198
|
+
return `import type { RAGPipelineConfig, EmbeddingProvider, VectorStore, VectorSearchResult } from '@vivantel/rag-core';
|
|
199
|
+
import { ${valueImports} } from '@vivantel/rag-core';
|
|
179
200
|
|
|
180
201
|
${embedderSection}
|
|
181
202
|
|
|
@@ -198,15 +219,31 @@ export default config;
|
|
|
198
219
|
}
|
|
199
220
|
export async function runInit() {
|
|
200
221
|
console.log("\n🚀 RAG Config Generator\n");
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
222
|
+
console.log("Scanning project for file types...");
|
|
223
|
+
const detectedGroups = await detectFileExtensions(process.cwd());
|
|
224
|
+
let selectedGroups;
|
|
225
|
+
if (detectedGroups.length > 0) {
|
|
226
|
+
const confirmed = await checkbox({
|
|
227
|
+
message: "Detected file types — select which to index:",
|
|
228
|
+
choices: detectedGroups.map((g) => ({
|
|
229
|
+
name: `${g.name} (${g.exts.join(", ")}) → ${g.strategyFn}`,
|
|
230
|
+
value: g,
|
|
231
|
+
checked: true,
|
|
232
|
+
})),
|
|
233
|
+
});
|
|
234
|
+
selectedGroups = confirmed;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
console.log("No known file types detected. Choose strategies manually:");
|
|
238
|
+
const strategyNames = await checkbox({
|
|
239
|
+
message: "Which chunking strategies do you need?",
|
|
240
|
+
choices: EXT_GROUPS.map((g) => ({
|
|
241
|
+
name: `${g.name} (${g.strategyFn})`,
|
|
242
|
+
value: g,
|
|
243
|
+
})),
|
|
244
|
+
});
|
|
245
|
+
selectedGroups = strategyNames;
|
|
246
|
+
}
|
|
210
247
|
const embedder = await select({
|
|
211
248
|
message: "Which embedding provider?",
|
|
212
249
|
choices: [
|
|
@@ -247,7 +284,7 @@ export async function runInit() {
|
|
|
247
284
|
}
|
|
248
285
|
}
|
|
249
286
|
const config = generateConfig({
|
|
250
|
-
|
|
287
|
+
groups: selectedGroups,
|
|
251
288
|
embedder,
|
|
252
289
|
vectorStore,
|
|
253
290
|
outputPath,
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import { FileChunker, Chunk } from "../interfaces/index.js";
|
|
2
|
-
|
|
1
|
+
import { FileChunker, ChunkStrategy, Chunk } from "../interfaces/index.js";
|
|
2
|
+
type WithStrategy = {
|
|
3
|
+
strategy: ChunkStrategy;
|
|
4
|
+
process?: never;
|
|
5
|
+
name?: string;
|
|
6
|
+
};
|
|
7
|
+
type WithProcess = {
|
|
8
|
+
process: (content: string, filePath: string, commitHash: string) => Promise<Chunk[]>;
|
|
9
|
+
strategy?: never;
|
|
3
10
|
name: string;
|
|
11
|
+
};
|
|
12
|
+
export type CreateChunkerOptions = {
|
|
4
13
|
patterns: string[];
|
|
5
|
-
process: (content: string, filePath: string, commitHash: string) => Promise<Chunk[]>;
|
|
6
14
|
canProcess?: (filePath: string, content?: string) => Promise<boolean>;
|
|
7
|
-
}
|
|
15
|
+
} & (WithStrategy | WithProcess);
|
|
8
16
|
export declare function createChunker(options: CreateChunkerOptions): FileChunker;
|
|
17
|
+
export {};
|
|
9
18
|
//# sourceMappingURL=create-chunker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-chunker.d.ts","sourceRoot":"","sources":["../../src/helpers/create-chunker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-chunker.d.ts","sourceRoot":"","sources":["../../src/helpers/create-chunker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE3E,KAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,CACP,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvE,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC;AAEjC,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,WAAW,CA0CxE"}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
export function createChunker(options) {
|
|
2
|
+
let name;
|
|
3
|
+
let processContent;
|
|
4
|
+
if (options.strategy != null) {
|
|
5
|
+
name = options.name ?? `${options.strategy.name}:${options.patterns[0]}`;
|
|
6
|
+
const strategy = options.strategy;
|
|
7
|
+
processContent = (content, filePath) => strategy.chunk(content, filePath);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
name = options.name;
|
|
11
|
+
processContent = options.process;
|
|
12
|
+
}
|
|
2
13
|
return {
|
|
3
|
-
name
|
|
14
|
+
name,
|
|
4
15
|
patterns: options.patterns,
|
|
5
16
|
async chunk(filePath, commitHash) {
|
|
6
17
|
const { readFile } = await import("fs/promises");
|
|
@@ -11,7 +22,7 @@ export function createChunker(options) {
|
|
|
11
22
|
return [];
|
|
12
23
|
}
|
|
13
24
|
}
|
|
14
|
-
return
|
|
25
|
+
return processContent(content, filePath, commitHash);
|
|
15
26
|
},
|
|
16
27
|
async canProcess(filePath, content) {
|
|
17
28
|
if (options.canProcess) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-chunker.js","sourceRoot":"","sources":["../../src/helpers/create-chunker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-chunker.js","sourceRoot":"","sources":["../../src/helpers/create-chunker.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,IAAI,IAAY,CAAC;IACjB,IAAI,cAIiB,CAAC;IAEtB,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,cAAc,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACpB,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAE1B,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,UAAkB;YAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAElD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,OAAgB;YACjD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
|