@retrivora-ai/rag-engine 1.1.0 → 1.1.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/dist/{QdrantProvider-WWXFX2XF.mjs → QdrantProvider-RLJTNGPY.mjs} +1 -1
- package/dist/{RagConfig-DVovvPmd.d.mts → RagConfig-FyMB_UG6.d.mts} +1 -1
- package/dist/{RagConfig-DVovvPmd.d.ts → RagConfig-FyMB_UG6.d.ts} +1 -1
- package/dist/{chunk-65S4BQL2.mjs → chunk-PSFPZXHX.mjs} +13 -6
- package/dist/{chunk-G2LVK46T.mjs → chunk-XEWWAHCM.mjs} +167 -6
- package/dist/handlers/index.d.mts +2 -2
- package/dist/handlers/index.d.ts +2 -2
- package/dist/handlers/index.js +179 -11
- package/dist/handlers/index.mjs +1 -1
- package/dist/{index-CQ0zQ7Zk.d.ts → index-CYgr00ot.d.ts} +1 -1
- package/dist/{index-D0_2f-43.d.mts → index-D-lfcqlL.d.mts} +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/server.d.mts +7 -4
- package/dist/server.d.ts +7 -4
- package/dist/server.js +179 -11
- package/dist/server.mjs +2 -2
- package/package.json +1 -1
- package/src/app/constants.tsx +2 -2
- package/src/config/constants.ts +1 -1
- package/src/core/Pipeline.ts +5 -1
- package/src/llm/providers/AnthropicProvider.ts +33 -0
- package/src/llm/providers/GeminiProvider.ts +36 -0
- package/src/llm/providers/OllamaProvider.ts +27 -3
- package/src/llm/providers/OpenAIProvider.ts +39 -0
- package/src/providers/vectordb/QdrantProvider.ts +21 -12
|
@@ -13,6 +13,7 @@ export class QdrantProvider extends BaseVectorProvider {
|
|
|
13
13
|
private contentField: string;
|
|
14
14
|
private metadataField: string;
|
|
15
15
|
private isFlatPayload: boolean;
|
|
16
|
+
private schemaDiscovered = false;
|
|
16
17
|
|
|
17
18
|
constructor(config: VectorDBConfig) {
|
|
18
19
|
super(config);
|
|
@@ -26,6 +27,7 @@ export class QdrantProvider extends BaseVectorProvider {
|
|
|
26
27
|
|
|
27
28
|
this.http = axios.create({
|
|
28
29
|
baseURL: baseUrl,
|
|
30
|
+
timeout: 15000, // 15s timeout for vector DB operations
|
|
29
31
|
headers: {
|
|
30
32
|
'Content-Type': 'application/json',
|
|
31
33
|
...(opts.apiKey ? { 'api-key': opts.apiKey as string } : {}),
|
|
@@ -34,6 +36,8 @@ export class QdrantProvider extends BaseVectorProvider {
|
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
async initialize(): Promise<void> {
|
|
39
|
+
if (this.schemaDiscovered) return;
|
|
40
|
+
|
|
37
41
|
await this.ping();
|
|
38
42
|
await this.ensureCollection();
|
|
39
43
|
|
|
@@ -49,13 +53,18 @@ export class QdrantProvider extends BaseVectorProvider {
|
|
|
49
53
|
|
|
50
54
|
if (allFields.length > 0) {
|
|
51
55
|
console.log(`[QdrantProvider] 🛠 Ensuring indexes for ${allFields.length} discovered fields...`);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
// Parallelize index creation for much faster startup
|
|
57
|
+
await Promise.all(
|
|
58
|
+
allFields.map(async (fieldInfo) => {
|
|
59
|
+
const [fieldName, schemaType] = fieldInfo.split(':');
|
|
60
|
+
return this.ensureIndex(fieldName, (schemaType as string) || 'keyword');
|
|
61
|
+
})
|
|
62
|
+
);
|
|
56
63
|
} else {
|
|
57
64
|
console.log(`[QdrantProvider] ℹ️ No fields discovered for indexing.`);
|
|
58
65
|
}
|
|
66
|
+
|
|
67
|
+
this.schemaDiscovered = true;
|
|
59
68
|
}
|
|
60
69
|
|
|
61
70
|
/**
|
|
@@ -155,7 +164,7 @@ export class QdrantProvider extends BaseVectorProvider {
|
|
|
155
164
|
async batchUpsert(docs: UpsertDocument[], namespace?: string): Promise<void> {
|
|
156
165
|
const payload = {
|
|
157
166
|
points: docs.map(doc => {
|
|
158
|
-
const pointPayload: Record<string,
|
|
167
|
+
const pointPayload: Record<string, unknown> = {
|
|
159
168
|
[this.contentField]: doc.content,
|
|
160
169
|
...(namespace ? { namespace } : {}),
|
|
161
170
|
};
|
|
@@ -177,7 +186,7 @@ export class QdrantProvider extends BaseVectorProvider {
|
|
|
177
186
|
}
|
|
178
187
|
|
|
179
188
|
async query(vector: number[], topK: number, namespace?: string, _filter?: Record<string, unknown>): Promise<VectorMatch[]> {
|
|
180
|
-
const must:
|
|
189
|
+
const must: Record<string, unknown>[] = [];
|
|
181
190
|
|
|
182
191
|
if (namespace) {
|
|
183
192
|
must.push({ key: 'namespace', match: { value: namespace } });
|
|
@@ -210,13 +219,13 @@ export class QdrantProvider extends BaseVectorProvider {
|
|
|
210
219
|
|
|
211
220
|
const { data } = await this.http.post(`/collections/${this.indexName}/points/search`, payload);
|
|
212
221
|
|
|
213
|
-
const results = (data.result || []).map((res: Record<string,
|
|
214
|
-
const p = res.payload || {};
|
|
222
|
+
const results = (data.result || []).map((res: Record<string, unknown>) => {
|
|
223
|
+
const p = (res.payload as Record<string, unknown>) || {};
|
|
215
224
|
let content = p[this.contentField] || '';
|
|
216
225
|
|
|
217
226
|
if (!content) {
|
|
218
227
|
const stringFields = Object.entries(p)
|
|
219
|
-
.filter(([
|
|
228
|
+
.filter(([, v]) => typeof v === 'string')
|
|
220
229
|
.map(([k, v]) => ({ key: k, val: v as string }));
|
|
221
230
|
|
|
222
231
|
if (stringFields.length > 0) {
|
|
@@ -227,13 +236,13 @@ export class QdrantProvider extends BaseVectorProvider {
|
|
|
227
236
|
}
|
|
228
237
|
}
|
|
229
238
|
|
|
230
|
-
let metadata: Record<string,
|
|
239
|
+
let metadata: Record<string, unknown> = {};
|
|
231
240
|
if (this.isFlatPayload) {
|
|
232
241
|
metadata = { ...p };
|
|
233
242
|
delete metadata[this.contentField];
|
|
234
243
|
delete metadata['namespace'];
|
|
235
244
|
} else {
|
|
236
|
-
metadata = p[this.metadataField] || p;
|
|
245
|
+
metadata = (p[this.metadataField] as Record<string, unknown>) || p;
|
|
237
246
|
}
|
|
238
247
|
|
|
239
248
|
return {
|
|
@@ -247,7 +256,7 @@ export class QdrantProvider extends BaseVectorProvider {
|
|
|
247
256
|
return results;
|
|
248
257
|
}
|
|
249
258
|
|
|
250
|
-
async delete(id: string | number
|
|
259
|
+
async delete(id: string | number): Promise<void> {
|
|
251
260
|
await this.http.post(`/collections/${this.indexName}/points/delete`, {
|
|
252
261
|
points: [this.normalizeId(id)],
|
|
253
262
|
});
|