@retrivora-ai/rag-engine 0.3.4 → 0.3.5
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/{ChromaDBProvider-T7TK3ONZ.mjs → ChromaDBProvider-6JWXHZAE.mjs} +2 -2
- package/dist/{MilvusProvider-Y5FV5EAE.mjs → MilvusProvider-MJQVHU4B.mjs} +2 -2
- package/dist/{MongoDBProvider-KGO6N23T.mjs → MongoDBProvider-XS3QR47H.mjs} +2 -2
- package/dist/{PineconeProvider-A47MRRYJ.mjs → PineconeProvider-QZTC7QAP.mjs} +2 -2
- package/dist/{PostgreSQLProvider-ILWADFAP.mjs → PostgreSQLProvider-CNO72UP6.mjs} +2 -2
- package/dist/{QdrantProvider-OLPJK7CY.mjs → QdrantProvider-6OBJKUIP.mjs} +2 -2
- package/dist/{RedisProvider-ANEJ3BHR.mjs → RedisProvider-FF5BNQPB.mjs} +2 -2
- package/dist/{UniversalVectorProvider-QJIV2AJJ.mjs → UniversalVectorProvider-CAVX5VSQ.mjs} +2 -2
- package/dist/{WeaviateProvider-WIK2QN23.mjs → WeaviateProvider-DIYYBTEF.mjs} +2 -2
- package/dist/{chunk-RUKZC3ON.mjs → chunk-7XL3QSQ7.mjs} +1 -1
- package/dist/{chunk-VEJNRS4B.mjs → chunk-ENEUABSO.mjs} +1 -1
- package/dist/{chunk-IFPISZ2S.mjs → chunk-KGW2YHV2.mjs} +2 -8
- package/dist/{chunk-6GSARSCP.mjs → chunk-L54WODRW.mjs} +2 -8
- package/dist/{chunk-BMHJTWSU.mjs → chunk-M3AZTD7F.mjs} +3 -2
- package/dist/{chunk-HOMXEE3M.mjs → chunk-N2L5CFGM.mjs} +1 -1
- package/dist/{chunk-VKE5ZW7Y.mjs → chunk-Q2QDQ5SQ.mjs} +1 -1
- package/dist/{chunk-VV2ML6TM.mjs → chunk-R3GPRETL.mjs} +3 -2
- package/dist/{chunk-GE4AVGA5.mjs → chunk-TOKEXP3M.mjs} +9 -9
- package/dist/{chunk-W2PQR3UK.mjs → chunk-ULX4EF74.mjs} +1 -1
- package/dist/chunk-YVTGOFNV.mjs +23 -0
- package/dist/handlers/index.js +18 -16
- package/dist/handlers/index.mjs +1 -1
- package/dist/server.d.mts +5 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.js +18 -16
- package/dist/server.mjs +11 -11
- package/package.json +1 -1
- package/src/providers/vectordb/BaseVectorProvider.ts +13 -0
- package/src/providers/vectordb/MongoDBProvider.ts +1 -9
- package/src/providers/vectordb/PineconeProvider.ts +2 -1
- package/src/providers/vectordb/PostgreSQLProvider.ts +1 -9
- package/src/providers/vectordb/UniversalVectorProvider.ts +2 -1
- package/dist/chunk-VOIWNO5O.mjs +0 -11
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UniversalVectorProvider
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-R3GPRETL.mjs";
|
|
4
4
|
import "./chunk-EDLTMSNY.mjs";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-YVTGOFNV.mjs";
|
|
6
6
|
import "./chunk-FWCSY2DS.mjs";
|
|
7
7
|
export {
|
|
8
8
|
UniversalVectorProvider
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BaseVectorProvider
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YVTGOFNV.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__spreadValues
|
|
6
6
|
} from "./chunk-FWCSY2DS.mjs";
|
|
7
7
|
|
|
8
8
|
// src/providers/vectordb/MongoDBProvider.ts
|
|
9
9
|
import { MongoClient } from "mongodb";
|
|
10
|
-
function stripInternalFilterKeys(filter) {
|
|
11
|
-
if (!filter) return {};
|
|
12
|
-
return Object.fromEntries(
|
|
13
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
10
|
var MongoDBProvider = class extends BaseVectorProvider {
|
|
17
11
|
constructor(config) {
|
|
18
12
|
super(config);
|
|
@@ -58,7 +52,7 @@ var MongoDBProvider = class extends BaseVectorProvider {
|
|
|
58
52
|
await this.collection.bulkWrite(operations);
|
|
59
53
|
}
|
|
60
54
|
async query(vector, topK, namespace, filter) {
|
|
61
|
-
const publicFilter =
|
|
55
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
62
56
|
const pipeline = [
|
|
63
57
|
{
|
|
64
58
|
$vectorSearch: __spreadValues({
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BaseVectorProvider
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YVTGOFNV.mjs";
|
|
4
4
|
|
|
5
5
|
// src/providers/vectordb/PostgreSQLProvider.ts
|
|
6
6
|
import { Pool } from "pg";
|
|
7
|
-
function stripInternalFilterKeys(filter) {
|
|
8
|
-
if (!filter) return {};
|
|
9
|
-
return Object.fromEntries(
|
|
10
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
11
|
-
);
|
|
12
|
-
}
|
|
13
7
|
var PostgreSQLProvider = class extends BaseVectorProvider {
|
|
14
8
|
constructor(config) {
|
|
15
9
|
var _a;
|
|
@@ -96,7 +90,7 @@ var PostgreSQLProvider = class extends BaseVectorProvider {
|
|
|
96
90
|
let whereClause = namespace ? `WHERE namespace = $3` : "";
|
|
97
91
|
const params = [vectorLiteral, topK];
|
|
98
92
|
if (namespace) params.push(namespace);
|
|
99
|
-
const publicFilter =
|
|
93
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
100
94
|
if (Object.keys(publicFilter).length > 0) {
|
|
101
95
|
const filterConditions = Object.entries(publicFilter).map(([key, val]) => {
|
|
102
96
|
const paramIdx = params.length + 1;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BaseVectorProvider
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YVTGOFNV.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__spreadValues
|
|
6
6
|
} from "./chunk-FWCSY2DS.mjs";
|
|
@@ -55,11 +55,12 @@ var PineconeProvider = class extends BaseVectorProvider {
|
|
|
55
55
|
}
|
|
56
56
|
async query(vector, topK, namespace, filter) {
|
|
57
57
|
var _a;
|
|
58
|
+
const pineconeFilter = this.sanitizeFilter(filter);
|
|
58
59
|
const result = await this.index(namespace).query(__spreadValues({
|
|
59
60
|
vector,
|
|
60
61
|
topK,
|
|
61
62
|
includeMetadata: true
|
|
62
|
-
},
|
|
63
|
+
}, Object.keys(pineconeFilter).length > 0 ? { filter: pineconeFilter } : {}));
|
|
63
64
|
return ((_a = result.matches) != null ? _a : []).map((m) => {
|
|
64
65
|
var _a2, _b;
|
|
65
66
|
return {
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-EDLTMSNY.mjs";
|
|
5
5
|
import {
|
|
6
6
|
BaseVectorProvider
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-YVTGOFNV.mjs";
|
|
8
8
|
import {
|
|
9
9
|
__spreadValues
|
|
10
10
|
} from "./chunk-FWCSY2DS.mjs";
|
|
@@ -75,11 +75,12 @@ var UniversalVectorProvider = class extends BaseVectorProvider {
|
|
|
75
75
|
namespace: "{{namespace}}",
|
|
76
76
|
filter: "{{filter}}"
|
|
77
77
|
});
|
|
78
|
+
const sanitizedFilter = this.sanitizeFilter(filter);
|
|
78
79
|
const payload = buildPayload(template, {
|
|
79
80
|
vector,
|
|
80
81
|
topK,
|
|
81
82
|
namespace: namespace != null ? namespace : this.indexName,
|
|
82
|
-
filter:
|
|
83
|
+
filter: sanitizedFilter
|
|
83
84
|
});
|
|
84
85
|
try {
|
|
85
86
|
const response = await this.http.post(endpoint, payload);
|
|
@@ -1370,41 +1370,41 @@ var ProviderRegistry = class {
|
|
|
1370
1370
|
}
|
|
1371
1371
|
switch (provider) {
|
|
1372
1372
|
case "pinecone": {
|
|
1373
|
-
const { PineconeProvider } = await import("./PineconeProvider-
|
|
1373
|
+
const { PineconeProvider } = await import("./PineconeProvider-QZTC7QAP.mjs");
|
|
1374
1374
|
return new PineconeProvider(config);
|
|
1375
1375
|
}
|
|
1376
1376
|
case "pgvector":
|
|
1377
1377
|
case "postgresql": {
|
|
1378
|
-
const { PostgreSQLProvider } = await import("./PostgreSQLProvider-
|
|
1378
|
+
const { PostgreSQLProvider } = await import("./PostgreSQLProvider-CNO72UP6.mjs");
|
|
1379
1379
|
return new PostgreSQLProvider(config);
|
|
1380
1380
|
}
|
|
1381
1381
|
case "mongodb": {
|
|
1382
|
-
const { MongoDBProvider } = await import("./MongoDBProvider-
|
|
1382
|
+
const { MongoDBProvider } = await import("./MongoDBProvider-XS3QR47H.mjs");
|
|
1383
1383
|
return new MongoDBProvider(config);
|
|
1384
1384
|
}
|
|
1385
1385
|
case "milvus": {
|
|
1386
|
-
const { MilvusProvider } = await import("./MilvusProvider-
|
|
1386
|
+
const { MilvusProvider } = await import("./MilvusProvider-MJQVHU4B.mjs");
|
|
1387
1387
|
return new MilvusProvider(config);
|
|
1388
1388
|
}
|
|
1389
1389
|
case "qdrant": {
|
|
1390
|
-
const { QdrantProvider } = await import("./QdrantProvider-
|
|
1390
|
+
const { QdrantProvider } = await import("./QdrantProvider-6OBJKUIP.mjs");
|
|
1391
1391
|
return new QdrantProvider(config);
|
|
1392
1392
|
}
|
|
1393
1393
|
case "chromadb": {
|
|
1394
|
-
const { ChromaDBProvider } = await import("./ChromaDBProvider-
|
|
1394
|
+
const { ChromaDBProvider } = await import("./ChromaDBProvider-6JWXHZAE.mjs");
|
|
1395
1395
|
return new ChromaDBProvider(config);
|
|
1396
1396
|
}
|
|
1397
1397
|
case "redis": {
|
|
1398
|
-
const { RedisProvider } = await import("./RedisProvider-
|
|
1398
|
+
const { RedisProvider } = await import("./RedisProvider-FF5BNQPB.mjs");
|
|
1399
1399
|
return new RedisProvider(config);
|
|
1400
1400
|
}
|
|
1401
1401
|
case "weaviate": {
|
|
1402
|
-
const { WeaviateProvider } = await import("./WeaviateProvider-
|
|
1402
|
+
const { WeaviateProvider } = await import("./WeaviateProvider-DIYYBTEF.mjs");
|
|
1403
1403
|
return new WeaviateProvider(config);
|
|
1404
1404
|
}
|
|
1405
1405
|
case "universal_rest":
|
|
1406
1406
|
case "rest": {
|
|
1407
|
-
const { UniversalVectorProvider } = await import("./UniversalVectorProvider-
|
|
1407
|
+
const { UniversalVectorProvider } = await import("./UniversalVectorProvider-CAVX5VSQ.mjs");
|
|
1408
1408
|
return new UniversalVectorProvider(config);
|
|
1409
1409
|
}
|
|
1410
1410
|
default:
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/providers/vectordb/BaseVectorProvider.ts
|
|
2
|
+
var BaseVectorProvider = class {
|
|
3
|
+
constructor(config) {
|
|
4
|
+
this.config = config;
|
|
5
|
+
this.indexName = config.indexName || "default";
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Remove internal keys (starting with __) and queryText from a filter object
|
|
9
|
+
* before passing it to an external provider that might not support them.
|
|
10
|
+
*/
|
|
11
|
+
sanitizeFilter(filter) {
|
|
12
|
+
if (!filter) return {};
|
|
13
|
+
return Object.fromEntries(
|
|
14
|
+
Object.entries(filter).filter(
|
|
15
|
+
([key]) => !key.startsWith("__") && key !== "queryText"
|
|
16
|
+
)
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
BaseVectorProvider
|
|
23
|
+
};
|
package/dist/handlers/index.js
CHANGED
|
@@ -102,6 +102,18 @@ var init_BaseVectorProvider = __esm({
|
|
|
102
102
|
this.config = config;
|
|
103
103
|
this.indexName = config.indexName || "default";
|
|
104
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Remove internal keys (starting with __) and queryText from a filter object
|
|
107
|
+
* before passing it to an external provider that might not support them.
|
|
108
|
+
*/
|
|
109
|
+
sanitizeFilter(filter) {
|
|
110
|
+
if (!filter) return {};
|
|
111
|
+
return Object.fromEntries(
|
|
112
|
+
Object.entries(filter).filter(
|
|
113
|
+
([key]) => !key.startsWith("__") && key !== "queryText"
|
|
114
|
+
)
|
|
115
|
+
);
|
|
116
|
+
}
|
|
105
117
|
};
|
|
106
118
|
}
|
|
107
119
|
});
|
|
@@ -165,11 +177,12 @@ var init_PineconeProvider = __esm({
|
|
|
165
177
|
}
|
|
166
178
|
async query(vector, topK, namespace, filter) {
|
|
167
179
|
var _a;
|
|
180
|
+
const pineconeFilter = this.sanitizeFilter(filter);
|
|
168
181
|
const result = await this.index(namespace).query(__spreadValues({
|
|
169
182
|
vector,
|
|
170
183
|
topK,
|
|
171
184
|
includeMetadata: true
|
|
172
|
-
},
|
|
185
|
+
}, Object.keys(pineconeFilter).length > 0 ? { filter: pineconeFilter } : {}));
|
|
173
186
|
return ((_a = result.matches) != null ? _a : []).map((m) => {
|
|
174
187
|
var _a2, _b;
|
|
175
188
|
return {
|
|
@@ -205,12 +218,6 @@ var PostgreSQLProvider_exports = {};
|
|
|
205
218
|
__export(PostgreSQLProvider_exports, {
|
|
206
219
|
PostgreSQLProvider: () => PostgreSQLProvider
|
|
207
220
|
});
|
|
208
|
-
function stripInternalFilterKeys(filter) {
|
|
209
|
-
if (!filter) return {};
|
|
210
|
-
return Object.fromEntries(
|
|
211
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
212
|
-
);
|
|
213
|
-
}
|
|
214
221
|
var import_pg, PostgreSQLProvider;
|
|
215
222
|
var init_PostgreSQLProvider = __esm({
|
|
216
223
|
"src/providers/vectordb/PostgreSQLProvider.ts"() {
|
|
@@ -303,7 +310,7 @@ var init_PostgreSQLProvider = __esm({
|
|
|
303
310
|
let whereClause = namespace ? `WHERE namespace = $3` : "";
|
|
304
311
|
const params = [vectorLiteral, topK];
|
|
305
312
|
if (namespace) params.push(namespace);
|
|
306
|
-
const publicFilter =
|
|
313
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
307
314
|
if (Object.keys(publicFilter).length > 0) {
|
|
308
315
|
const filterConditions = Object.entries(publicFilter).map(([key, val]) => {
|
|
309
316
|
const paramIdx = params.length + 1;
|
|
@@ -355,12 +362,6 @@ var MongoDBProvider_exports = {};
|
|
|
355
362
|
__export(MongoDBProvider_exports, {
|
|
356
363
|
MongoDBProvider: () => MongoDBProvider
|
|
357
364
|
});
|
|
358
|
-
function stripInternalFilterKeys2(filter) {
|
|
359
|
-
if (!filter) return {};
|
|
360
|
-
return Object.fromEntries(
|
|
361
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
362
|
-
);
|
|
363
|
-
}
|
|
364
365
|
var import_mongodb, MongoDBProvider;
|
|
365
366
|
var init_MongoDBProvider = __esm({
|
|
366
367
|
"src/providers/vectordb/MongoDBProvider.ts"() {
|
|
@@ -412,7 +413,7 @@ var init_MongoDBProvider = __esm({
|
|
|
412
413
|
await this.collection.bulkWrite(operations);
|
|
413
414
|
}
|
|
414
415
|
async query(vector, topK, namespace, filter) {
|
|
415
|
-
const publicFilter =
|
|
416
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
416
417
|
const pipeline = [
|
|
417
418
|
{
|
|
418
419
|
$vectorSearch: __spreadValues({
|
|
@@ -1087,11 +1088,12 @@ var init_UniversalVectorProvider = __esm({
|
|
|
1087
1088
|
namespace: "{{namespace}}",
|
|
1088
1089
|
filter: "{{filter}}"
|
|
1089
1090
|
});
|
|
1091
|
+
const sanitizedFilter = this.sanitizeFilter(filter);
|
|
1090
1092
|
const payload = buildPayload(template, {
|
|
1091
1093
|
vector,
|
|
1092
1094
|
topK,
|
|
1093
1095
|
namespace: namespace != null ? namespace : this.indexName,
|
|
1094
|
-
filter:
|
|
1096
|
+
filter: sanitizedFilter
|
|
1095
1097
|
});
|
|
1096
1098
|
try {
|
|
1097
1099
|
const response = await this.http.post(endpoint, payload);
|
package/dist/handlers/index.mjs
CHANGED
package/dist/server.d.mts
CHANGED
|
@@ -307,6 +307,11 @@ declare abstract class BaseVectorProvider {
|
|
|
307
307
|
* Gracefully close the connection.
|
|
308
308
|
*/
|
|
309
309
|
abstract disconnect(): Promise<void>;
|
|
310
|
+
/**
|
|
311
|
+
* Remove internal keys (starting with __) and queryText from a filter object
|
|
312
|
+
* before passing it to an external provider that might not support them.
|
|
313
|
+
*/
|
|
314
|
+
protected sanitizeFilter(filter?: Record<string, unknown>): Record<string, unknown>;
|
|
310
315
|
}
|
|
311
316
|
|
|
312
317
|
/**
|
package/dist/server.d.ts
CHANGED
|
@@ -307,6 +307,11 @@ declare abstract class BaseVectorProvider {
|
|
|
307
307
|
* Gracefully close the connection.
|
|
308
308
|
*/
|
|
309
309
|
abstract disconnect(): Promise<void>;
|
|
310
|
+
/**
|
|
311
|
+
* Remove internal keys (starting with __) and queryText from a filter object
|
|
312
|
+
* before passing it to an external provider that might not support them.
|
|
313
|
+
*/
|
|
314
|
+
protected sanitizeFilter(filter?: Record<string, unknown>): Record<string, unknown>;
|
|
310
315
|
}
|
|
311
316
|
|
|
312
317
|
/**
|
package/dist/server.js
CHANGED
|
@@ -114,6 +114,18 @@ var init_BaseVectorProvider = __esm({
|
|
|
114
114
|
this.config = config;
|
|
115
115
|
this.indexName = config.indexName || "default";
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Remove internal keys (starting with __) and queryText from a filter object
|
|
119
|
+
* before passing it to an external provider that might not support them.
|
|
120
|
+
*/
|
|
121
|
+
sanitizeFilter(filter) {
|
|
122
|
+
if (!filter) return {};
|
|
123
|
+
return Object.fromEntries(
|
|
124
|
+
Object.entries(filter).filter(
|
|
125
|
+
([key]) => !key.startsWith("__") && key !== "queryText"
|
|
126
|
+
)
|
|
127
|
+
);
|
|
128
|
+
}
|
|
117
129
|
};
|
|
118
130
|
}
|
|
119
131
|
});
|
|
@@ -177,11 +189,12 @@ var init_PineconeProvider = __esm({
|
|
|
177
189
|
}
|
|
178
190
|
async query(vector, topK, namespace, filter) {
|
|
179
191
|
var _a;
|
|
192
|
+
const pineconeFilter = this.sanitizeFilter(filter);
|
|
180
193
|
const result = await this.index(namespace).query(__spreadValues({
|
|
181
194
|
vector,
|
|
182
195
|
topK,
|
|
183
196
|
includeMetadata: true
|
|
184
|
-
},
|
|
197
|
+
}, Object.keys(pineconeFilter).length > 0 ? { filter: pineconeFilter } : {}));
|
|
185
198
|
return ((_a = result.matches) != null ? _a : []).map((m) => {
|
|
186
199
|
var _a2, _b;
|
|
187
200
|
return {
|
|
@@ -217,12 +230,6 @@ var PostgreSQLProvider_exports = {};
|
|
|
217
230
|
__export(PostgreSQLProvider_exports, {
|
|
218
231
|
PostgreSQLProvider: () => PostgreSQLProvider
|
|
219
232
|
});
|
|
220
|
-
function stripInternalFilterKeys(filter) {
|
|
221
|
-
if (!filter) return {};
|
|
222
|
-
return Object.fromEntries(
|
|
223
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
224
|
-
);
|
|
225
|
-
}
|
|
226
233
|
var import_pg, PostgreSQLProvider;
|
|
227
234
|
var init_PostgreSQLProvider = __esm({
|
|
228
235
|
"src/providers/vectordb/PostgreSQLProvider.ts"() {
|
|
@@ -315,7 +322,7 @@ var init_PostgreSQLProvider = __esm({
|
|
|
315
322
|
let whereClause = namespace ? `WHERE namespace = $3` : "";
|
|
316
323
|
const params = [vectorLiteral, topK];
|
|
317
324
|
if (namespace) params.push(namespace);
|
|
318
|
-
const publicFilter =
|
|
325
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
319
326
|
if (Object.keys(publicFilter).length > 0) {
|
|
320
327
|
const filterConditions = Object.entries(publicFilter).map(([key, val]) => {
|
|
321
328
|
const paramIdx = params.length + 1;
|
|
@@ -367,12 +374,6 @@ var MongoDBProvider_exports = {};
|
|
|
367
374
|
__export(MongoDBProvider_exports, {
|
|
368
375
|
MongoDBProvider: () => MongoDBProvider
|
|
369
376
|
});
|
|
370
|
-
function stripInternalFilterKeys2(filter) {
|
|
371
|
-
if (!filter) return {};
|
|
372
|
-
return Object.fromEntries(
|
|
373
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
374
|
-
);
|
|
375
|
-
}
|
|
376
377
|
var import_mongodb, MongoDBProvider;
|
|
377
378
|
var init_MongoDBProvider = __esm({
|
|
378
379
|
"src/providers/vectordb/MongoDBProvider.ts"() {
|
|
@@ -424,7 +425,7 @@ var init_MongoDBProvider = __esm({
|
|
|
424
425
|
await this.collection.bulkWrite(operations);
|
|
425
426
|
}
|
|
426
427
|
async query(vector, topK, namespace, filter) {
|
|
427
|
-
const publicFilter =
|
|
428
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
428
429
|
const pipeline = [
|
|
429
430
|
{
|
|
430
431
|
$vectorSearch: __spreadValues({
|
|
@@ -1099,11 +1100,12 @@ var init_UniversalVectorProvider = __esm({
|
|
|
1099
1100
|
namespace: "{{namespace}}",
|
|
1100
1101
|
filter: "{{filter}}"
|
|
1101
1102
|
});
|
|
1103
|
+
const sanitizedFilter = this.sanitizeFilter(filter);
|
|
1102
1104
|
const payload = buildPayload(template, {
|
|
1103
1105
|
vector,
|
|
1104
1106
|
topK,
|
|
1105
1107
|
namespace: namespace != null ? namespace : this.indexName,
|
|
1106
|
-
filter:
|
|
1108
|
+
filter: sanitizedFilter
|
|
1107
1109
|
});
|
|
1108
1110
|
try {
|
|
1109
1111
|
const response = await this.http.post(endpoint, payload);
|
package/dist/server.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ChromaDBProvider
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Q2QDQ5SQ.mjs";
|
|
4
4
|
import {
|
|
5
5
|
RedisProvider
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-N2L5CFGM.mjs";
|
|
7
7
|
import {
|
|
8
8
|
WeaviateProvider
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7XL3QSQ7.mjs";
|
|
10
10
|
import {
|
|
11
11
|
UniversalVectorProvider
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-R3GPRETL.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AnthropicProvider,
|
|
15
15
|
BatchProcessor,
|
|
@@ -34,26 +34,26 @@ import {
|
|
|
34
34
|
createIngestHandler,
|
|
35
35
|
createUploadHandler,
|
|
36
36
|
getRagConfig
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-TOKEXP3M.mjs";
|
|
38
38
|
import "./chunk-EDLTMSNY.mjs";
|
|
39
39
|
import {
|
|
40
40
|
PineconeProvider
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-M3AZTD7F.mjs";
|
|
42
42
|
import {
|
|
43
43
|
PostgreSQLProvider
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-L54WODRW.mjs";
|
|
45
45
|
import {
|
|
46
46
|
MongoDBProvider
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-KGW2YHV2.mjs";
|
|
48
48
|
import {
|
|
49
49
|
MilvusProvider
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-ENEUABSO.mjs";
|
|
51
51
|
import {
|
|
52
52
|
QdrantProvider
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-ULX4EF74.mjs";
|
|
54
54
|
import {
|
|
55
55
|
BaseVectorProvider
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-YVTGOFNV.mjs";
|
|
57
57
|
import {
|
|
58
58
|
__objRest,
|
|
59
59
|
__spreadProps,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@retrivora-ai/rag-engine",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"description": "Retrivora AI is a plug-and-play AI engine for RAG chat experiences — generic vector DB + LLM provider, embeddable or standalone.",
|
|
5
5
|
"author": "Abhinav Alkuchi",
|
|
6
6
|
"license": "MIT",
|
|
@@ -58,4 +58,17 @@ export abstract class BaseVectorProvider {
|
|
|
58
58
|
* Gracefully close the connection.
|
|
59
59
|
*/
|
|
60
60
|
abstract disconnect(): Promise<void>;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Remove internal keys (starting with __) and queryText from a filter object
|
|
64
|
+
* before passing it to an external provider that might not support them.
|
|
65
|
+
*/
|
|
66
|
+
protected sanitizeFilter(filter?: Record<string, unknown>): Record<string, unknown> {
|
|
67
|
+
if (!filter) return {};
|
|
68
|
+
return Object.fromEntries(
|
|
69
|
+
Object.entries(filter).filter(
|
|
70
|
+
([key]) => !key.startsWith('__') && key !== 'queryText'
|
|
71
|
+
)
|
|
72
|
+
);
|
|
73
|
+
}
|
|
61
74
|
}
|
|
@@ -3,14 +3,6 @@ import { VectorDBConfig } from '../../config/RagConfig';
|
|
|
3
3
|
import { BaseVectorProvider } from './BaseVectorProvider';
|
|
4
4
|
import { VectorMatch, UpsertDocument } from '../../types';
|
|
5
5
|
|
|
6
|
-
function stripInternalFilterKeys(filter?: Record<string, unknown>): Record<string, unknown> {
|
|
7
|
-
if (!filter) return {};
|
|
8
|
-
|
|
9
|
-
return Object.fromEntries(
|
|
10
|
-
Object.entries(filter).filter(([key]) => !key.startsWith('__'))
|
|
11
|
-
);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
6
|
/**
|
|
15
7
|
* MongoDBProvider — MongoDB Atlas Vector Search implementation.
|
|
16
8
|
*/
|
|
@@ -75,7 +67,7 @@ export class MongoDBProvider extends BaseVectorProvider {
|
|
|
75
67
|
}
|
|
76
68
|
|
|
77
69
|
async query(vector: number[], topK: number, namespace?: string, filter?: Record<string, unknown>): Promise<VectorMatch[]> {
|
|
78
|
-
const publicFilter =
|
|
70
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
79
71
|
const pipeline: Record<string, unknown>[] = [
|
|
80
72
|
{
|
|
81
73
|
$vectorSearch: {
|
|
@@ -66,11 +66,12 @@ export class PineconeProvider extends BaseVectorProvider {
|
|
|
66
66
|
namespace?: string,
|
|
67
67
|
filter?: Record<string, unknown>
|
|
68
68
|
): Promise<VectorMatch[]> {
|
|
69
|
+
const pineconeFilter = this.sanitizeFilter(filter);
|
|
69
70
|
const result = await this.index(namespace).query({
|
|
70
71
|
vector,
|
|
71
72
|
topK,
|
|
72
73
|
includeMetadata: true,
|
|
73
|
-
...(
|
|
74
|
+
...(Object.keys(pineconeFilter).length > 0 ? { filter: pineconeFilter as any } : {}),
|
|
74
75
|
});
|
|
75
76
|
return (result.matches ?? []).map((m) => ({
|
|
76
77
|
id: m.id,
|
|
@@ -3,14 +3,6 @@ import { VectorDBConfig } from '../../config/RagConfig';
|
|
|
3
3
|
import { BaseVectorProvider } from './BaseVectorProvider';
|
|
4
4
|
import { VectorMatch, UpsertDocument } from '../../types';
|
|
5
5
|
|
|
6
|
-
function stripInternalFilterKeys(filter?: Record<string, unknown>): Record<string, unknown> {
|
|
7
|
-
if (!filter) return {};
|
|
8
|
-
|
|
9
|
-
return Object.fromEntries(
|
|
10
|
-
Object.entries(filter).filter(([key]) => !key.startsWith('__'))
|
|
11
|
-
);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
6
|
/**
|
|
15
7
|
* PostgreSQLProvider — PostgreSQL implementation using the pgvector extension.
|
|
16
8
|
*/
|
|
@@ -111,7 +103,7 @@ export class PostgreSQLProvider extends BaseVectorProvider {
|
|
|
111
103
|
const params: unknown[] = [vectorLiteral, topK];
|
|
112
104
|
if (namespace) params.push(namespace);
|
|
113
105
|
|
|
114
|
-
const publicFilter =
|
|
106
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
115
107
|
if (Object.keys(publicFilter).length > 0) {
|
|
116
108
|
const filterConditions = Object.entries(publicFilter)
|
|
117
109
|
.map(([key, val]) => {
|
|
@@ -132,11 +132,12 @@ export class UniversalVectorProvider extends BaseVectorProvider {
|
|
|
132
132
|
filter: '{{filter}}',
|
|
133
133
|
});
|
|
134
134
|
|
|
135
|
+
const sanitizedFilter = this.sanitizeFilter(filter);
|
|
135
136
|
const payload = buildPayload(template, {
|
|
136
137
|
vector,
|
|
137
138
|
topK,
|
|
138
139
|
namespace: namespace ?? this.indexName,
|
|
139
|
-
filter:
|
|
140
|
+
filter: sanitizedFilter,
|
|
140
141
|
});
|
|
141
142
|
|
|
142
143
|
try {
|
package/dist/chunk-VOIWNO5O.mjs
DELETED