@opensaas/stack-rag 0.1.6
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/.turbo/turbo-build.log +4 -0
- package/CHANGELOG.md +10 -0
- package/CLAUDE.md +565 -0
- package/LICENSE +21 -0
- package/README.md +406 -0
- package/dist/config/index.d.ts +63 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +94 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/plugin.d.ts +38 -0
- package/dist/config/plugin.d.ts.map +1 -0
- package/dist/config/plugin.js +215 -0
- package/dist/config/plugin.js.map +1 -0
- package/dist/config/plugin.test.d.ts +2 -0
- package/dist/config/plugin.test.d.ts.map +1 -0
- package/dist/config/plugin.test.js +554 -0
- package/dist/config/plugin.test.js.map +1 -0
- package/dist/config/types.d.ts +249 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +5 -0
- package/dist/config/types.js.map +1 -0
- package/dist/fields/embedding.d.ts +85 -0
- package/dist/fields/embedding.d.ts.map +1 -0
- package/dist/fields/embedding.js +81 -0
- package/dist/fields/embedding.js.map +1 -0
- package/dist/fields/embedding.test.d.ts +2 -0
- package/dist/fields/embedding.test.d.ts.map +1 -0
- package/dist/fields/embedding.test.js +323 -0
- package/dist/fields/embedding.test.js.map +1 -0
- package/dist/fields/index.d.ts +6 -0
- package/dist/fields/index.d.ts.map +1 -0
- package/dist/fields/index.js +5 -0
- package/dist/fields/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +19 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +18 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/providers/index.d.ts +38 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +68 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama.d.ts +49 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +151 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +41 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +126 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/providers.test.d.ts +2 -0
- package/dist/providers/providers.test.d.ts.map +1 -0
- package/dist/providers/providers.test.js +224 -0
- package/dist/providers/providers.test.js.map +1 -0
- package/dist/providers/types.d.ts +88 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/runtime/batch.d.ts +183 -0
- package/dist/runtime/batch.d.ts.map +1 -0
- package/dist/runtime/batch.js +240 -0
- package/dist/runtime/batch.js.map +1 -0
- package/dist/runtime/batch.test.d.ts +2 -0
- package/dist/runtime/batch.test.d.ts.map +1 -0
- package/dist/runtime/batch.test.js +251 -0
- package/dist/runtime/batch.test.js.map +1 -0
- package/dist/runtime/chunking.d.ts +42 -0
- package/dist/runtime/chunking.d.ts.map +1 -0
- package/dist/runtime/chunking.js +264 -0
- package/dist/runtime/chunking.js.map +1 -0
- package/dist/runtime/chunking.test.d.ts +2 -0
- package/dist/runtime/chunking.test.d.ts.map +1 -0
- package/dist/runtime/chunking.test.js +212 -0
- package/dist/runtime/chunking.test.js.map +1 -0
- package/dist/runtime/embeddings.d.ts +147 -0
- package/dist/runtime/embeddings.d.ts.map +1 -0
- package/dist/runtime/embeddings.js +201 -0
- package/dist/runtime/embeddings.js.map +1 -0
- package/dist/runtime/embeddings.test.d.ts +2 -0
- package/dist/runtime/embeddings.test.d.ts.map +1 -0
- package/dist/runtime/embeddings.test.js +366 -0
- package/dist/runtime/embeddings.test.js.map +1 -0
- package/dist/runtime/index.d.ts +14 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +18 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/search.d.ts +135 -0
- package/dist/runtime/search.d.ts.map +1 -0
- package/dist/runtime/search.js +101 -0
- package/dist/runtime/search.js.map +1 -0
- package/dist/storage/index.d.ts +41 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +73 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/json.d.ts +34 -0
- package/dist/storage/json.d.ts.map +1 -0
- package/dist/storage/json.js +82 -0
- package/dist/storage/json.js.map +1 -0
- package/dist/storage/pgvector.d.ts +53 -0
- package/dist/storage/pgvector.d.ts.map +1 -0
- package/dist/storage/pgvector.js +168 -0
- package/dist/storage/pgvector.js.map +1 -0
- package/dist/storage/sqlite-vss.d.ts +49 -0
- package/dist/storage/sqlite-vss.d.ts.map +1 -0
- package/dist/storage/sqlite-vss.js +148 -0
- package/dist/storage/sqlite-vss.js.map +1 -0
- package/dist/storage/storage.test.d.ts +2 -0
- package/dist/storage/storage.test.d.ts.map +1 -0
- package/dist/storage/storage.test.js +440 -0
- package/dist/storage/storage.test.js.map +1 -0
- package/dist/storage/types.d.ts +79 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +49 -0
- package/dist/storage/types.js.map +1 -0
- package/package.json +82 -0
- package/src/config/index.ts +116 -0
- package/src/config/plugin.test.ts +664 -0
- package/src/config/plugin.ts +257 -0
- package/src/config/types.ts +283 -0
- package/src/fields/embedding.test.ts +408 -0
- package/src/fields/embedding.ts +150 -0
- package/src/fields/index.ts +6 -0
- package/src/index.ts +33 -0
- package/src/mcp/index.ts +21 -0
- package/src/providers/index.ts +81 -0
- package/src/providers/ollama.ts +186 -0
- package/src/providers/openai.ts +161 -0
- package/src/providers/providers.test.ts +275 -0
- package/src/providers/types.ts +100 -0
- package/src/runtime/batch.test.ts +332 -0
- package/src/runtime/batch.ts +424 -0
- package/src/runtime/chunking.test.ts +258 -0
- package/src/runtime/chunking.ts +334 -0
- package/src/runtime/embeddings.test.ts +441 -0
- package/src/runtime/embeddings.ts +380 -0
- package/src/runtime/index.ts +51 -0
- package/src/runtime/search.ts +243 -0
- package/src/storage/index.ts +86 -0
- package/src/storage/json.ts +106 -0
- package/src/storage/pgvector.ts +206 -0
- package/src/storage/sqlite-vss.ts +193 -0
- package/src/storage/storage.test.ts +521 -0
- package/src/storage/types.ts +126 -0
- package/tsconfig.json +13 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/vitest.config.ts +18 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { embedding } from './embedding.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
describe('Embedding Field', () => {
|
|
5
|
+
describe('embedding field builder', () => {
|
|
6
|
+
it('should create embedding field with default options', () => {
|
|
7
|
+
const field = embedding();
|
|
8
|
+
expect(field.type).toBe('embedding');
|
|
9
|
+
expect(field.dimensions).toBe(1536); // Default OpenAI dimensions
|
|
10
|
+
expect(field.autoGenerate).toBe(false); // No sourceField
|
|
11
|
+
});
|
|
12
|
+
it('should create embedding field with custom dimensions', () => {
|
|
13
|
+
const field = embedding({ dimensions: 3072 });
|
|
14
|
+
expect(field.dimensions).toBe(3072);
|
|
15
|
+
});
|
|
16
|
+
it('should set autoGenerate to true when sourceField is provided', () => {
|
|
17
|
+
const field = embedding({ sourceField: 'content' });
|
|
18
|
+
expect(field.autoGenerate).toBe(true);
|
|
19
|
+
expect(field.sourceField).toBe('content');
|
|
20
|
+
});
|
|
21
|
+
it('should allow explicit autoGenerate override', () => {
|
|
22
|
+
const field = embedding({ sourceField: 'content', autoGenerate: false });
|
|
23
|
+
expect(field.autoGenerate).toBe(false);
|
|
24
|
+
expect(field.sourceField).toBe('content');
|
|
25
|
+
});
|
|
26
|
+
it('should support provider configuration', () => {
|
|
27
|
+
const field = embedding({ provider: 'openai' });
|
|
28
|
+
expect(field.provider).toBe('openai');
|
|
29
|
+
});
|
|
30
|
+
it('should support chunking configuration', () => {
|
|
31
|
+
const field = embedding({
|
|
32
|
+
sourceField: 'content',
|
|
33
|
+
chunking: {
|
|
34
|
+
strategy: 'recursive',
|
|
35
|
+
maxTokens: 500,
|
|
36
|
+
overlap: 50,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
expect(field.chunking).toEqual({
|
|
40
|
+
strategy: 'recursive',
|
|
41
|
+
maxTokens: 500,
|
|
42
|
+
overlap: 50,
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
it('should support UI configuration', () => {
|
|
46
|
+
const field = embedding({
|
|
47
|
+
ui: {
|
|
48
|
+
showVector: true,
|
|
49
|
+
showMetadata: true,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
expect(field.ui).toEqual({
|
|
53
|
+
showVector: true,
|
|
54
|
+
showMetadata: true,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe('getZodSchema', () => {
|
|
59
|
+
it('should generate valid Zod schema', () => {
|
|
60
|
+
const field = embedding({ dimensions: 3 });
|
|
61
|
+
const schema = field.getZodSchema('embedding', 'create');
|
|
62
|
+
expect(schema).toBeDefined();
|
|
63
|
+
expect(schema instanceof z.ZodType).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
it('should validate correct embedding structure', () => {
|
|
66
|
+
const field = embedding({ dimensions: 3 });
|
|
67
|
+
const schema = field.getZodSchema('embedding', 'create');
|
|
68
|
+
const validEmbedding = {
|
|
69
|
+
vector: [0.1, 0.2, 0.3],
|
|
70
|
+
metadata: {
|
|
71
|
+
model: 'text-embedding-3-small',
|
|
72
|
+
provider: 'openai',
|
|
73
|
+
dimensions: 3,
|
|
74
|
+
generatedAt: new Date().toISOString(),
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
expect(() => schema.parse(validEmbedding)).not.toThrow();
|
|
78
|
+
});
|
|
79
|
+
it('should accept null embedding', () => {
|
|
80
|
+
const field = embedding({ dimensions: 3 });
|
|
81
|
+
const schema = field.getZodSchema('embedding', 'create');
|
|
82
|
+
expect(() => schema.parse(null)).not.toThrow();
|
|
83
|
+
});
|
|
84
|
+
it('should accept undefined embedding', () => {
|
|
85
|
+
const field = embedding({ dimensions: 3 });
|
|
86
|
+
const schema = field.getZodSchema('embedding', 'create');
|
|
87
|
+
expect(() => schema.parse(undefined)).not.toThrow();
|
|
88
|
+
});
|
|
89
|
+
it('should reject incorrect vector dimensions', () => {
|
|
90
|
+
const field = embedding({ dimensions: 3 });
|
|
91
|
+
const schema = field.getZodSchema('embedding', 'create');
|
|
92
|
+
const invalidEmbedding = {
|
|
93
|
+
vector: [0.1, 0.2], // Only 2 dimensions, expected 3
|
|
94
|
+
metadata: {
|
|
95
|
+
model: 'test',
|
|
96
|
+
provider: 'test',
|
|
97
|
+
dimensions: 2,
|
|
98
|
+
generatedAt: new Date().toISOString(),
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
expect(() => schema.parse(invalidEmbedding)).toThrow(/exactly 3 dimensions/);
|
|
102
|
+
});
|
|
103
|
+
it('should validate metadata structure', () => {
|
|
104
|
+
const field = embedding({ dimensions: 3 });
|
|
105
|
+
const schema = field.getZodSchema('embedding', 'create');
|
|
106
|
+
const invalidEmbedding = {
|
|
107
|
+
vector: [0.1, 0.2, 0.3],
|
|
108
|
+
metadata: {
|
|
109
|
+
// Missing required fields
|
|
110
|
+
model: 'test',
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
expect(() => schema.parse(invalidEmbedding)).toThrow();
|
|
114
|
+
});
|
|
115
|
+
it('should accept optional sourceHash in metadata', () => {
|
|
116
|
+
const field = embedding({ dimensions: 3 });
|
|
117
|
+
const schema = field.getZodSchema('embedding', 'create');
|
|
118
|
+
const embeddingWithHash = {
|
|
119
|
+
vector: [0.1, 0.2, 0.3],
|
|
120
|
+
metadata: {
|
|
121
|
+
model: 'test',
|
|
122
|
+
provider: 'test',
|
|
123
|
+
dimensions: 3,
|
|
124
|
+
generatedAt: new Date().toISOString(),
|
|
125
|
+
sourceHash: 'abc123',
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
expect(() => schema.parse(embeddingWithHash)).not.toThrow();
|
|
129
|
+
});
|
|
130
|
+
it('should work for both create and update operations', () => {
|
|
131
|
+
const field = embedding({ dimensions: 3 });
|
|
132
|
+
const createSchema = field.getZodSchema('embedding', 'create');
|
|
133
|
+
const updateSchema = field.getZodSchema('embedding', 'update');
|
|
134
|
+
const validEmbedding = {
|
|
135
|
+
vector: [0.1, 0.2, 0.3],
|
|
136
|
+
metadata: {
|
|
137
|
+
model: 'test',
|
|
138
|
+
provider: 'test',
|
|
139
|
+
dimensions: 3,
|
|
140
|
+
generatedAt: new Date().toISOString(),
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
expect(() => createSchema.parse(validEmbedding)).not.toThrow();
|
|
144
|
+
expect(() => updateSchema.parse(validEmbedding)).not.toThrow();
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('getPrismaType', () => {
|
|
148
|
+
it('should return Json type', () => {
|
|
149
|
+
const field = embedding();
|
|
150
|
+
const prismaType = field.getPrismaType('embedding');
|
|
151
|
+
expect(prismaType.type).toBe('Json');
|
|
152
|
+
});
|
|
153
|
+
it('should return optional modifier', () => {
|
|
154
|
+
const field = embedding();
|
|
155
|
+
const prismaType = field.getPrismaType('embedding');
|
|
156
|
+
expect(prismaType.modifiers).toBe('?');
|
|
157
|
+
});
|
|
158
|
+
it('should work regardless of field options', () => {
|
|
159
|
+
const field1 = embedding();
|
|
160
|
+
const field2 = embedding({ dimensions: 3072, provider: 'openai' });
|
|
161
|
+
const type1 = field1.getPrismaType('embedding');
|
|
162
|
+
const type2 = field2.getPrismaType('embedding');
|
|
163
|
+
expect(type1).toEqual(type2);
|
|
164
|
+
expect(type1.type).toBe('Json');
|
|
165
|
+
expect(type1.modifiers).toBe('?');
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
describe('getTypeScriptType', () => {
|
|
169
|
+
it('should return StoredEmbedding type', () => {
|
|
170
|
+
const field = embedding();
|
|
171
|
+
const tsType = field.getTypeScriptType();
|
|
172
|
+
expect(tsType.type).toBe('StoredEmbedding | null');
|
|
173
|
+
});
|
|
174
|
+
it('should be optional', () => {
|
|
175
|
+
const field = embedding();
|
|
176
|
+
const tsType = field.getTypeScriptType();
|
|
177
|
+
expect(tsType.optional).toBe(true);
|
|
178
|
+
});
|
|
179
|
+
it('should work regardless of field options', () => {
|
|
180
|
+
const field1 = embedding();
|
|
181
|
+
const field2 = embedding({ dimensions: 3072, provider: 'openai' });
|
|
182
|
+
const type1 = field1.getTypeScriptType();
|
|
183
|
+
const type2 = field2.getTypeScriptType();
|
|
184
|
+
expect(type1).toEqual(type2);
|
|
185
|
+
expect(type1.type).toBe('StoredEmbedding | null');
|
|
186
|
+
expect(type1.optional).toBe(true);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
describe('Field configuration combinations', () => {
|
|
190
|
+
it('should support manual embedding storage', () => {
|
|
191
|
+
const field = embedding({
|
|
192
|
+
dimensions: 1536,
|
|
193
|
+
provider: 'openai',
|
|
194
|
+
});
|
|
195
|
+
expect(field.autoGenerate).toBe(false);
|
|
196
|
+
expect(field.sourceField).toBeUndefined();
|
|
197
|
+
expect(field.dimensions).toBe(1536);
|
|
198
|
+
expect(field.provider).toBe('openai');
|
|
199
|
+
});
|
|
200
|
+
it('should support automatic embedding generation', () => {
|
|
201
|
+
const field = embedding({
|
|
202
|
+
sourceField: 'content',
|
|
203
|
+
provider: 'openai',
|
|
204
|
+
dimensions: 1536,
|
|
205
|
+
autoGenerate: true,
|
|
206
|
+
});
|
|
207
|
+
expect(field.autoGenerate).toBe(true);
|
|
208
|
+
expect(field.sourceField).toBe('content');
|
|
209
|
+
expect(field.dimensions).toBe(1536);
|
|
210
|
+
expect(field.provider).toBe('openai');
|
|
211
|
+
});
|
|
212
|
+
it('should support chunking for long documents', () => {
|
|
213
|
+
const field = embedding({
|
|
214
|
+
sourceField: 'content',
|
|
215
|
+
chunking: {
|
|
216
|
+
strategy: 'recursive',
|
|
217
|
+
maxTokens: 500,
|
|
218
|
+
overlap: 50,
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
expect(field.chunking?.strategy).toBe('recursive');
|
|
222
|
+
expect(field.chunking?.maxTokens).toBe(500);
|
|
223
|
+
expect(field.chunking?.overlap).toBe(50);
|
|
224
|
+
});
|
|
225
|
+
it('should support multiple providers via provider name', () => {
|
|
226
|
+
const openaiField = embedding({ provider: 'openai' });
|
|
227
|
+
const ollamaField = embedding({ provider: 'ollama' });
|
|
228
|
+
expect(openaiField.provider).toBe('openai');
|
|
229
|
+
expect(ollamaField.provider).toBe('ollama');
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
describe('Field type conformance', () => {
|
|
233
|
+
it('should conform to BaseFieldConfig interface', () => {
|
|
234
|
+
const field = embedding();
|
|
235
|
+
expect(field).toHaveProperty('type');
|
|
236
|
+
expect(field).toHaveProperty('getZodSchema');
|
|
237
|
+
expect(field).toHaveProperty('getPrismaType');
|
|
238
|
+
expect(field).toHaveProperty('getTypeScriptType');
|
|
239
|
+
});
|
|
240
|
+
it('should have all required builder methods', () => {
|
|
241
|
+
const field = embedding();
|
|
242
|
+
expect(typeof field.getZodSchema).toBe('function');
|
|
243
|
+
expect(typeof field.getPrismaType).toBe('function');
|
|
244
|
+
expect(typeof field.getTypeScriptType).toBe('function');
|
|
245
|
+
});
|
|
246
|
+
it('should return consistent types across methods', () => {
|
|
247
|
+
const field = embedding({ dimensions: 1536 });
|
|
248
|
+
const zodSchema = field.getZodSchema('embedding', 'create');
|
|
249
|
+
const prismaType = field.getPrismaType('embedding');
|
|
250
|
+
const tsType = field.getTypeScriptType();
|
|
251
|
+
// All methods should be callable and return valid results
|
|
252
|
+
expect(zodSchema).toBeDefined();
|
|
253
|
+
expect(prismaType).toBeDefined();
|
|
254
|
+
expect(tsType).toBeDefined();
|
|
255
|
+
// Types should be consistent (Json in Prisma, StoredEmbedding in TS)
|
|
256
|
+
expect(prismaType.type).toBe('Json');
|
|
257
|
+
expect(tsType.type).toContain('StoredEmbedding');
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
describe('UI configuration', () => {
|
|
261
|
+
it('should default to hiding vector display', () => {
|
|
262
|
+
const field = embedding();
|
|
263
|
+
expect(field.ui?.showVector).toBeUndefined();
|
|
264
|
+
});
|
|
265
|
+
it('should allow showing vector in UI', () => {
|
|
266
|
+
const field = embedding({
|
|
267
|
+
ui: { showVector: true },
|
|
268
|
+
});
|
|
269
|
+
expect(field.ui?.showVector).toBe(true);
|
|
270
|
+
});
|
|
271
|
+
it('should default to showing metadata', () => {
|
|
272
|
+
const field = embedding();
|
|
273
|
+
expect(field.ui?.showMetadata).toBeUndefined();
|
|
274
|
+
});
|
|
275
|
+
it('should allow customizing metadata display', () => {
|
|
276
|
+
const field = embedding({
|
|
277
|
+
ui: { showMetadata: false },
|
|
278
|
+
});
|
|
279
|
+
expect(field.ui?.showMetadata).toBe(false);
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
describe('Edge cases', () => {
|
|
283
|
+
it('should handle very large dimensions', () => {
|
|
284
|
+
const field = embedding({ dimensions: 10000 });
|
|
285
|
+
expect(field.dimensions).toBe(10000);
|
|
286
|
+
const schema = field.getZodSchema('embedding', 'create');
|
|
287
|
+
const largeVector = Array(10000).fill(0.1);
|
|
288
|
+
const validEmbedding = {
|
|
289
|
+
vector: largeVector,
|
|
290
|
+
metadata: {
|
|
291
|
+
model: 'test',
|
|
292
|
+
provider: 'test',
|
|
293
|
+
dimensions: 10000,
|
|
294
|
+
generatedAt: new Date().toISOString(),
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
expect(() => schema.parse(validEmbedding)).not.toThrow();
|
|
298
|
+
});
|
|
299
|
+
it('should handle minimum dimensions', () => {
|
|
300
|
+
const field = embedding({ dimensions: 1 });
|
|
301
|
+
expect(field.dimensions).toBe(1);
|
|
302
|
+
const schema = field.getZodSchema('embedding', 'create');
|
|
303
|
+
const validEmbedding = {
|
|
304
|
+
vector: [0.5],
|
|
305
|
+
metadata: {
|
|
306
|
+
model: 'test',
|
|
307
|
+
provider: 'test',
|
|
308
|
+
dimensions: 1,
|
|
309
|
+
generatedAt: new Date().toISOString(),
|
|
310
|
+
},
|
|
311
|
+
};
|
|
312
|
+
expect(() => schema.parse(validEmbedding)).not.toThrow();
|
|
313
|
+
});
|
|
314
|
+
it('should handle empty sourceField gracefully', () => {
|
|
315
|
+
const field = embedding({ sourceField: '' });
|
|
316
|
+
expect(field.sourceField).toBe('');
|
|
317
|
+
// Empty string is truthy (it's a defined value), so autoGenerate will be true
|
|
318
|
+
// unless explicitly set to false
|
|
319
|
+
expect(field.autoGenerate).toBe(true);
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
//# sourceMappingURL=embedding.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.test.js","sourceRoot":"","sources":["../../src/fields/embedding.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @opensaas/stack-rag
|
|
3
|
+
* RAG and AI embeddings integration for OpenSaas Stack
|
|
4
|
+
*/
|
|
5
|
+
export { openaiEmbeddings, ollamaEmbeddings, pgvectorStorage, sqliteVssStorage, jsonStorage, } from './config/index.js';
|
|
6
|
+
export { ragPlugin } from './config/plugin.js';
|
|
7
|
+
export type { RAGConfig, NormalizedRAGConfig, EmbeddingProviderConfig, OpenAIEmbeddingConfig, OllamaEmbeddingConfig, VectorStorageConfig, PgVectorStorageConfig, SqliteVssStorageConfig, JsonStorageConfig, ChunkingConfig, ChunkingStrategy, EmbeddingMetadata, StoredEmbedding, SearchResult, } from './config/types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,GACb,MAAM,mBAAmB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @opensaas/stack-rag
|
|
3
|
+
* RAG and AI embeddings integration for OpenSaas Stack
|
|
4
|
+
*/
|
|
5
|
+
// Config exports
|
|
6
|
+
export { openaiEmbeddings, ollamaEmbeddings, pgvectorStorage, sqliteVssStorage, jsonStorage, } from './config/index.js';
|
|
7
|
+
// Plugin export
|
|
8
|
+
export { ragPlugin } from './config/plugin.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iBAAiB;AACjB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAE1B,gBAAgB;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) integration for RAG
|
|
3
|
+
*
|
|
4
|
+
* MCP tools for semantic search are automatically generated by the ragPlugin.
|
|
5
|
+
* This export is provided for future extensibility and custom MCP tool generation.
|
|
6
|
+
*/
|
|
7
|
+
export type { SearchResult } from '../config/types.js';
|
|
8
|
+
export type { SemanticSearchOptions } from '../runtime/search.js';
|
|
9
|
+
/**
|
|
10
|
+
* MCP tools are automatically generated by ragPlugin when:
|
|
11
|
+
* - MCP is enabled in main config
|
|
12
|
+
* - ragPlugin has enableMcpTools: true (default)
|
|
13
|
+
*
|
|
14
|
+
* Generated tools:
|
|
15
|
+
* - semantic_search_{listKey} - Search by natural language query
|
|
16
|
+
*
|
|
17
|
+
* See packages/rag/src/config/plugin.ts for implementation details.
|
|
18
|
+
*/
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEjE;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) integration for RAG
|
|
3
|
+
*
|
|
4
|
+
* MCP tools for semantic search are automatically generated by the ragPlugin.
|
|
5
|
+
* This export is provided for future extensibility and custom MCP tool generation.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
/**
|
|
9
|
+
* MCP tools are automatically generated by ragPlugin when:
|
|
10
|
+
* - MCP is enabled in main config
|
|
11
|
+
* - ragPlugin has enableMcpTools: true (default)
|
|
12
|
+
*
|
|
13
|
+
* Generated tools:
|
|
14
|
+
* - semantic_search_{listKey} - Search by natural language query
|
|
15
|
+
*
|
|
16
|
+
* See packages/rag/src/config/plugin.ts for implementation details.
|
|
17
|
+
*/
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAMH;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { EmbeddingProvider } from './types.js';
|
|
2
|
+
import type { EmbeddingProviderConfig } from '../config/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Register a custom embedding provider factory
|
|
5
|
+
* Use this to add support for custom embedding providers
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { registerEmbeddingProvider } from '@opensaas/stack-rag/providers'
|
|
10
|
+
*
|
|
11
|
+
* registerEmbeddingProvider('custom', (config) => {
|
|
12
|
+
* return new CustomEmbeddingProvider(config)
|
|
13
|
+
* })
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerEmbeddingProvider(type: string, factory: (config: EmbeddingProviderConfig) => EmbeddingProvider): void;
|
|
17
|
+
/**
|
|
18
|
+
* Create an embedding provider instance from configuration
|
|
19
|
+
* Automatically selects the correct provider based on config.type
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { createEmbeddingProvider } from '@opensaas/stack-rag/providers'
|
|
24
|
+
*
|
|
25
|
+
* const provider = createEmbeddingProvider({
|
|
26
|
+
* type: 'openai',
|
|
27
|
+
* apiKey: process.env.OPENAI_API_KEY!,
|
|
28
|
+
* model: 'text-embedding-3-small'
|
|
29
|
+
* })
|
|
30
|
+
*
|
|
31
|
+
* const embedding = await provider.embed('Hello world')
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function createEmbeddingProvider(config: EmbeddingProviderConfig): EmbeddingProvider;
|
|
35
|
+
export * from './types.js';
|
|
36
|
+
export { OpenAIEmbeddingProvider, createOpenAIProvider } from './openai.js';
|
|
37
|
+
export { OllamaEmbeddingProvider, createOllamaProvider } from './ollama.js';
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AA0BjE;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,iBAAiB,GAC9D,IAAI,CAEN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAW1F;AAGD,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createOpenAIProvider } from './openai.js';
|
|
2
|
+
import { createOllamaProvider } from './ollama.js';
|
|
3
|
+
/**
|
|
4
|
+
* Provider factory registry
|
|
5
|
+
* Maps provider types to factory functions
|
|
6
|
+
*/
|
|
7
|
+
const providerFactories = new Map();
|
|
8
|
+
/**
|
|
9
|
+
* Register the built-in providers
|
|
10
|
+
*/
|
|
11
|
+
providerFactories.set('openai', (config) => {
|
|
12
|
+
if (config.type !== 'openai') {
|
|
13
|
+
throw new Error('Invalid config type for OpenAI provider');
|
|
14
|
+
}
|
|
15
|
+
return createOpenAIProvider(config);
|
|
16
|
+
});
|
|
17
|
+
providerFactories.set('ollama', (config) => {
|
|
18
|
+
if (config.type !== 'ollama') {
|
|
19
|
+
throw new Error('Invalid config type for Ollama provider');
|
|
20
|
+
}
|
|
21
|
+
return createOllamaProvider(config);
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Register a custom embedding provider factory
|
|
25
|
+
* Use this to add support for custom embedding providers
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import { registerEmbeddingProvider } from '@opensaas/stack-rag/providers'
|
|
30
|
+
*
|
|
31
|
+
* registerEmbeddingProvider('custom', (config) => {
|
|
32
|
+
* return new CustomEmbeddingProvider(config)
|
|
33
|
+
* })
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function registerEmbeddingProvider(type, factory) {
|
|
37
|
+
providerFactories.set(type, factory);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create an embedding provider instance from configuration
|
|
41
|
+
* Automatically selects the correct provider based on config.type
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* import { createEmbeddingProvider } from '@opensaas/stack-rag/providers'
|
|
46
|
+
*
|
|
47
|
+
* const provider = createEmbeddingProvider({
|
|
48
|
+
* type: 'openai',
|
|
49
|
+
* apiKey: process.env.OPENAI_API_KEY!,
|
|
50
|
+
* model: 'text-embedding-3-small'
|
|
51
|
+
* })
|
|
52
|
+
*
|
|
53
|
+
* const embedding = await provider.embed('Hello world')
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export function createEmbeddingProvider(config) {
|
|
57
|
+
const factory = providerFactories.get(config.type);
|
|
58
|
+
if (!factory) {
|
|
59
|
+
throw new Error(`Unknown embedding provider type: ${config.type}. ` +
|
|
60
|
+
`Available providers: ${Array.from(providerFactories.keys()).join(', ')}`);
|
|
61
|
+
}
|
|
62
|
+
return factory(config);
|
|
63
|
+
}
|
|
64
|
+
// Export types and individual providers
|
|
65
|
+
export * from './types.js';
|
|
66
|
+
export { OpenAIEmbeddingProvider, createOpenAIProvider } from './openai.js';
|
|
67
|
+
export { OllamaEmbeddingProvider, createOllamaProvider } from './ollama.js';
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD;;;GAGG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkE,CAAA;AAEnG;;GAEG;AACH,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;IACzC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,oBAAoB,CAAC,MAA4D,CAAC,CAAA;AAC3F,CAAC,CAAC,CAAA;AACF,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;IACzC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,oBAAoB,CAAC,MAA4D,CAAC,CAAA;AAC3F,CAAC,CAAC,CAAA;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,OAA+D;IAE/D,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAA+B;IACrE,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAElD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,oCAAoC,MAAM,CAAC,IAAI,IAAI;YACjD,wBAAwB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAA;IACH,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,wCAAwC;AACxC,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { EmbeddingProvider } from './types.js';
|
|
2
|
+
import type { OllamaEmbeddingConfig } from '../config/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Ollama embedding provider
|
|
5
|
+
* Uses local Ollama instance for embedding generation
|
|
6
|
+
*/
|
|
7
|
+
export declare class OllamaEmbeddingProvider implements EmbeddingProvider {
|
|
8
|
+
readonly type = "ollama";
|
|
9
|
+
readonly model: string;
|
|
10
|
+
dimensions: number;
|
|
11
|
+
private baseURL;
|
|
12
|
+
private dimensionsInitialized;
|
|
13
|
+
constructor(config: OllamaEmbeddingConfig);
|
|
14
|
+
/**
|
|
15
|
+
* Initialize dimensions by generating a test embedding
|
|
16
|
+
*/
|
|
17
|
+
private initializeDimensions;
|
|
18
|
+
/**
|
|
19
|
+
* Make HTTP request to Ollama API
|
|
20
|
+
*/
|
|
21
|
+
private makeRequest;
|
|
22
|
+
/**
|
|
23
|
+
* Generate embedding for a single text
|
|
24
|
+
*/
|
|
25
|
+
embed(text: string): Promise<number[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Generate embeddings for multiple texts in a batch
|
|
28
|
+
* Note: Ollama doesn't have native batch API, so we make parallel requests
|
|
29
|
+
*/
|
|
30
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create an Ollama embedding provider instance
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { createOllamaProvider } from '@opensaas/stack-rag/providers'
|
|
38
|
+
*
|
|
39
|
+
* const provider = createOllamaProvider({
|
|
40
|
+
* type: 'ollama',
|
|
41
|
+
* baseURL: 'http://localhost:11434',
|
|
42
|
+
* model: 'nomic-embed-text'
|
|
43
|
+
* })
|
|
44
|
+
*
|
|
45
|
+
* const embedding = await provider.embed('Hello world')
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function createOllamaProvider(config: OllamaEmbeddingConfig): OllamaEmbeddingProvider;
|
|
49
|
+
//# sourceMappingURL=ollama.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAa/D;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,QAAQ,CAAC,IAAI,YAAW;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAI;IAEtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,qBAAqB,CAAQ;gBAEzB,MAAM,EAAE,qBAAqB;IAUzC;;OAEG;YACW,oBAAoB;IAgBlC;;OAEG;YACW,WAAW;IA0BzB;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuB5C;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAmDvD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,GAAG,uBAAuB,CAE3F"}
|