@cogitator-ai/rag 0.1.0 → 0.1.3
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/dist/chunkers/create-chunker.d.ts +3 -0
- package/dist/chunkers/create-chunker.d.ts.map +1 -0
- package/dist/chunkers/create-chunker.js +28 -0
- package/dist/chunkers/create-chunker.js.map +1 -0
- package/dist/chunkers/fixed-chunker.d.ts +12 -0
- package/dist/chunkers/fixed-chunker.d.ts.map +1 -0
- package/dist/chunkers/fixed-chunker.js +31 -0
- package/dist/chunkers/fixed-chunker.js.map +1 -0
- package/dist/chunkers/index.d.ts +5 -0
- package/dist/chunkers/index.d.ts.map +1 -0
- package/dist/chunkers/index.js +5 -0
- package/dist/chunkers/index.js.map +1 -0
- package/dist/chunkers/recursive-chunker.d.ts +18 -0
- package/dist/chunkers/recursive-chunker.d.ts.map +1 -0
- package/dist/chunkers/recursive-chunker.js +152 -0
- package/dist/chunkers/recursive-chunker.js.map +1 -0
- package/dist/chunkers/semantic-chunker.d.ts +19 -0
- package/dist/chunkers/semantic-chunker.d.ts.map +1 -0
- package/dist/chunkers/semantic-chunker.js +175 -0
- package/dist/chunkers/semantic-chunker.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/loaders/csv-loader.d.ts +16 -0
- package/dist/loaders/csv-loader.d.ts.map +1 -0
- package/dist/loaders/csv-loader.js +57 -0
- package/dist/loaders/csv-loader.js.map +1 -0
- package/dist/loaders/html-loader.d.ts +12 -0
- package/dist/loaders/html-loader.d.ts.map +1 -0
- package/dist/loaders/html-loader.js +40 -0
- package/dist/loaders/html-loader.js.map +1 -0
- package/dist/loaders/index.d.ts +14 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +8 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/loaders/json-loader.d.ts +16 -0
- package/dist/loaders/json-loader.d.ts.map +1 -0
- package/dist/loaders/json-loader.js +55 -0
- package/dist/loaders/json-loader.js.map +1 -0
- package/dist/loaders/markdown-loader.d.ts +14 -0
- package/dist/loaders/markdown-loader.d.ts.map +1 -0
- package/dist/loaders/markdown-loader.js +65 -0
- package/dist/loaders/markdown-loader.js.map +1 -0
- package/dist/loaders/pdf-loader.d.ts +14 -0
- package/dist/loaders/pdf-loader.d.ts.map +1 -0
- package/dist/loaders/pdf-loader.js +72 -0
- package/dist/loaders/pdf-loader.js.map +1 -0
- package/dist/loaders/text-loader.d.ts +8 -0
- package/dist/loaders/text-loader.d.ts.map +1 -0
- package/dist/loaders/text-loader.js +40 -0
- package/dist/loaders/text-loader.js.map +1 -0
- package/dist/loaders/web-loader.d.ts +13 -0
- package/dist/loaders/web-loader.d.ts.map +1 -0
- package/dist/loaders/web-loader.js +23 -0
- package/dist/loaders/web-loader.js.map +1 -0
- package/dist/rag-builder.d.ts +22 -0
- package/dist/rag-builder.d.ts.map +1 -0
- package/dist/rag-builder.js +74 -0
- package/dist/rag-builder.js.map +1 -0
- package/dist/rag-pipeline.d.ts +28 -0
- package/dist/rag-pipeline.d.ts.map +1 -0
- package/dist/rag-pipeline.js +59 -0
- package/dist/rag-pipeline.js.map +1 -0
- package/dist/rerankers/cohere-reranker.d.ts +12 -0
- package/dist/rerankers/cohere-reranker.d.ts.map +1 -0
- package/dist/rerankers/cohere-reranker.js +37 -0
- package/dist/rerankers/cohere-reranker.js.map +1 -0
- package/dist/rerankers/index.d.ts +3 -0
- package/dist/rerankers/index.d.ts.map +1 -0
- package/dist/rerankers/index.js +3 -0
- package/dist/rerankers/index.js.map +1 -0
- package/dist/rerankers/llm-reranker.d.ts +12 -0
- package/dist/rerankers/llm-reranker.d.ts.map +1 -0
- package/dist/rerankers/llm-reranker.js +54 -0
- package/dist/rerankers/llm-reranker.js.map +1 -0
- package/dist/retrievers/create-retriever.d.ts +37 -0
- package/dist/retrievers/create-retriever.d.ts.map +1 -0
- package/dist/retrievers/create-retriever.js +37 -0
- package/dist/retrievers/create-retriever.js.map +1 -0
- package/dist/retrievers/hybrid-retriever.d.ts +18 -0
- package/dist/retrievers/hybrid-retriever.d.ts.map +1 -0
- package/dist/retrievers/hybrid-retriever.js +43 -0
- package/dist/retrievers/hybrid-retriever.js.map +1 -0
- package/dist/retrievers/index.d.ts +11 -0
- package/dist/retrievers/index.d.ts.map +1 -0
- package/dist/retrievers/index.js +6 -0
- package/dist/retrievers/index.js.map +1 -0
- package/dist/retrievers/mmr-retriever.d.ts +20 -0
- package/dist/retrievers/mmr-retriever.d.ts.map +1 -0
- package/dist/retrievers/mmr-retriever.js +89 -0
- package/dist/retrievers/mmr-retriever.js.map +1 -0
- package/dist/retrievers/multi-query-retriever.d.ts +14 -0
- package/dist/retrievers/multi-query-retriever.d.ts.map +1 -0
- package/dist/retrievers/multi-query-retriever.js +29 -0
- package/dist/retrievers/multi-query-retriever.js.map +1 -0
- package/dist/retrievers/similarity-retriever.d.ts +17 -0
- package/dist/retrievers/similarity-retriever.d.ts.map +1 -0
- package/dist/retrievers/similarity-retriever.js +39 -0
- package/dist/retrievers/similarity-retriever.js.map +1 -0
- package/dist/schema.d.ts +70 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +27 -0
- package/dist/schema.js.map +1 -0
- package/dist/tools.d.ts +23 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +45 -0
- package/dist/tools.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DocumentLoader, RAGDocument } from '@cogitator-ai/types';
|
|
2
|
+
export interface HTMLLoaderOptions {
|
|
3
|
+
selector?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class HTMLLoader implements DocumentLoader {
|
|
6
|
+
readonly supportedTypes: string[];
|
|
7
|
+
readonly selector: string;
|
|
8
|
+
constructor(options?: HTMLLoaderOptions);
|
|
9
|
+
load(source: string): Promise<RAGDocument[]>;
|
|
10
|
+
parseHTML(html: string, source: string, sourceType: 'html' | 'web'): Promise<RAGDocument>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=html-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/html-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAUvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,UAAW,YAAW,cAAc;IAC/C,QAAQ,CAAC,cAAc,WAAmB;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,CAAC,EAAE,iBAAiB;IAIjC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAM5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;CAkBhG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
async function loadCheerio() {
|
|
5
|
+
try {
|
|
6
|
+
return await import('cheerio');
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
throw new Error('cheerio is required for HTMLLoader. Install it: pnpm add cheerio');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class HTMLLoader {
|
|
13
|
+
supportedTypes = ['html', 'htm'];
|
|
14
|
+
selector;
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.selector = options?.selector ?? 'body';
|
|
17
|
+
}
|
|
18
|
+
async load(source) {
|
|
19
|
+
const filePath = resolve(source);
|
|
20
|
+
const html = await readFile(filePath, 'utf-8');
|
|
21
|
+
return [await this.parseHTML(html, filePath, 'html')];
|
|
22
|
+
}
|
|
23
|
+
async parseHTML(html, source, sourceType) {
|
|
24
|
+
const cheerio = await loadCheerio();
|
|
25
|
+
const $ = cheerio.load(html);
|
|
26
|
+
const content = $(this.selector).text().trim();
|
|
27
|
+
const title = $('title').text().trim() || undefined;
|
|
28
|
+
const metadata = {};
|
|
29
|
+
if (title)
|
|
30
|
+
metadata.title = title;
|
|
31
|
+
return {
|
|
32
|
+
id: nanoid(),
|
|
33
|
+
content,
|
|
34
|
+
source,
|
|
35
|
+
sourceType,
|
|
36
|
+
...(Object.keys(metadata).length > 0 && { metadata }),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=html-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-loader.js","sourceRoot":"","sources":["../../src/loaders/html-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAMD,MAAM,OAAO,UAAU;IACZ,cAAc,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,QAAQ,CAAS;IAE1B,YAAY,OAA2B;QACrC,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,MAAc,EAAE,UAA0B;QACtE,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;QAEpD,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,IAAI,KAAK;YAAE,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QAElC,OAAO;YACL,EAAE,EAAE,MAAM,EAAE;YACZ,OAAO;YACP,MAAM;YACN,UAAU;YACV,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { TextLoader } from './text-loader';
|
|
2
|
+
export { MarkdownLoader } from './markdown-loader';
|
|
3
|
+
export type { MarkdownLoaderOptions } from './markdown-loader';
|
|
4
|
+
export { JSONLoader } from './json-loader';
|
|
5
|
+
export type { JSONLoaderOptions } from './json-loader';
|
|
6
|
+
export { CSVLoader } from './csv-loader';
|
|
7
|
+
export type { CSVLoaderOptions } from './csv-loader';
|
|
8
|
+
export { HTMLLoader } from './html-loader';
|
|
9
|
+
export type { HTMLLoaderOptions } from './html-loader';
|
|
10
|
+
export { PDFLoader } from './pdf-loader';
|
|
11
|
+
export type { PDFLoaderOptions } from './pdf-loader';
|
|
12
|
+
export { WebLoader } from './web-loader';
|
|
13
|
+
export type { WebLoaderOptions } from './web-loader';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loaders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { TextLoader } from './text-loader';
|
|
2
|
+
export { MarkdownLoader } from './markdown-loader';
|
|
3
|
+
export { JSONLoader } from './json-loader';
|
|
4
|
+
export { CSVLoader } from './csv-loader';
|
|
5
|
+
export { HTMLLoader } from './html-loader';
|
|
6
|
+
export { PDFLoader } from './pdf-loader';
|
|
7
|
+
export { WebLoader } from './web-loader';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loaders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DocumentLoader, RAGDocument } from '@cogitator-ai/types';
|
|
2
|
+
export interface JSONLoaderOptions {
|
|
3
|
+
contentField?: string;
|
|
4
|
+
metadataFields?: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare class JSONLoader implements DocumentLoader {
|
|
7
|
+
readonly supportedTypes: string[];
|
|
8
|
+
private readonly contentField?;
|
|
9
|
+
private readonly metadataFields?;
|
|
10
|
+
constructor(options?: JSONLoaderOptions);
|
|
11
|
+
load(source: string): Promise<RAGDocument[]>;
|
|
12
|
+
private itemToDocument;
|
|
13
|
+
private extractContent;
|
|
14
|
+
private extractMetadata;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=json-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/json-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvE,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,qBAAa,UAAW,YAAW,cAAc;IAC/C,QAAQ,CAAC,cAAc,WAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAW;gBAE/B,OAAO,CAAC,EAAE,iBAAiB;IAKjC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IASlD,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,eAAe;CAWxB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
const CONTENT_FIELDS = ['content', 'text', 'body'];
|
|
5
|
+
export class JSONLoader {
|
|
6
|
+
supportedTypes = ['json'];
|
|
7
|
+
contentField;
|
|
8
|
+
metadataFields;
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.contentField = options?.contentField;
|
|
11
|
+
this.metadataFields = options?.metadataFields;
|
|
12
|
+
}
|
|
13
|
+
async load(source) {
|
|
14
|
+
const filePath = resolve(source);
|
|
15
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
16
|
+
const data = JSON.parse(raw);
|
|
17
|
+
const items = Array.isArray(data) ? data : [data];
|
|
18
|
+
return items.map((item) => this.itemToDocument(item, filePath));
|
|
19
|
+
}
|
|
20
|
+
itemToDocument(item, source) {
|
|
21
|
+
const obj = item;
|
|
22
|
+
const content = this.extractContent(obj);
|
|
23
|
+
const metadata = this.extractMetadata(obj);
|
|
24
|
+
return {
|
|
25
|
+
id: nanoid(),
|
|
26
|
+
content,
|
|
27
|
+
source,
|
|
28
|
+
sourceType: 'json',
|
|
29
|
+
...(metadata && Object.keys(metadata).length > 0 && { metadata }),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
extractContent(obj) {
|
|
33
|
+
if (this.contentField && this.contentField in obj) {
|
|
34
|
+
return String(obj[this.contentField]);
|
|
35
|
+
}
|
|
36
|
+
for (const field of CONTENT_FIELDS) {
|
|
37
|
+
if (field in obj) {
|
|
38
|
+
return String(obj[field]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return JSON.stringify(obj, null, 2);
|
|
42
|
+
}
|
|
43
|
+
extractMetadata(obj) {
|
|
44
|
+
if (!this.metadataFields)
|
|
45
|
+
return undefined;
|
|
46
|
+
const metadata = {};
|
|
47
|
+
for (const field of this.metadataFields) {
|
|
48
|
+
if (field in obj) {
|
|
49
|
+
metadata[field] = obj[field];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return metadata;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=json-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-loader.js","sourceRoot":"","sources":["../../src/loaders/json-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAOnD,MAAM,OAAO,UAAU;IACZ,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,YAAY,CAAU;IACtB,cAAc,CAAY;IAE3C,YAAY,OAA2B;QACrC,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,cAAc,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,cAAc,CAAC,IAAa,EAAE,MAAc;QAClD,MAAM,GAAG,GAAG,IAA+B,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAE3C,OAAO;YACL,EAAE,EAAE,MAAM,EAAE;YACZ,OAAO;YACP,MAAM;YACN,UAAU,EAAE,MAAM;YAClB,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;SAClE,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,GAA4B;QACjD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;gBACjB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAEO,eAAe,CAAC,GAA4B;QAClD,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC;QAE3C,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;gBACjB,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DocumentLoader, RAGDocument } from '@cogitator-ai/types';
|
|
2
|
+
export interface MarkdownLoaderOptions {
|
|
3
|
+
stripFrontmatter?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class MarkdownLoader implements DocumentLoader {
|
|
6
|
+
readonly supportedTypes: string[];
|
|
7
|
+
private readonly stripFrontmatter;
|
|
8
|
+
constructor(options?: MarkdownLoaderOptions);
|
|
9
|
+
load(source: string): Promise<RAGDocument[]>;
|
|
10
|
+
private loadFile;
|
|
11
|
+
private parseFrontmatter;
|
|
12
|
+
private loadDirectory;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=markdown-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/markdown-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvE,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,cAAe,YAAW,cAAc;IACnD,QAAQ,CAAC,cAAc,WAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;gBAE/B,OAAO,CAAC,EAAE,qBAAqB;IAIrC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAWpC,QAAQ;IAsBtB,OAAO,CAAC,gBAAgB;YAWV,aAAa;CAiB5B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { readFile, readdir, stat } from 'node:fs/promises';
|
|
2
|
+
import { join, resolve } from 'node:path';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
const MD_EXTENSIONS = new Set(['md', 'mdx']);
|
|
5
|
+
const FRONTMATTER_RE = /^---\r?\n([\s\S]*?)\r?\n---\r?\n/;
|
|
6
|
+
export class MarkdownLoader {
|
|
7
|
+
supportedTypes = ['md', 'mdx'];
|
|
8
|
+
stripFrontmatter;
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.stripFrontmatter = options?.stripFrontmatter ?? false;
|
|
11
|
+
}
|
|
12
|
+
async load(source) {
|
|
13
|
+
const resolved = resolve(source);
|
|
14
|
+
const info = await stat(resolved);
|
|
15
|
+
if (info.isDirectory()) {
|
|
16
|
+
return this.loadDirectory(resolved);
|
|
17
|
+
}
|
|
18
|
+
return [await this.loadFile(resolved)];
|
|
19
|
+
}
|
|
20
|
+
async loadFile(filePath) {
|
|
21
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
22
|
+
let content = raw;
|
|
23
|
+
let metadata;
|
|
24
|
+
if (this.stripFrontmatter) {
|
|
25
|
+
const match = raw.match(FRONTMATTER_RE);
|
|
26
|
+
if (match) {
|
|
27
|
+
metadata = this.parseFrontmatter(match[1]);
|
|
28
|
+
content = raw.slice(match[0].length);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
id: nanoid(),
|
|
33
|
+
content,
|
|
34
|
+
source: filePath,
|
|
35
|
+
sourceType: 'markdown',
|
|
36
|
+
...(metadata && { metadata }),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
parseFrontmatter(raw) {
|
|
40
|
+
const result = {};
|
|
41
|
+
for (const line of raw.split('\n')) {
|
|
42
|
+
const match = line.match(/^(\w[\w\s-]*?):\s*(.+)$/);
|
|
43
|
+
if (match) {
|
|
44
|
+
result[match[1].trim()] = match[2].trim();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
async loadDirectory(dirPath) {
|
|
50
|
+
const entries = await readdir(dirPath);
|
|
51
|
+
const docs = [];
|
|
52
|
+
for (const entry of entries) {
|
|
53
|
+
const ext = entry.split('.').pop()?.toLowerCase() ?? '';
|
|
54
|
+
if (!MD_EXTENSIONS.has(ext))
|
|
55
|
+
continue;
|
|
56
|
+
const filePath = join(dirPath, entry);
|
|
57
|
+
const info = await stat(filePath);
|
|
58
|
+
if (info.isFile()) {
|
|
59
|
+
docs.push(await this.loadFile(filePath));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return docs;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=markdown-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-loader.js","sourceRoot":"","sources":["../../src/loaders/markdown-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DocumentLoader, RAGDocument } from '@cogitator-ai/types';
|
|
2
|
+
export interface PDFLoaderOptions {
|
|
3
|
+
splitPages?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class PDFLoader implements DocumentLoader {
|
|
6
|
+
readonly supportedTypes: string[];
|
|
7
|
+
private readonly splitPages;
|
|
8
|
+
constructor(options?: PDFLoaderOptions);
|
|
9
|
+
load(source: string): Promise<RAGDocument[]>;
|
|
10
|
+
private loadSingleDocument;
|
|
11
|
+
private loadSplitPages;
|
|
12
|
+
private buildPageDoc;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=pdf-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/pdf-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAuBvE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,SAAU,YAAW,cAAc;IAC9C,QAAQ,CAAC,cAAc,WAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;gBAEzB,OAAO,CAAC,EAAE,gBAAgB;IAIhC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAYpC,kBAAkB;YAsBlB,cAAc;IA4B5B,OAAO,CAAC,YAAY;CAkBrB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
async function loadPdfParse() {
|
|
5
|
+
try {
|
|
6
|
+
const mod = await import('pdf-parse');
|
|
7
|
+
return mod.default;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
throw new Error('pdf-parse is required for PDFLoader. Install it: pnpm add pdf-parse');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class PDFLoader {
|
|
14
|
+
supportedTypes = ['pdf'];
|
|
15
|
+
splitPages;
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.splitPages = options?.splitPages ?? false;
|
|
18
|
+
}
|
|
19
|
+
async load(source) {
|
|
20
|
+
const pdfParse = await loadPdfParse();
|
|
21
|
+
const filePath = resolve(source);
|
|
22
|
+
const buffer = await readFile(filePath);
|
|
23
|
+
if (this.splitPages) {
|
|
24
|
+
return this.loadSplitPages(pdfParse, buffer, filePath);
|
|
25
|
+
}
|
|
26
|
+
return this.loadSingleDocument(pdfParse, buffer, filePath);
|
|
27
|
+
}
|
|
28
|
+
async loadSingleDocument(pdfParse, buffer, source) {
|
|
29
|
+
const result = await pdfParse(buffer);
|
|
30
|
+
const title = result.info?.Title;
|
|
31
|
+
const metadata = { pages: result.numpages };
|
|
32
|
+
if (title)
|
|
33
|
+
metadata.title = title;
|
|
34
|
+
return [
|
|
35
|
+
{
|
|
36
|
+
id: nanoid(),
|
|
37
|
+
content: result.text,
|
|
38
|
+
source,
|
|
39
|
+
sourceType: 'pdf',
|
|
40
|
+
metadata,
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
async loadSplitPages(pdfParse, buffer, source) {
|
|
45
|
+
const pageContents = [];
|
|
46
|
+
const result = await pdfParse(buffer, {
|
|
47
|
+
pagerender(pageData) {
|
|
48
|
+
pageContents[pageData.pageIndex] = '';
|
|
49
|
+
return '';
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
const title = result.info?.Title;
|
|
53
|
+
if (pageContents.length === 0) {
|
|
54
|
+
const pages = result.text.split(/\f/);
|
|
55
|
+
return pages.map((text, i) => this.buildPageDoc(text.trim(), source, i + 1, result.numpages, title));
|
|
56
|
+
}
|
|
57
|
+
return pageContents.map((text, i) => this.buildPageDoc(text || '', source, i + 1, result.numpages, title));
|
|
58
|
+
}
|
|
59
|
+
buildPageDoc(content, source, pageNumber, totalPages, title) {
|
|
60
|
+
const metadata = { pageNumber, totalPages };
|
|
61
|
+
if (title)
|
|
62
|
+
metadata.title = title;
|
|
63
|
+
return {
|
|
64
|
+
id: nanoid(),
|
|
65
|
+
content,
|
|
66
|
+
source,
|
|
67
|
+
sourceType: 'pdf',
|
|
68
|
+
metadata,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=pdf-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-loader.js","sourceRoot":"","sources":["../../src/loaders/pdf-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DocumentLoader, RAGDocument } from '@cogitator-ai/types';
|
|
2
|
+
export declare class TextLoader implements DocumentLoader {
|
|
3
|
+
readonly supportedTypes: string[];
|
|
4
|
+
load(source: string): Promise<RAGDocument[]>;
|
|
5
|
+
private loadFile;
|
|
6
|
+
private loadDirectory;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=text-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/text-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvE,qBAAa,UAAW,YAAW,cAAc;IAC/C,QAAQ,CAAC,cAAc,WAAmB;IAEpC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAWpC,QAAQ;YAUR,aAAa;CAiB5B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { readFile, readdir, stat } from 'node:fs/promises';
|
|
2
|
+
import { join, resolve } from 'node:path';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
const TEXT_EXTENSIONS = new Set(['txt', 'text']);
|
|
5
|
+
export class TextLoader {
|
|
6
|
+
supportedTypes = ['txt', 'text'];
|
|
7
|
+
async load(source) {
|
|
8
|
+
const resolved = resolve(source);
|
|
9
|
+
const info = await stat(resolved);
|
|
10
|
+
if (info.isDirectory()) {
|
|
11
|
+
return this.loadDirectory(resolved);
|
|
12
|
+
}
|
|
13
|
+
return [await this.loadFile(resolved)];
|
|
14
|
+
}
|
|
15
|
+
async loadFile(filePath) {
|
|
16
|
+
const content = await readFile(filePath, 'utf-8');
|
|
17
|
+
return {
|
|
18
|
+
id: nanoid(),
|
|
19
|
+
content,
|
|
20
|
+
source: filePath,
|
|
21
|
+
sourceType: 'text',
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
async loadDirectory(dirPath) {
|
|
25
|
+
const entries = await readdir(dirPath);
|
|
26
|
+
const docs = [];
|
|
27
|
+
for (const entry of entries) {
|
|
28
|
+
const ext = entry.split('.').pop()?.toLowerCase() ?? '';
|
|
29
|
+
if (!TEXT_EXTENSIONS.has(ext))
|
|
30
|
+
continue;
|
|
31
|
+
const filePath = join(dirPath, entry);
|
|
32
|
+
const info = await stat(filePath);
|
|
33
|
+
if (info.isFile()) {
|
|
34
|
+
docs.push(await this.loadFile(filePath));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return docs;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=text-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-loader.js","sourceRoot":"","sources":["../../src/loaders/text-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAEjD,MAAM,OAAO,UAAU;IACZ,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE1C,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,QAAgB;QACrC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO;YACL,EAAE,EAAE,MAAM,EAAE;YACZ,OAAO;YACP,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,MAAM;SACnB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAe;QACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,IAAI,GAAkB,EAAE,CAAC;QAE/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DocumentLoader, RAGDocument } from '@cogitator-ai/types';
|
|
2
|
+
export interface WebLoaderOptions {
|
|
3
|
+
selector?: string;
|
|
4
|
+
headers?: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
export declare class WebLoader implements DocumentLoader {
|
|
7
|
+
readonly supportedTypes: string[];
|
|
8
|
+
private readonly htmlLoader;
|
|
9
|
+
private readonly headers?;
|
|
10
|
+
constructor(options?: WebLoaderOptions);
|
|
11
|
+
load(source: string): Promise<RAGDocument[]>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=web-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/web-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,qBAAa,SAAU,YAAW,cAAc;IAC9C,QAAQ,CAAC,cAAc,WAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAyB;gBAEtC,OAAO,CAAC,EAAE,gBAAgB;IAKhC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAcnD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { nanoid } from 'nanoid';
|
|
2
|
+
import { HTMLLoader } from './html-loader';
|
|
3
|
+
export class WebLoader {
|
|
4
|
+
supportedTypes = ['http', 'https'];
|
|
5
|
+
htmlLoader;
|
|
6
|
+
headers;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.htmlLoader = new HTMLLoader({ selector: options?.selector });
|
|
9
|
+
this.headers = options?.headers;
|
|
10
|
+
}
|
|
11
|
+
async load(source) {
|
|
12
|
+
const response = await fetch(source, {
|
|
13
|
+
headers: this.headers ?? {},
|
|
14
|
+
});
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
throw new Error(`Failed to fetch ${source}: ${response.status} ${response.statusText}`);
|
|
17
|
+
}
|
|
18
|
+
const html = await response.text();
|
|
19
|
+
const doc = await this.htmlLoader.parseHTML(html, source, 'web');
|
|
20
|
+
return [{ ...doc, id: nanoid() }];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=web-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-loader.js","sourceRoot":"","sources":["../../src/loaders/web-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAO3C,MAAM,OAAO,SAAS;IACX,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3B,UAAU,CAAa;IACvB,OAAO,CAA0B;IAElD,YAAY,OAA0B;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAEjE,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { DocumentLoader, Chunker, AsyncChunker, EmbeddingService, EmbeddingAdapter, Retriever, Reranker } from '@cogitator-ai/types';
|
|
2
|
+
import { type RAGPipelineConfigInput } from './schema';
|
|
3
|
+
import { RAGPipeline } from './rag-pipeline';
|
|
4
|
+
export declare class RAGPipelineBuilder {
|
|
5
|
+
private loader?;
|
|
6
|
+
private chunker?;
|
|
7
|
+
private embeddingService?;
|
|
8
|
+
private embeddingAdapter?;
|
|
9
|
+
private retriever?;
|
|
10
|
+
private reranker?;
|
|
11
|
+
private configInput?;
|
|
12
|
+
withLoader(loader: DocumentLoader): this;
|
|
13
|
+
withChunker(chunker: Chunker | AsyncChunker): this;
|
|
14
|
+
withEmbeddingService(service: EmbeddingService): this;
|
|
15
|
+
withEmbeddingAdapter(adapter: EmbeddingAdapter): this;
|
|
16
|
+
withRetriever(retriever: Retriever): this;
|
|
17
|
+
withReranker(reranker: Reranker): this;
|
|
18
|
+
withConfig(config: RAGPipelineConfigInput): this;
|
|
19
|
+
build(): RAGPipeline;
|
|
20
|
+
private resolveConfig;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=rag-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rag-builder.d.ts","sourceRoot":"","sources":["../src/rag-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EAET,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA2B,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAyB;IAE7C,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAKxC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;IAKlD,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAKrD,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAKrD,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKzC,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAKtC,UAAU,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAKhD,KAAK,IAAI,WAAW;IA8BpB,OAAO,CAAC,aAAa;CAMtB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { RAGPipelineConfigSchema } from './schema';
|
|
2
|
+
import { RAGPipeline } from './rag-pipeline';
|
|
3
|
+
import { createChunker } from './chunkers/create-chunker';
|
|
4
|
+
import { SimilarityRetriever } from './retrievers/similarity-retriever';
|
|
5
|
+
export class RAGPipelineBuilder {
|
|
6
|
+
loader;
|
|
7
|
+
chunker;
|
|
8
|
+
embeddingService;
|
|
9
|
+
embeddingAdapter;
|
|
10
|
+
retriever;
|
|
11
|
+
reranker;
|
|
12
|
+
configInput;
|
|
13
|
+
withLoader(loader) {
|
|
14
|
+
this.loader = loader;
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
withChunker(chunker) {
|
|
18
|
+
this.chunker = chunker;
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
withEmbeddingService(service) {
|
|
22
|
+
this.embeddingService = service;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
withEmbeddingAdapter(adapter) {
|
|
26
|
+
this.embeddingAdapter = adapter;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
withRetriever(retriever) {
|
|
30
|
+
this.retriever = retriever;
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
withReranker(reranker) {
|
|
34
|
+
this.reranker = reranker;
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
withConfig(config) {
|
|
38
|
+
this.configInput = config;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
build() {
|
|
42
|
+
if (!this.loader) {
|
|
43
|
+
throw new Error('loader is required — call withLoader() before build()');
|
|
44
|
+
}
|
|
45
|
+
if (!this.embeddingService) {
|
|
46
|
+
throw new Error('embeddingService is required — call withEmbeddingService() before build()');
|
|
47
|
+
}
|
|
48
|
+
if (!this.embeddingAdapter) {
|
|
49
|
+
throw new Error('embeddingAdapter is required — call withEmbeddingAdapter() before build()');
|
|
50
|
+
}
|
|
51
|
+
const config = this.resolveConfig();
|
|
52
|
+
const chunker = this.chunker ?? createChunker(config.chunking, this.embeddingService);
|
|
53
|
+
const retriever = this.retriever ??
|
|
54
|
+
new SimilarityRetriever({
|
|
55
|
+
embeddingAdapter: this.embeddingAdapter,
|
|
56
|
+
embeddingService: this.embeddingService,
|
|
57
|
+
});
|
|
58
|
+
return new RAGPipeline(config, {
|
|
59
|
+
loader: this.loader,
|
|
60
|
+
chunker,
|
|
61
|
+
embeddingService: this.embeddingService,
|
|
62
|
+
embeddingAdapter: this.embeddingAdapter,
|
|
63
|
+
retriever,
|
|
64
|
+
reranker: this.reranker,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
resolveConfig() {
|
|
68
|
+
if (!this.configInput) {
|
|
69
|
+
throw new Error('config is required — call withConfig() or provide a chunker');
|
|
70
|
+
}
|
|
71
|
+
return RAGPipelineConfigSchema.parse(this.configInput);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=rag-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rag-builder.js","sourceRoot":"","sources":["../src/rag-builder.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,uBAAuB,EAA+B,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAkB;IACxB,OAAO,CAA0B;IACjC,gBAAgB,CAAoB;IACpC,gBAAgB,CAAoB;IACpC,SAAS,CAAa;IACtB,QAAQ,CAAY;IACpB,WAAW,CAA0B;IAE7C,UAAU,CAAC,MAAsB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,OAA+B;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB,CAAC,OAAyB;QAC5C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB,CAAC,OAAyB;QAC5C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,SAAoB;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,QAAkB;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,MAA8B;QACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC/F,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtF,MAAM,SAAS,GACb,IAAI,CAAC,SAAS;YACd,IAAI,mBAAmB,CAAC;gBACtB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aACxC,CAAC,CAAC;QAEL,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO;YACP,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { DocumentLoader, Chunker, AsyncChunker, EmbeddingService, EmbeddingAdapter, Retriever, Reranker, RAGPipelineConfig, RetrievalConfig, RetrievalResult } from '@cogitator-ai/types';
|
|
2
|
+
export interface RAGPipelineDeps {
|
|
3
|
+
loader: DocumentLoader;
|
|
4
|
+
chunker: Chunker | AsyncChunker;
|
|
5
|
+
embeddingService: EmbeddingService;
|
|
6
|
+
embeddingAdapter: EmbeddingAdapter;
|
|
7
|
+
retriever: Retriever;
|
|
8
|
+
reranker?: Reranker;
|
|
9
|
+
}
|
|
10
|
+
export declare class RAGPipeline {
|
|
11
|
+
private readonly config;
|
|
12
|
+
private readonly deps;
|
|
13
|
+
private stats;
|
|
14
|
+
constructor(config: RAGPipelineConfig, deps: RAGPipelineDeps);
|
|
15
|
+
ingest(source: string): Promise<{
|
|
16
|
+
documents: number;
|
|
17
|
+
chunks: number;
|
|
18
|
+
}>;
|
|
19
|
+
query(text: string, options?: Partial<RetrievalConfig>): Promise<RetrievalResult[]>;
|
|
20
|
+
getStats(): {
|
|
21
|
+
documentsIngested: number;
|
|
22
|
+
chunksStored: number;
|
|
23
|
+
queriesProcessed: number;
|
|
24
|
+
};
|
|
25
|
+
private chunkDocument;
|
|
26
|
+
private storeChunk;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=rag-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rag-pipeline.d.ts","sourceRoot":"","sources":["../src/rag-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,eAAe,EAGhB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,KAAK,CAAkE;gBAEnE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe;IAKtD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAsBtE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWzF,QAAQ;;;;;YAIM,aAAa;YAKb,UAAU;CAkBzB"}
|