@toolpack-sdk/knowledge 1.2.0-SNAPSHOT.04032026-2
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 +220 -0
- package/dist/embedders/ollama.d.ts +15 -0
- package/dist/embedders/ollama.d.ts.map +1 -0
- package/dist/embedders/ollama.js +51 -0
- package/dist/embedders/ollama.js.map +1 -0
- package/dist/embedders/openai.d.ts +18 -0
- package/dist/embedders/openai.d.ts.map +1 -0
- package/dist/embedders/openai.js +63 -0
- package/dist/embedders/openai.js.map +1 -0
- package/dist/errors.d.ts +25 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +58 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces.d.ts +48 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/interfaces.js +3 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/knowledge.d.ts +74 -0
- package/dist/knowledge.d.ts.map +1 -0
- package/dist/knowledge.js +120 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/providers/memory.d.ts +16 -0
- package/dist/providers/memory.d.ts.map +1 -0
- package/dist/providers/memory.js +72 -0
- package/dist/providers/memory.js.map +1 -0
- package/dist/providers/persistent.d.ts +23 -0
- package/dist/providers/persistent.d.ts.map +1 -0
- package/dist/providers/persistent.js +162 -0
- package/dist/providers/persistent.js.map +1 -0
- package/dist/sources/markdown.d.ts +20 -0
- package/dist/sources/markdown.d.ts.map +1 -0
- package/dist/sources/markdown.js +196 -0
- package/dist/sources/markdown.js.map +1 -0
- package/dist/utils/chunking.d.ts +6 -0
- package/dist/utils/chunking.d.ts.map +1 -0
- package/dist/utils/chunking.js +86 -0
- package/dist/utils/chunking.js.map +1 -0
- package/dist/utils/cosine.d.ts +4 -0
- package/dist/utils/cosine.d.ts.map +1 -0
- package/dist/utils/cosine.js +52 -0
- package/dist/utils/cosine.js.map +1 -0
- package/package.json +39 -0
package/README.md
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# toolpack-knowledge
|
|
2
|
+
|
|
3
|
+
RAG (Retrieval-Augmented Generation) package for Toolpack SDK.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install toolpack-knowledge
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
### Development (Zero Infrastructure)
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { Knowledge, MemoryProvider, MarkdownSource, OllamaEmbedder } from 'toolpack-knowledge';
|
|
17
|
+
|
|
18
|
+
const kb = await Knowledge.create({
|
|
19
|
+
provider: new MemoryProvider(),
|
|
20
|
+
sources: [new MarkdownSource('./docs/**/*.md')],
|
|
21
|
+
embedder: new OllamaEmbedder({ model: 'nomic-embed-text' }),
|
|
22
|
+
description: 'SDK documentation — setup guides, API reference, and examples.',
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const results = await kb.query('how to install');
|
|
26
|
+
console.log(results[0].chunk.content);
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Production (Persistent)
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { Knowledge, PersistentKnowledgeProvider, MarkdownSource, OpenAIEmbedder } from 'toolpack-knowledge';
|
|
33
|
+
|
|
34
|
+
const kb = await Knowledge.create({
|
|
35
|
+
provider: new PersistentKnowledgeProvider({
|
|
36
|
+
namespace: 'cli',
|
|
37
|
+
reSync: false, // Load from disk if already indexed
|
|
38
|
+
}),
|
|
39
|
+
sources: [new MarkdownSource('./docs/**/*.md')],
|
|
40
|
+
embedder: new OpenAIEmbedder({
|
|
41
|
+
model: 'text-embedding-3-small',
|
|
42
|
+
apiKey: process.env.OPENAI_API_KEY!,
|
|
43
|
+
}),
|
|
44
|
+
description: 'CLI documentation and guides.',
|
|
45
|
+
onEmbeddingProgress: (event) => {
|
|
46
|
+
console.log(`Embedding: ${event.percent}% (${event.current}/${event.total})`);
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const results = await kb.query('authentication setup', {
|
|
51
|
+
limit: 5,
|
|
52
|
+
threshold: 0.8,
|
|
53
|
+
filter: { hasCode: true },
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Agent Integration
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
import { Toolpack } from 'toolpack-sdk';
|
|
61
|
+
import { Knowledge, MemoryProvider, MarkdownSource, OllamaEmbedder } from 'toolpack-knowledge';
|
|
62
|
+
|
|
63
|
+
const kb = await Knowledge.create({
|
|
64
|
+
provider: new MemoryProvider(),
|
|
65
|
+
sources: [new MarkdownSource('./docs/**/*.md')],
|
|
66
|
+
embedder: new OllamaEmbedder({ model: 'nomic-embed-text' }),
|
|
67
|
+
description: 'Search this when the user asks about setup, configuration, or API usage.',
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const toolpack = await Toolpack.init({
|
|
71
|
+
provider: 'anthropic',
|
|
72
|
+
knowledge: kb, // Registered as knowledge_search tool
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
const response = await toolpack.chat('How do I configure authentication?');
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Providers
|
|
79
|
+
|
|
80
|
+
### MemoryProvider
|
|
81
|
+
|
|
82
|
+
In-memory vector storage. Zero configuration, perfect for development and prototyping.
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
new MemoryProvider({
|
|
86
|
+
maxChunks: 10000, // Optional limit
|
|
87
|
+
})
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### PersistentKnowledgeProvider
|
|
91
|
+
|
|
92
|
+
SQLite-backed persistence for CLI tools and desktop apps.
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
new PersistentKnowledgeProvider({
|
|
96
|
+
namespace: 'my-app', // Creates ~/.toolpack/knowledge/my-app.db
|
|
97
|
+
storagePath: './custom/path', // Optional: override storage location
|
|
98
|
+
reSync: false, // Optional: skip re-indexing if DB exists
|
|
99
|
+
})
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Sources
|
|
103
|
+
|
|
104
|
+
### MarkdownSource
|
|
105
|
+
|
|
106
|
+
Chunks markdown files by heading hierarchy.
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
new MarkdownSource('./docs/**/*.md', {
|
|
110
|
+
maxChunkSize: 2000, // Max tokens per chunk
|
|
111
|
+
chunkOverlap: 200, // Overlap between chunks
|
|
112
|
+
minChunkSize: 100, // Merge small sections
|
|
113
|
+
namespace: 'docs', // Prefix for chunk IDs
|
|
114
|
+
metadata: { type: 'documentation' }, // Added to all chunks
|
|
115
|
+
})
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Features:**
|
|
119
|
+
- Heading-based chunking (preserves document structure)
|
|
120
|
+
- Frontmatter extraction (YAML)
|
|
121
|
+
- Code block detection (`hasCode` metadata)
|
|
122
|
+
- Deterministic chunk IDs
|
|
123
|
+
|
|
124
|
+
## Embedders
|
|
125
|
+
|
|
126
|
+
### OllamaEmbedder
|
|
127
|
+
|
|
128
|
+
Local embeddings via Ollama. Zero API cost.
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
new OllamaEmbedder({
|
|
132
|
+
model: 'nomic-embed-text', // or 'mxbai-embed-large'
|
|
133
|
+
baseUrl: 'http://localhost:11434', // default
|
|
134
|
+
})
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### OpenAIEmbedder
|
|
138
|
+
|
|
139
|
+
OpenAI text-embedding models with retry logic.
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
new OpenAIEmbedder({
|
|
143
|
+
model: 'text-embedding-3-small', // or 'text-embedding-3-large'
|
|
144
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
145
|
+
retries: 3, // default
|
|
146
|
+
retryDelay: 1000, // ms, default
|
|
147
|
+
timeout: 30000, // ms, default
|
|
148
|
+
})
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## API Reference
|
|
152
|
+
|
|
153
|
+
### Knowledge.create()
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
interface KnowledgeOptions {
|
|
157
|
+
provider: KnowledgeProvider;
|
|
158
|
+
sources: KnowledgeSource[];
|
|
159
|
+
embedder: Embedder;
|
|
160
|
+
description: string; // Required: used as tool description
|
|
161
|
+
reSync?: boolean; // default: true
|
|
162
|
+
onError?: (error, context) => 'skip' | 'abort';
|
|
163
|
+
onSync?: (event: SyncEvent) => void;
|
|
164
|
+
onEmbeddingProgress?: (event: EmbeddingProgressEvent) => void;
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### query()
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
await kb.query('search query', {
|
|
172
|
+
limit: 10, // Max results
|
|
173
|
+
threshold: 0.7, // Similarity threshold (0-1)
|
|
174
|
+
filter: { // Metadata filters
|
|
175
|
+
hasCode: true,
|
|
176
|
+
category: { $in: ['api', 'guide'] },
|
|
177
|
+
},
|
|
178
|
+
includeMetadata: true, // default
|
|
179
|
+
includeVectors: false, // default
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Metadata Filters
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
{
|
|
187
|
+
field: 'value', // Exact match
|
|
188
|
+
field: { $in: ['a', 'b'] }, // In array
|
|
189
|
+
field: { $gt: 100 }, // Greater than
|
|
190
|
+
field: { $lt: 100 }, // Less than
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Error Handling
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
const kb = await Knowledge.create({
|
|
198
|
+
// ...
|
|
199
|
+
onError: (error, context) => {
|
|
200
|
+
console.error(`Failed: ${context.file} — ${error.message}`);
|
|
201
|
+
|
|
202
|
+
if (error instanceof EmbeddingError) {
|
|
203
|
+
return 'skip'; // Skip this chunk, continue
|
|
204
|
+
}
|
|
205
|
+
return 'abort'; // Stop ingestion
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Error Types:**
|
|
211
|
+
- `KnowledgeError` — Base class
|
|
212
|
+
- `EmbeddingError` — Embedding API failure
|
|
213
|
+
- `IngestionError` — Source file parsing failure
|
|
214
|
+
- `ChunkTooLargeError` — Chunk exceeds max size
|
|
215
|
+
- `DimensionMismatchError` — Embedder dimensions mismatch
|
|
216
|
+
- `KnowledgeProviderError` — Provider operation failure
|
|
217
|
+
|
|
218
|
+
## License
|
|
219
|
+
|
|
220
|
+
Apache-2.0
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Embedder } from '../interfaces.js';
|
|
2
|
+
export interface OllamaEmbedderOptions {
|
|
3
|
+
model: string;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class OllamaEmbedder implements Embedder {
|
|
7
|
+
private options;
|
|
8
|
+
readonly dimensions: number;
|
|
9
|
+
private baseUrl;
|
|
10
|
+
constructor(options: OllamaEmbedderOptions);
|
|
11
|
+
private getModelDimensions;
|
|
12
|
+
embed(text: string): Promise<number[]>;
|
|
13
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ollama.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/embedders/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAe,YAAW,QAAQ;IAIjC,OAAO,CAAC,OAAO;IAH3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEJ,OAAO,EAAE,qBAAqB;IAKlD,OAAO,CAAC,kBAAkB;IASpB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBtC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAOvD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OllamaEmbedder = void 0;
|
|
4
|
+
const errors_js_1 = require("../errors.js");
|
|
5
|
+
class OllamaEmbedder {
|
|
6
|
+
options;
|
|
7
|
+
dimensions;
|
|
8
|
+
baseUrl;
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.options = options;
|
|
11
|
+
this.baseUrl = options.baseUrl || 'http://localhost:11434';
|
|
12
|
+
this.dimensions = this.getModelDimensions(options.model);
|
|
13
|
+
}
|
|
14
|
+
getModelDimensions(model) {
|
|
15
|
+
const dimensionsMap = {
|
|
16
|
+
'nomic-embed-text': 768,
|
|
17
|
+
'mxbai-embed-large': 1024,
|
|
18
|
+
'all-minilm': 384,
|
|
19
|
+
};
|
|
20
|
+
return dimensionsMap[model] || 768;
|
|
21
|
+
}
|
|
22
|
+
async embed(text) {
|
|
23
|
+
try {
|
|
24
|
+
const response = await fetch(`${this.baseUrl}/api/embeddings`, {
|
|
25
|
+
method: 'POST',
|
|
26
|
+
headers: { 'Content-Type': 'application/json' },
|
|
27
|
+
body: JSON.stringify({ model: this.options.model, prompt: text }),
|
|
28
|
+
});
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
throw new errors_js_1.EmbeddingError(`Ollama embedding failed: ${response.statusText}`, response.status);
|
|
31
|
+
}
|
|
32
|
+
const data = await response.json();
|
|
33
|
+
return data.embedding;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error instanceof errors_js_1.EmbeddingError) {
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
throw new errors_js_1.EmbeddingError(`Ollama embedding failed: ${error.message}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async embedBatch(texts) {
|
|
43
|
+
const embeddings = [];
|
|
44
|
+
for (const text of texts) {
|
|
45
|
+
embeddings.push(await this.embed(text));
|
|
46
|
+
}
|
|
47
|
+
return embeddings;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.OllamaEmbedder = OllamaEmbedder;
|
|
51
|
+
//# sourceMappingURL=ollama.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/embedders/ollama.ts"],"names":[],"mappings":";;;AACA,4CAA8C;AAO9C,MAAa,cAAc;IAIL;IAHX,UAAU,CAAS;IACpB,OAAO,CAAS;IAExB,YAAoB,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;QAChD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,wBAAwB,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACtC,MAAM,aAAa,GAA2B;YAC5C,kBAAkB,EAAE,GAAG;YACvB,mBAAmB,EAAE,IAAI;YACzB,YAAY,EAAE,GAAG;SAClB,CAAC;QACF,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,iBAAiB,EAAE;gBAC7D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;aAClE,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,0BAAc,CAAC,4BAA4B,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/F,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6B,CAAC;YAC9D,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,0BAAc,EAAE,CAAC;gBACpC,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,0BAAc,CAAC,4BAA6B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,MAAM,UAAU,GAAe,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AA/CD,wCA+CC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Embedder } from '../interfaces.js';
|
|
2
|
+
export interface OpenAIEmbedderOptions {
|
|
3
|
+
model: string;
|
|
4
|
+
apiKey: string;
|
|
5
|
+
retries?: number;
|
|
6
|
+
retryDelay?: number;
|
|
7
|
+
timeout?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class OpenAIEmbedder implements Embedder {
|
|
10
|
+
private options;
|
|
11
|
+
readonly dimensions: number;
|
|
12
|
+
private client;
|
|
13
|
+
constructor(options: OpenAIEmbedderOptions);
|
|
14
|
+
private getModelDimensions;
|
|
15
|
+
embed(text: string): Promise<number[]>;
|
|
16
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/embedders/openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAe,YAAW,QAAQ;IAIjC,OAAO,CAAC,OAAO;IAH3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEH,OAAO,EAAE,qBAAqB;IAQlD,OAAO,CAAC,kBAAkB;IASpB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBtC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAWvD"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OpenAIEmbedder = void 0;
|
|
7
|
+
const openai_1 = __importDefault(require("openai"));
|
|
8
|
+
const errors_js_1 = require("../errors.js");
|
|
9
|
+
class OpenAIEmbedder {
|
|
10
|
+
options;
|
|
11
|
+
dimensions;
|
|
12
|
+
client;
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this.options = options;
|
|
15
|
+
this.client = new openai_1.default({
|
|
16
|
+
apiKey: options.apiKey,
|
|
17
|
+
timeout: options.timeout || 30000,
|
|
18
|
+
});
|
|
19
|
+
this.dimensions = this.getModelDimensions(options.model);
|
|
20
|
+
}
|
|
21
|
+
getModelDimensions(model) {
|
|
22
|
+
const dimensionsMap = {
|
|
23
|
+
'text-embedding-3-small': 1536,
|
|
24
|
+
'text-embedding-3-large': 3072,
|
|
25
|
+
'text-embedding-ada-002': 1536,
|
|
26
|
+
};
|
|
27
|
+
return dimensionsMap[model] || 1536;
|
|
28
|
+
}
|
|
29
|
+
async embed(text) {
|
|
30
|
+
let lastError = null;
|
|
31
|
+
const retries = this.options.retries || 3;
|
|
32
|
+
for (let attempt = 0; attempt < retries; attempt++) {
|
|
33
|
+
try {
|
|
34
|
+
const response = await this.client.embeddings.create({
|
|
35
|
+
model: this.options.model,
|
|
36
|
+
input: text,
|
|
37
|
+
});
|
|
38
|
+
return response.data[0].embedding;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
lastError = error;
|
|
42
|
+
if (attempt < retries - 1) {
|
|
43
|
+
await new Promise(resolve => setTimeout(resolve, this.options.retryDelay || 1000));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
throw new errors_js_1.EmbeddingError(`OpenAI embedding failed after ${retries} retries: ${lastError?.message}`);
|
|
48
|
+
}
|
|
49
|
+
async embedBatch(texts) {
|
|
50
|
+
try {
|
|
51
|
+
const response = await this.client.embeddings.create({
|
|
52
|
+
model: this.options.model,
|
|
53
|
+
input: texts,
|
|
54
|
+
});
|
|
55
|
+
return response.data.map(d => d.embedding);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw new errors_js_1.EmbeddingError(`OpenAI batch embedding failed: ${error.message}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.OpenAIEmbedder = OpenAIEmbedder;
|
|
63
|
+
//# sourceMappingURL=openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/embedders/openai.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,4CAA8C;AAU9C,MAAa,cAAc;IAIL;IAHX,UAAU,CAAS;IACpB,MAAM,CAAS;IAEvB,YAAoB,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACtC,MAAM,aAAa,GAA2B;YAC5C,wBAAwB,EAAE,IAAI;YAC9B,wBAAwB,EAAE,IAAI;YAC9B,wBAAwB,EAAE,IAAI;SAC/B,CAAC;QACF,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,IAAI,SAAS,GAAiB,IAAI,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;QAE1C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;oBACnD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;oBACzB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAc,CAAC;gBAC3B,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,0BAAc,CAAC,iCAAiC,OAAO,aAAa,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;gBACnD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,0BAAc,CAAC,kCAAmC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;CACF;AAtDD,wCAsDC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare class KnowledgeError extends Error {
|
|
2
|
+
readonly code?: string | undefined;
|
|
3
|
+
constructor(message: string, code?: string | undefined);
|
|
4
|
+
}
|
|
5
|
+
export declare class EmbeddingError extends KnowledgeError {
|
|
6
|
+
readonly statusCode?: number | undefined;
|
|
7
|
+
constructor(message: string, statusCode?: number | undefined);
|
|
8
|
+
}
|
|
9
|
+
export declare class IngestionError extends KnowledgeError {
|
|
10
|
+
readonly file?: string | undefined;
|
|
11
|
+
constructor(message: string, file?: string | undefined);
|
|
12
|
+
}
|
|
13
|
+
export declare class ChunkTooLargeError extends KnowledgeError {
|
|
14
|
+
readonly chunkSize: number;
|
|
15
|
+
constructor(message: string, chunkSize: number);
|
|
16
|
+
}
|
|
17
|
+
export declare class DimensionMismatchError extends KnowledgeError {
|
|
18
|
+
readonly expected: number;
|
|
19
|
+
readonly actual: number;
|
|
20
|
+
constructor(expected: number, actual: number);
|
|
21
|
+
}
|
|
22
|
+
export declare class KnowledgeProviderError extends KnowledgeError {
|
|
23
|
+
constructor(message: string);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;aACM,IAAI,CAAC,EAAE,MAAM;gBAA9C,OAAO,EAAE,MAAM,EAAkB,IAAI,CAAC,EAAE,MAAM,YAAA;CAI3D;AAED,qBAAa,cAAe,SAAQ,cAAc;aACH,UAAU,CAAC,EAAE,MAAM;gBAApD,OAAO,EAAE,MAAM,EAAkB,UAAU,CAAC,EAAE,MAAM,YAAA;CAIjE;AAED,qBAAa,cAAe,SAAQ,cAAc;aACH,IAAI,CAAC,EAAE,MAAM;gBAA9C,OAAO,EAAE,MAAM,EAAkB,IAAI,CAAC,EAAE,MAAM,YAAA;CAI3D;AAED,qBAAa,kBAAmB,SAAQ,cAAc;aACP,SAAS,EAAE,MAAM;gBAAlD,OAAO,EAAE,MAAM,EAAkB,SAAS,EAAE,MAAM;CAI/D;AAED,qBAAa,sBAAuB,SAAQ,cAAc;IACxD,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAS7C;AAED,qBAAa,sBAAuB,SAAQ,cAAc;gBAC5C,OAAO,EAAE,MAAM;CAI5B"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KnowledgeProviderError = exports.DimensionMismatchError = exports.ChunkTooLargeError = exports.IngestionError = exports.EmbeddingError = exports.KnowledgeError = void 0;
|
|
4
|
+
class KnowledgeError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
constructor(message, code) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.name = 'KnowledgeError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.KnowledgeError = KnowledgeError;
|
|
13
|
+
class EmbeddingError extends KnowledgeError {
|
|
14
|
+
statusCode;
|
|
15
|
+
constructor(message, statusCode) {
|
|
16
|
+
super(message, 'EMBEDDING_ERROR');
|
|
17
|
+
this.statusCode = statusCode;
|
|
18
|
+
this.name = 'EmbeddingError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.EmbeddingError = EmbeddingError;
|
|
22
|
+
class IngestionError extends KnowledgeError {
|
|
23
|
+
file;
|
|
24
|
+
constructor(message, file) {
|
|
25
|
+
super(message, 'INGESTION_ERROR');
|
|
26
|
+
this.file = file;
|
|
27
|
+
this.name = 'IngestionError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.IngestionError = IngestionError;
|
|
31
|
+
class ChunkTooLargeError extends KnowledgeError {
|
|
32
|
+
chunkSize;
|
|
33
|
+
constructor(message, chunkSize) {
|
|
34
|
+
super(message, 'CHUNK_TOO_LARGE');
|
|
35
|
+
this.chunkSize = chunkSize;
|
|
36
|
+
this.name = 'ChunkTooLargeError';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.ChunkTooLargeError = ChunkTooLargeError;
|
|
40
|
+
class DimensionMismatchError extends KnowledgeError {
|
|
41
|
+
expected;
|
|
42
|
+
actual;
|
|
43
|
+
constructor(expected, actual) {
|
|
44
|
+
super(`Dimension mismatch: expected ${expected}, got ${actual}`, 'DIMENSION_MISMATCH');
|
|
45
|
+
this.name = 'DimensionMismatchError';
|
|
46
|
+
this.expected = expected;
|
|
47
|
+
this.actual = actual;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.DimensionMismatchError = DimensionMismatchError;
|
|
51
|
+
class KnowledgeProviderError extends KnowledgeError {
|
|
52
|
+
constructor(message) {
|
|
53
|
+
super(message, 'PROVIDER_ERROR');
|
|
54
|
+
this.name = 'KnowledgeProviderError';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.KnowledgeProviderError = KnowledgeProviderError;
|
|
58
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAe,SAAQ,KAAK;IACM;IAA7C,YAAY,OAAe,EAAkB,IAAa;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,SAAI,GAAJ,IAAI,CAAS;QAExD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC;AAED,MAAa,cAAe,SAAQ,cAAc;IACH;IAA7C,YAAY,OAAe,EAAkB,UAAmB;QAC9D,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QADS,eAAU,GAAV,UAAU,CAAS;QAE9D,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC;AAED,MAAa,cAAe,SAAQ,cAAc;IACH;IAA7C,YAAY,OAAe,EAAkB,IAAa;QACxD,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QADS,SAAI,GAAJ,IAAI,CAAS;QAExD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC;AAED,MAAa,kBAAmB,SAAQ,cAAc;IACP;IAA7C,YAAY,OAAe,EAAkB,SAAiB;QAC5D,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QADS,cAAS,GAAT,SAAS,CAAQ;QAE5D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED,MAAa,sBAAuB,SAAQ,cAAc;IACxC,QAAQ,CAAS;IACjB,MAAM,CAAS;IAE/B,YAAY,QAAgB,EAAE,MAAc;QAC1C,KAAK,CACH,gCAAgC,QAAQ,SAAS,MAAM,EAAE,EACzD,oBAAoB,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAbD,wDAaC;AAED,MAAa,sBAAuB,SAAQ,cAAc;IACxD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AALD,wDAKC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './interfaces.js';
|
|
2
|
+
export * from './errors.js';
|
|
3
|
+
export * from './knowledge.js';
|
|
4
|
+
export { MemoryProvider } from './providers/memory.js';
|
|
5
|
+
export type { MemoryProviderOptions } from './providers/memory.js';
|
|
6
|
+
export { PersistentKnowledgeProvider } from './providers/persistent.js';
|
|
7
|
+
export type { PersistentKnowledgeProviderOptions } from './providers/persistent.js';
|
|
8
|
+
export { MarkdownSource } from './sources/markdown.js';
|
|
9
|
+
export type { MarkdownSourceOptions } from './sources/markdown.js';
|
|
10
|
+
export { OllamaEmbedder } from './embedders/ollama.js';
|
|
11
|
+
export type { OllamaEmbedderOptions } from './embedders/ollama.js';
|
|
12
|
+
export { OpenAIEmbedder } from './embedders/openai.js';
|
|
13
|
+
export type { OpenAIEmbedderOptions } from './embedders/openai.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAEpF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.OpenAIEmbedder = exports.OllamaEmbedder = exports.MarkdownSource = exports.PersistentKnowledgeProvider = exports.MemoryProvider = void 0;
|
|
18
|
+
__exportStar(require("./interfaces.js"), exports);
|
|
19
|
+
__exportStar(require("./errors.js"), exports);
|
|
20
|
+
__exportStar(require("./knowledge.js"), exports);
|
|
21
|
+
var memory_js_1 = require("./providers/memory.js");
|
|
22
|
+
Object.defineProperty(exports, "MemoryProvider", { enumerable: true, get: function () { return memory_js_1.MemoryProvider; } });
|
|
23
|
+
var persistent_js_1 = require("./providers/persistent.js");
|
|
24
|
+
Object.defineProperty(exports, "PersistentKnowledgeProvider", { enumerable: true, get: function () { return persistent_js_1.PersistentKnowledgeProvider; } });
|
|
25
|
+
var markdown_js_1 = require("./sources/markdown.js");
|
|
26
|
+
Object.defineProperty(exports, "MarkdownSource", { enumerable: true, get: function () { return markdown_js_1.MarkdownSource; } });
|
|
27
|
+
var ollama_js_1 = require("./embedders/ollama.js");
|
|
28
|
+
Object.defineProperty(exports, "OllamaEmbedder", { enumerable: true, get: function () { return ollama_js_1.OllamaEmbedder; } });
|
|
29
|
+
var openai_js_1 = require("./embedders/openai.js");
|
|
30
|
+
Object.defineProperty(exports, "OpenAIEmbedder", { enumerable: true, get: function () { return openai_js_1.OpenAIEmbedder; } });
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,8CAA4B;AAC5B,iDAA+B;AAE/B,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AAGvB,2DAAwE;AAA/D,4HAAA,2BAA2B,OAAA;AAGpC,qDAAuD;AAA9C,6GAAA,cAAc,OAAA;AAGvB,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AAGvB,mDAAuD;AAA9C,2GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface Chunk {
|
|
2
|
+
id: string;
|
|
3
|
+
content: string;
|
|
4
|
+
metadata: Record<string, unknown>;
|
|
5
|
+
vector?: number[];
|
|
6
|
+
}
|
|
7
|
+
export interface ChunkUpdate {
|
|
8
|
+
type: 'add' | 'update' | 'delete';
|
|
9
|
+
chunk: Chunk;
|
|
10
|
+
}
|
|
11
|
+
export interface QueryOptions {
|
|
12
|
+
limit?: number;
|
|
13
|
+
threshold?: number;
|
|
14
|
+
filter?: MetadataFilter;
|
|
15
|
+
includeMetadata?: boolean;
|
|
16
|
+
includeVectors?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface MetadataFilter {
|
|
19
|
+
[key: string]: string | number | boolean | {
|
|
20
|
+
$in: unknown[];
|
|
21
|
+
} | {
|
|
22
|
+
$gt: number;
|
|
23
|
+
} | {
|
|
24
|
+
$lt: number;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface QueryResult {
|
|
28
|
+
chunk: Chunk;
|
|
29
|
+
score: number;
|
|
30
|
+
distance?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface KnowledgeProvider {
|
|
33
|
+
add(chunks: Chunk[]): Promise<void>;
|
|
34
|
+
query(queryVector: number[], options?: QueryOptions): Promise<QueryResult[]>;
|
|
35
|
+
delete(ids: string[]): Promise<void>;
|
|
36
|
+
clear(): Promise<void>;
|
|
37
|
+
validateDimensions(dimensions: number): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export interface KnowledgeSource {
|
|
40
|
+
load(): AsyncIterable<Chunk>;
|
|
41
|
+
watch?(): AsyncIterable<ChunkUpdate>;
|
|
42
|
+
}
|
|
43
|
+
export interface Embedder {
|
|
44
|
+
embed(text: string): Promise<number[]>;
|
|
45
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
46
|
+
readonly dimensions: number;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GACpC;QAAE,GAAG,EAAE,OAAO,EAAE,CAAA;KAAE,GAClB;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GACf;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""}
|