@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,215 @@
|
|
|
1
|
+
import { normalizeRAGConfig } from './index.js';
|
|
2
|
+
import { createEmbeddingProvider } from '../providers/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* RAG plugin for OpenSaas Stack
|
|
5
|
+
* Provides vector embeddings, semantic search, and automatic embedding generation
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { config, list } from '@opensaas/stack-core'
|
|
10
|
+
* import { text } from '@opensaas/stack-core/fields'
|
|
11
|
+
* import { ragPlugin, openaiEmbeddings, pgvectorStorage } from '@opensaas/stack-rag'
|
|
12
|
+
* import { embedding } from '@opensaas/stack-rag/fields'
|
|
13
|
+
*
|
|
14
|
+
* export default config({
|
|
15
|
+
* plugins: [
|
|
16
|
+
* ragPlugin({
|
|
17
|
+
* provider: openaiEmbeddings({ apiKey: process.env.OPENAI_API_KEY }),
|
|
18
|
+
* storage: pgvectorStorage()
|
|
19
|
+
* })
|
|
20
|
+
* ],
|
|
21
|
+
* db: { provider: 'postgresql', url: process.env.DATABASE_URL },
|
|
22
|
+
* lists: {
|
|
23
|
+
* Article: list({
|
|
24
|
+
* fields: {
|
|
25
|
+
* content: text(),
|
|
26
|
+
* contentEmbedding: embedding({
|
|
27
|
+
* sourceField: 'content',
|
|
28
|
+
* provider: 'openai',
|
|
29
|
+
* autoGenerate: true
|
|
30
|
+
* })
|
|
31
|
+
* }
|
|
32
|
+
* })
|
|
33
|
+
* }
|
|
34
|
+
* })
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function ragPlugin(config) {
|
|
38
|
+
const normalized = normalizeRAGConfig(config);
|
|
39
|
+
return {
|
|
40
|
+
name: 'rag',
|
|
41
|
+
version: '0.1.0',
|
|
42
|
+
init: async (context) => {
|
|
43
|
+
// Find all embedding fields with autoGenerate enabled
|
|
44
|
+
for (const [listName, listConfig] of Object.entries(context.config.lists)) {
|
|
45
|
+
for (const [fieldName, fieldConfig] of Object.entries(listConfig.fields)) {
|
|
46
|
+
if (fieldConfig.type === 'embedding' &&
|
|
47
|
+
fieldConfig.autoGenerate) {
|
|
48
|
+
const embeddingConfig = fieldConfig;
|
|
49
|
+
const sourceField = embeddingConfig.sourceField;
|
|
50
|
+
if (!sourceField) {
|
|
51
|
+
throw new Error(`RAG plugin: Field "${listName}.${fieldName}" has autoGenerate enabled but no sourceField specified`);
|
|
52
|
+
}
|
|
53
|
+
// Inject afterOperation hook to auto-generate embeddings
|
|
54
|
+
context.extendList(listName, {
|
|
55
|
+
hooks: {
|
|
56
|
+
resolveInput: async (args) => {
|
|
57
|
+
// Skip if item is missing
|
|
58
|
+
if (!args.resolvedData)
|
|
59
|
+
throw new Error('RAG plugin: Missing resolvedData in resolveInput hook');
|
|
60
|
+
const sourceText = args.resolvedData[sourceField];
|
|
61
|
+
const currentEmbedding = args.resolvedData[fieldName];
|
|
62
|
+
// Skip if source text is empty
|
|
63
|
+
if (!sourceText)
|
|
64
|
+
return args.resolvedData;
|
|
65
|
+
// Check if we need to regenerate (source text changed)
|
|
66
|
+
const sourceHash = await hashText(sourceText);
|
|
67
|
+
if (currentEmbedding && currentEmbedding.metadata.sourceHash === sourceHash) {
|
|
68
|
+
// Source text hasn't changed, skip regeneration
|
|
69
|
+
return args.resolvedData;
|
|
70
|
+
}
|
|
71
|
+
// Get provider for this field
|
|
72
|
+
const providerName = embeddingConfig.provider || 'default';
|
|
73
|
+
const providerConfig = providerName === 'default'
|
|
74
|
+
? normalized.provider
|
|
75
|
+
: normalized.providers[providerName] || normalized.provider;
|
|
76
|
+
if (!providerConfig) {
|
|
77
|
+
console.warn(`RAG plugin: No provider configured for field "${listName}.${fieldName}"`);
|
|
78
|
+
return args.resolvedData;
|
|
79
|
+
}
|
|
80
|
+
// Generate embedding
|
|
81
|
+
const provider = createEmbeddingProvider(providerConfig);
|
|
82
|
+
const vector = await provider.embed(sourceText);
|
|
83
|
+
return {
|
|
84
|
+
...args.resolvedData,
|
|
85
|
+
[fieldName]: {
|
|
86
|
+
vector,
|
|
87
|
+
metadata: {
|
|
88
|
+
model: provider.model,
|
|
89
|
+
provider: provider.type,
|
|
90
|
+
dimensions: provider.dimensions,
|
|
91
|
+
generatedAt: new Date().toISOString(),
|
|
92
|
+
sourceHash,
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Register MCP tools if enabled
|
|
103
|
+
if (normalized.enableMcpTools && context.registerMcpTool) {
|
|
104
|
+
// Find all lists with embedding fields
|
|
105
|
+
for (const [listName, listConfig] of Object.entries(context.config.lists)) {
|
|
106
|
+
const embeddingFields = Object.entries(listConfig.fields).filter(([, fieldConfig]) => fieldConfig.type === 'embedding');
|
|
107
|
+
if (embeddingFields.length > 0) {
|
|
108
|
+
// Register semantic search tool for this list
|
|
109
|
+
const toolName = `semantic_search_${listName.toLowerCase()}`;
|
|
110
|
+
context.registerMcpTool({
|
|
111
|
+
name: toolName,
|
|
112
|
+
description: `Search ${listName} using natural language (semantic search)`,
|
|
113
|
+
inputSchema: {
|
|
114
|
+
type: 'object',
|
|
115
|
+
properties: {
|
|
116
|
+
query: { type: 'string', description: 'Natural language search query' },
|
|
117
|
+
limit: { type: 'number', description: 'Maximum results', default: 10 },
|
|
118
|
+
minScore: {
|
|
119
|
+
type: 'number',
|
|
120
|
+
description: 'Minimum similarity score (0-1)',
|
|
121
|
+
default: 0.5,
|
|
122
|
+
},
|
|
123
|
+
field: {
|
|
124
|
+
type: 'string',
|
|
125
|
+
description: 'Embedding field to search',
|
|
126
|
+
default: embeddingFields[0][0],
|
|
127
|
+
enum: embeddingFields.map(([name]) => name),
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
required: ['query'],
|
|
131
|
+
},
|
|
132
|
+
handler: async ({ input, context }) => {
|
|
133
|
+
const { query, limit = 10, minScore = 0.5, field = embeddingFields[0][0] } = input;
|
|
134
|
+
// Get provider
|
|
135
|
+
const providerConfig = normalized.provider;
|
|
136
|
+
if (!providerConfig) {
|
|
137
|
+
throw new Error('RAG plugin: No default provider configured');
|
|
138
|
+
}
|
|
139
|
+
// Generate query embedding
|
|
140
|
+
const provider = createEmbeddingProvider(providerConfig);
|
|
141
|
+
const queryVector = await provider.embed(query);
|
|
142
|
+
// Search using configured storage backend
|
|
143
|
+
// Note: This is a simplified implementation
|
|
144
|
+
// Full implementation would use VectorStorage interface
|
|
145
|
+
const dbKey = listName.charAt(0).toLowerCase() + listName.slice(1);
|
|
146
|
+
const allItems = await context.db[dbKey].findMany();
|
|
147
|
+
// Calculate cosine similarity for each item
|
|
148
|
+
const results = allItems
|
|
149
|
+
.map((item) => {
|
|
150
|
+
const embedding = item[field];
|
|
151
|
+
if (!embedding || !embedding.vector)
|
|
152
|
+
return null;
|
|
153
|
+
const score = cosineSimilarity(queryVector, embedding.vector);
|
|
154
|
+
return { item, score };
|
|
155
|
+
})
|
|
156
|
+
.filter((r) => r !== null && r.score >= minScore)
|
|
157
|
+
.sort((a, b) => b.score - a.score)
|
|
158
|
+
.slice(0, limit);
|
|
159
|
+
return {
|
|
160
|
+
results: results.map((r) => {
|
|
161
|
+
// Ensure item is an object before spreading
|
|
162
|
+
const item = r.item;
|
|
163
|
+
return {
|
|
164
|
+
...item,
|
|
165
|
+
_similarity: r.score,
|
|
166
|
+
};
|
|
167
|
+
}),
|
|
168
|
+
count: results.length,
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Store RAG config for runtime access
|
|
176
|
+
// Access at runtime via: config._pluginData.rag
|
|
177
|
+
context.setPluginData('rag', normalized);
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Hash text using SHA-256 for change detection
|
|
183
|
+
*/
|
|
184
|
+
async function hashText(text) {
|
|
185
|
+
// Simple hash implementation
|
|
186
|
+
// In production, could use crypto.subtle.digest for better performance
|
|
187
|
+
let hash = 0;
|
|
188
|
+
for (let i = 0; i < text.length; i++) {
|
|
189
|
+
const char = text.charCodeAt(i);
|
|
190
|
+
hash = (hash << 5) - hash + char;
|
|
191
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
192
|
+
}
|
|
193
|
+
return hash.toString(36);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Calculate cosine similarity between two vectors
|
|
197
|
+
*/
|
|
198
|
+
function cosineSimilarity(a, b) {
|
|
199
|
+
if (a.length !== b.length) {
|
|
200
|
+
throw new Error('Vectors must have same dimensions');
|
|
201
|
+
}
|
|
202
|
+
let dotProduct = 0;
|
|
203
|
+
let normA = 0;
|
|
204
|
+
let normB = 0;
|
|
205
|
+
for (let i = 0; i < a.length; i++) {
|
|
206
|
+
dotProduct += a[i] * b[i];
|
|
207
|
+
normA += a[i] * a[i];
|
|
208
|
+
normB += b[i] * b[i];
|
|
209
|
+
}
|
|
210
|
+
const denominator = Math.sqrt(normA) * Math.sqrt(normB);
|
|
211
|
+
if (denominator === 0)
|
|
212
|
+
return 0;
|
|
213
|
+
return dotProduct / denominator;
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.test.d.ts","sourceRoot":"","sources":["../../src/config/plugin.test.ts"],"names":[],"mappings":""}
|