@retrivora-ai/rag-engine 0.3.4 → 0.3.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/dist/{ChromaDBProvider-T7TK3ONZ.mjs → ChromaDBProvider-GI7TB7GJ.mjs} +2 -2
- package/dist/{MilvusProvider-Y5FV5EAE.mjs → MilvusProvider-WDVTFB7D.mjs} +2 -2
- package/dist/{MongoDBProvider-KGO6N23T.mjs → MongoDBProvider-NWAOHQAY.mjs} +2 -2
- package/dist/{PineconeProvider-A47MRRYJ.mjs → PineconeProvider-BE2JWSPD.mjs} +2 -2
- package/dist/{PostgreSQLProvider-ILWADFAP.mjs → PostgreSQLProvider-5HHTK4SU.mjs} +2 -2
- package/dist/{QdrantProvider-OLPJK7CY.mjs → QdrantProvider-XVDVBNIG.mjs} +2 -2
- package/dist/{RedisProvider-ANEJ3BHR.mjs → RedisProvider-EK2R2PQH.mjs} +2 -2
- package/dist/{UniversalVectorProvider-QJIV2AJJ.mjs → UniversalVectorProvider-YIDRX6VT.mjs} +2 -2
- package/dist/{WeaviateProvider-WIK2QN23.mjs → WeaviateProvider-4CAPQ7UY.mjs} +2 -2
- package/dist/{chunk-IFPISZ2S.mjs → chunk-2L2NC64R.mjs} +2 -8
- package/dist/{chunk-VEJNRS4B.mjs → chunk-3QWAK3RZ.mjs} +1 -1
- package/dist/{chunk-W2PQR3UK.mjs → chunk-5KNBWQM6.mjs} +1 -1
- package/dist/{chunk-GE4AVGA5.mjs → chunk-BJGFKDYF.mjs} +9 -9
- package/dist/{chunk-VV2ML6TM.mjs → chunk-GQT5LF4G.mjs} +3 -2
- package/dist/{chunk-HOMXEE3M.mjs → chunk-H6RKMU7W.mjs} +1 -1
- package/dist/chunk-IMP6FUCY.mjs +30 -0
- package/dist/{chunk-RUKZC3ON.mjs → chunk-KTS3LLHY.mjs} +1 -1
- package/dist/{chunk-6GSARSCP.mjs → chunk-LJWWPTWE.mjs} +2 -8
- package/dist/{chunk-VKE5ZW7Y.mjs → chunk-RK2UDJA2.mjs} +1 -1
- package/dist/{chunk-BMHJTWSU.mjs → chunk-XCNXPECE.mjs} +3 -2
- package/dist/handlers/index.js +25 -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 +25 -16
- package/dist/server.mjs +11 -11
- package/package.json +1 -1
- package/src/providers/vectordb/BaseVectorProvider.ts +25 -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-GQT5LF4G.mjs";
|
|
4
4
|
import "./chunk-EDLTMSNY.mjs";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-IMP6FUCY.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-IMP6FUCY.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({
|
|
@@ -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-BE2JWSPD.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-5HHTK4SU.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-NWAOHQAY.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-WDVTFB7D.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-XVDVBNIG.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-GI7TB7GJ.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-EK2R2PQH.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-4CAPQ7UY.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-YIDRX6VT.mjs");
|
|
1408
1408
|
return new UniversalVectorProvider(config);
|
|
1409
1409
|
}
|
|
1410
1410
|
default:
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-EDLTMSNY.mjs";
|
|
5
5
|
import {
|
|
6
6
|
BaseVectorProvider
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IMP6FUCY.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);
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
const result = {};
|
|
14
|
+
for (const [key, value] of Object.entries(filter)) {
|
|
15
|
+
if (key.startsWith("__") || key === "queryText" || key === "keywords") {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
if (key === "metadata" && typeof value === "object" && value !== null) {
|
|
19
|
+
Object.assign(result, value);
|
|
20
|
+
} else {
|
|
21
|
+
result[key] = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
BaseVectorProvider
|
|
30
|
+
};
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BaseVectorProvider
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IMP6FUCY.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-IMP6FUCY.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 {
|
package/dist/handlers/index.js
CHANGED
|
@@ -102,6 +102,25 @@ 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
|
+
const result = {};
|
|
112
|
+
for (const [key, value] of Object.entries(filter)) {
|
|
113
|
+
if (key.startsWith("__") || key === "queryText" || key === "keywords") {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (key === "metadata" && typeof value === "object" && value !== null) {
|
|
117
|
+
Object.assign(result, value);
|
|
118
|
+
} else {
|
|
119
|
+
result[key] = value;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
105
124
|
};
|
|
106
125
|
}
|
|
107
126
|
});
|
|
@@ -165,11 +184,12 @@ var init_PineconeProvider = __esm({
|
|
|
165
184
|
}
|
|
166
185
|
async query(vector, topK, namespace, filter) {
|
|
167
186
|
var _a;
|
|
187
|
+
const pineconeFilter = this.sanitizeFilter(filter);
|
|
168
188
|
const result = await this.index(namespace).query(__spreadValues({
|
|
169
189
|
vector,
|
|
170
190
|
topK,
|
|
171
191
|
includeMetadata: true
|
|
172
|
-
},
|
|
192
|
+
}, Object.keys(pineconeFilter).length > 0 ? { filter: pineconeFilter } : {}));
|
|
173
193
|
return ((_a = result.matches) != null ? _a : []).map((m) => {
|
|
174
194
|
var _a2, _b;
|
|
175
195
|
return {
|
|
@@ -205,12 +225,6 @@ var PostgreSQLProvider_exports = {};
|
|
|
205
225
|
__export(PostgreSQLProvider_exports, {
|
|
206
226
|
PostgreSQLProvider: () => PostgreSQLProvider
|
|
207
227
|
});
|
|
208
|
-
function stripInternalFilterKeys(filter) {
|
|
209
|
-
if (!filter) return {};
|
|
210
|
-
return Object.fromEntries(
|
|
211
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
212
|
-
);
|
|
213
|
-
}
|
|
214
228
|
var import_pg, PostgreSQLProvider;
|
|
215
229
|
var init_PostgreSQLProvider = __esm({
|
|
216
230
|
"src/providers/vectordb/PostgreSQLProvider.ts"() {
|
|
@@ -303,7 +317,7 @@ var init_PostgreSQLProvider = __esm({
|
|
|
303
317
|
let whereClause = namespace ? `WHERE namespace = $3` : "";
|
|
304
318
|
const params = [vectorLiteral, topK];
|
|
305
319
|
if (namespace) params.push(namespace);
|
|
306
|
-
const publicFilter =
|
|
320
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
307
321
|
if (Object.keys(publicFilter).length > 0) {
|
|
308
322
|
const filterConditions = Object.entries(publicFilter).map(([key, val]) => {
|
|
309
323
|
const paramIdx = params.length + 1;
|
|
@@ -355,12 +369,6 @@ var MongoDBProvider_exports = {};
|
|
|
355
369
|
__export(MongoDBProvider_exports, {
|
|
356
370
|
MongoDBProvider: () => MongoDBProvider
|
|
357
371
|
});
|
|
358
|
-
function stripInternalFilterKeys2(filter) {
|
|
359
|
-
if (!filter) return {};
|
|
360
|
-
return Object.fromEntries(
|
|
361
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
362
|
-
);
|
|
363
|
-
}
|
|
364
372
|
var import_mongodb, MongoDBProvider;
|
|
365
373
|
var init_MongoDBProvider = __esm({
|
|
366
374
|
"src/providers/vectordb/MongoDBProvider.ts"() {
|
|
@@ -412,7 +420,7 @@ var init_MongoDBProvider = __esm({
|
|
|
412
420
|
await this.collection.bulkWrite(operations);
|
|
413
421
|
}
|
|
414
422
|
async query(vector, topK, namespace, filter) {
|
|
415
|
-
const publicFilter =
|
|
423
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
416
424
|
const pipeline = [
|
|
417
425
|
{
|
|
418
426
|
$vectorSearch: __spreadValues({
|
|
@@ -1087,11 +1095,12 @@ var init_UniversalVectorProvider = __esm({
|
|
|
1087
1095
|
namespace: "{{namespace}}",
|
|
1088
1096
|
filter: "{{filter}}"
|
|
1089
1097
|
});
|
|
1098
|
+
const sanitizedFilter = this.sanitizeFilter(filter);
|
|
1090
1099
|
const payload = buildPayload(template, {
|
|
1091
1100
|
vector,
|
|
1092
1101
|
topK,
|
|
1093
1102
|
namespace: namespace != null ? namespace : this.indexName,
|
|
1094
|
-
filter:
|
|
1103
|
+
filter: sanitizedFilter
|
|
1095
1104
|
});
|
|
1096
1105
|
try {
|
|
1097
1106
|
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,25 @@ 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
|
+
const result = {};
|
|
124
|
+
for (const [key, value] of Object.entries(filter)) {
|
|
125
|
+
if (key.startsWith("__") || key === "queryText" || key === "keywords") {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (key === "metadata" && typeof value === "object" && value !== null) {
|
|
129
|
+
Object.assign(result, value);
|
|
130
|
+
} else {
|
|
131
|
+
result[key] = value;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
117
136
|
};
|
|
118
137
|
}
|
|
119
138
|
});
|
|
@@ -177,11 +196,12 @@ var init_PineconeProvider = __esm({
|
|
|
177
196
|
}
|
|
178
197
|
async query(vector, topK, namespace, filter) {
|
|
179
198
|
var _a;
|
|
199
|
+
const pineconeFilter = this.sanitizeFilter(filter);
|
|
180
200
|
const result = await this.index(namespace).query(__spreadValues({
|
|
181
201
|
vector,
|
|
182
202
|
topK,
|
|
183
203
|
includeMetadata: true
|
|
184
|
-
},
|
|
204
|
+
}, Object.keys(pineconeFilter).length > 0 ? { filter: pineconeFilter } : {}));
|
|
185
205
|
return ((_a = result.matches) != null ? _a : []).map((m) => {
|
|
186
206
|
var _a2, _b;
|
|
187
207
|
return {
|
|
@@ -217,12 +237,6 @@ var PostgreSQLProvider_exports = {};
|
|
|
217
237
|
__export(PostgreSQLProvider_exports, {
|
|
218
238
|
PostgreSQLProvider: () => PostgreSQLProvider
|
|
219
239
|
});
|
|
220
|
-
function stripInternalFilterKeys(filter) {
|
|
221
|
-
if (!filter) return {};
|
|
222
|
-
return Object.fromEntries(
|
|
223
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
224
|
-
);
|
|
225
|
-
}
|
|
226
240
|
var import_pg, PostgreSQLProvider;
|
|
227
241
|
var init_PostgreSQLProvider = __esm({
|
|
228
242
|
"src/providers/vectordb/PostgreSQLProvider.ts"() {
|
|
@@ -315,7 +329,7 @@ var init_PostgreSQLProvider = __esm({
|
|
|
315
329
|
let whereClause = namespace ? `WHERE namespace = $3` : "";
|
|
316
330
|
const params = [vectorLiteral, topK];
|
|
317
331
|
if (namespace) params.push(namespace);
|
|
318
|
-
const publicFilter =
|
|
332
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
319
333
|
if (Object.keys(publicFilter).length > 0) {
|
|
320
334
|
const filterConditions = Object.entries(publicFilter).map(([key, val]) => {
|
|
321
335
|
const paramIdx = params.length + 1;
|
|
@@ -367,12 +381,6 @@ var MongoDBProvider_exports = {};
|
|
|
367
381
|
__export(MongoDBProvider_exports, {
|
|
368
382
|
MongoDBProvider: () => MongoDBProvider
|
|
369
383
|
});
|
|
370
|
-
function stripInternalFilterKeys2(filter) {
|
|
371
|
-
if (!filter) return {};
|
|
372
|
-
return Object.fromEntries(
|
|
373
|
-
Object.entries(filter).filter(([key]) => !key.startsWith("__"))
|
|
374
|
-
);
|
|
375
|
-
}
|
|
376
384
|
var import_mongodb, MongoDBProvider;
|
|
377
385
|
var init_MongoDBProvider = __esm({
|
|
378
386
|
"src/providers/vectordb/MongoDBProvider.ts"() {
|
|
@@ -424,7 +432,7 @@ var init_MongoDBProvider = __esm({
|
|
|
424
432
|
await this.collection.bulkWrite(operations);
|
|
425
433
|
}
|
|
426
434
|
async query(vector, topK, namespace, filter) {
|
|
427
|
-
const publicFilter =
|
|
435
|
+
const publicFilter = this.sanitizeFilter(filter);
|
|
428
436
|
const pipeline = [
|
|
429
437
|
{
|
|
430
438
|
$vectorSearch: __spreadValues({
|
|
@@ -1099,11 +1107,12 @@ var init_UniversalVectorProvider = __esm({
|
|
|
1099
1107
|
namespace: "{{namespace}}",
|
|
1100
1108
|
filter: "{{filter}}"
|
|
1101
1109
|
});
|
|
1110
|
+
const sanitizedFilter = this.sanitizeFilter(filter);
|
|
1102
1111
|
const payload = buildPayload(template, {
|
|
1103
1112
|
vector,
|
|
1104
1113
|
topK,
|
|
1105
1114
|
namespace: namespace != null ? namespace : this.indexName,
|
|
1106
|
-
filter:
|
|
1115
|
+
filter: sanitizedFilter
|
|
1107
1116
|
});
|
|
1108
1117
|
try {
|
|
1109
1118
|
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-RK2UDJA2.mjs";
|
|
4
4
|
import {
|
|
5
5
|
RedisProvider
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-H6RKMU7W.mjs";
|
|
7
7
|
import {
|
|
8
8
|
WeaviateProvider
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KTS3LLHY.mjs";
|
|
10
10
|
import {
|
|
11
11
|
UniversalVectorProvider
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GQT5LF4G.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-BJGFKDYF.mjs";
|
|
38
38
|
import "./chunk-EDLTMSNY.mjs";
|
|
39
39
|
import {
|
|
40
40
|
PineconeProvider
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-XCNXPECE.mjs";
|
|
42
42
|
import {
|
|
43
43
|
PostgreSQLProvider
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-LJWWPTWE.mjs";
|
|
45
45
|
import {
|
|
46
46
|
MongoDBProvider
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-2L2NC64R.mjs";
|
|
48
48
|
import {
|
|
49
49
|
MilvusProvider
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-3QWAK3RZ.mjs";
|
|
51
51
|
import {
|
|
52
52
|
QdrantProvider
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-5KNBWQM6.mjs";
|
|
54
54
|
import {
|
|
55
55
|
BaseVectorProvider
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-IMP6FUCY.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.6",
|
|
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,29 @@ 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
|
+
|
|
69
|
+
const result: Record<string, unknown> = {};
|
|
70
|
+
|
|
71
|
+
for (const [key, value] of Object.entries(filter)) {
|
|
72
|
+
if (key.startsWith('__') || key === 'queryText' || key === 'keywords') {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (key === 'metadata' && typeof value === 'object' && value !== null) {
|
|
77
|
+
// Merge metadata fields into the root for providers that expect flat filters
|
|
78
|
+
Object.assign(result, value);
|
|
79
|
+
} else {
|
|
80
|
+
result[key] = value;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
61
86
|
}
|
|
@@ -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