@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.
Files changed (33) hide show
  1. package/dist/{ChromaDBProvider-T7TK3ONZ.mjs → ChromaDBProvider-GI7TB7GJ.mjs} +2 -2
  2. package/dist/{MilvusProvider-Y5FV5EAE.mjs → MilvusProvider-WDVTFB7D.mjs} +2 -2
  3. package/dist/{MongoDBProvider-KGO6N23T.mjs → MongoDBProvider-NWAOHQAY.mjs} +2 -2
  4. package/dist/{PineconeProvider-A47MRRYJ.mjs → PineconeProvider-BE2JWSPD.mjs} +2 -2
  5. package/dist/{PostgreSQLProvider-ILWADFAP.mjs → PostgreSQLProvider-5HHTK4SU.mjs} +2 -2
  6. package/dist/{QdrantProvider-OLPJK7CY.mjs → QdrantProvider-XVDVBNIG.mjs} +2 -2
  7. package/dist/{RedisProvider-ANEJ3BHR.mjs → RedisProvider-EK2R2PQH.mjs} +2 -2
  8. package/dist/{UniversalVectorProvider-QJIV2AJJ.mjs → UniversalVectorProvider-YIDRX6VT.mjs} +2 -2
  9. package/dist/{WeaviateProvider-WIK2QN23.mjs → WeaviateProvider-4CAPQ7UY.mjs} +2 -2
  10. package/dist/{chunk-IFPISZ2S.mjs → chunk-2L2NC64R.mjs} +2 -8
  11. package/dist/{chunk-VEJNRS4B.mjs → chunk-3QWAK3RZ.mjs} +1 -1
  12. package/dist/{chunk-W2PQR3UK.mjs → chunk-5KNBWQM6.mjs} +1 -1
  13. package/dist/{chunk-GE4AVGA5.mjs → chunk-BJGFKDYF.mjs} +9 -9
  14. package/dist/{chunk-VV2ML6TM.mjs → chunk-GQT5LF4G.mjs} +3 -2
  15. package/dist/{chunk-HOMXEE3M.mjs → chunk-H6RKMU7W.mjs} +1 -1
  16. package/dist/chunk-IMP6FUCY.mjs +30 -0
  17. package/dist/{chunk-RUKZC3ON.mjs → chunk-KTS3LLHY.mjs} +1 -1
  18. package/dist/{chunk-6GSARSCP.mjs → chunk-LJWWPTWE.mjs} +2 -8
  19. package/dist/{chunk-VKE5ZW7Y.mjs → chunk-RK2UDJA2.mjs} +1 -1
  20. package/dist/{chunk-BMHJTWSU.mjs → chunk-XCNXPECE.mjs} +3 -2
  21. package/dist/handlers/index.js +25 -16
  22. package/dist/handlers/index.mjs +1 -1
  23. package/dist/server.d.mts +5 -0
  24. package/dist/server.d.ts +5 -0
  25. package/dist/server.js +25 -16
  26. package/dist/server.mjs +11 -11
  27. package/package.json +1 -1
  28. package/src/providers/vectordb/BaseVectorProvider.ts +25 -0
  29. package/src/providers/vectordb/MongoDBProvider.ts +1 -9
  30. package/src/providers/vectordb/PineconeProvider.ts +2 -1
  31. package/src/providers/vectordb/PostgreSQLProvider.ts +1 -9
  32. package/src/providers/vectordb/UniversalVectorProvider.ts +2 -1
  33. package/dist/chunk-VOIWNO5O.mjs +0 -11
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ChromaDBProvider
3
- } from "./chunk-VKE5ZW7Y.mjs";
4
- import "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-RK2UDJA2.mjs";
4
+ import "./chunk-IMP6FUCY.mjs";
5
5
  import "./chunk-FWCSY2DS.mjs";
6
6
  export {
7
7
  ChromaDBProvider
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  MilvusProvider
3
- } from "./chunk-VEJNRS4B.mjs";
4
- import "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-3QWAK3RZ.mjs";
4
+ import "./chunk-IMP6FUCY.mjs";
5
5
  import "./chunk-FWCSY2DS.mjs";
6
6
  export {
7
7
  MilvusProvider
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  MongoDBProvider
3
- } from "./chunk-IFPISZ2S.mjs";
4
- import "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-2L2NC64R.mjs";
4
+ import "./chunk-IMP6FUCY.mjs";
5
5
  import "./chunk-FWCSY2DS.mjs";
6
6
  export {
7
7
  MongoDBProvider
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  PineconeProvider
3
- } from "./chunk-BMHJTWSU.mjs";
4
- import "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-XCNXPECE.mjs";
4
+ import "./chunk-IMP6FUCY.mjs";
5
5
  import "./chunk-FWCSY2DS.mjs";
6
6
  export {
7
7
  PineconeProvider
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  PostgreSQLProvider
3
- } from "./chunk-6GSARSCP.mjs";
4
- import "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-LJWWPTWE.mjs";
4
+ import "./chunk-IMP6FUCY.mjs";
5
5
  import "./chunk-FWCSY2DS.mjs";
6
6
  export {
7
7
  PostgreSQLProvider
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  QdrantProvider
3
- } from "./chunk-W2PQR3UK.mjs";
4
- import "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-5KNBWQM6.mjs";
4
+ import "./chunk-IMP6FUCY.mjs";
5
5
  import "./chunk-FWCSY2DS.mjs";
6
6
  export {
7
7
  QdrantProvider
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RedisProvider
3
- } from "./chunk-HOMXEE3M.mjs";
4
- import "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-H6RKMU7W.mjs";
4
+ import "./chunk-IMP6FUCY.mjs";
5
5
  import "./chunk-FWCSY2DS.mjs";
6
6
  export {
7
7
  RedisProvider
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  UniversalVectorProvider
3
- } from "./chunk-VV2ML6TM.mjs";
3
+ } from "./chunk-GQT5LF4G.mjs";
4
4
  import "./chunk-EDLTMSNY.mjs";
5
- import "./chunk-VOIWNO5O.mjs";
5
+ import "./chunk-IMP6FUCY.mjs";
6
6
  import "./chunk-FWCSY2DS.mjs";
7
7
  export {
8
8
  UniversalVectorProvider
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  WeaviateProvider
3
- } from "./chunk-RUKZC3ON.mjs";
4
- import "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-KTS3LLHY.mjs";
4
+ import "./chunk-IMP6FUCY.mjs";
5
5
  import "./chunk-FWCSY2DS.mjs";
6
6
  export {
7
7
  WeaviateProvider
@@ -1,18 +1,12 @@
1
1
  import {
2
2
  BaseVectorProvider
3
- } from "./chunk-VOIWNO5O.mjs";
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 = stripInternalFilterKeys(filter);
55
+ const publicFilter = this.sanitizeFilter(filter);
62
56
  const pipeline = [
63
57
  {
64
58
  $vectorSearch: __spreadValues({
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BaseVectorProvider
3
- } from "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-IMP6FUCY.mjs";
4
4
  import {
5
5
  __spreadValues
6
6
  } from "./chunk-FWCSY2DS.mjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BaseVectorProvider
3
- } from "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-IMP6FUCY.mjs";
4
4
  import {
5
5
  __spreadValues
6
6
  } from "./chunk-FWCSY2DS.mjs";
@@ -1370,41 +1370,41 @@ var ProviderRegistry = class {
1370
1370
  }
1371
1371
  switch (provider) {
1372
1372
  case "pinecone": {
1373
- const { PineconeProvider } = await import("./PineconeProvider-A47MRRYJ.mjs");
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-ILWADFAP.mjs");
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-KGO6N23T.mjs");
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-Y5FV5EAE.mjs");
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-OLPJK7CY.mjs");
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-T7TK3ONZ.mjs");
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-ANEJ3BHR.mjs");
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-WIK2QN23.mjs");
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-QJIV2AJJ.mjs");
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-VOIWNO5O.mjs";
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: filter != null ? filter : {}
83
+ filter: sanitizedFilter
83
84
  });
84
85
  try {
85
86
  const response = await this.http.post(endpoint, payload);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BaseVectorProvider
3
- } from "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-IMP6FUCY.mjs";
4
4
  import {
5
5
  __spreadValues
6
6
  } from "./chunk-FWCSY2DS.mjs";
@@ -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,6 +1,6 @@
1
1
  import {
2
2
  BaseVectorProvider
3
- } from "./chunk-VOIWNO5O.mjs";
3
+ } from "./chunk-IMP6FUCY.mjs";
4
4
  import {
5
5
  __spreadValues
6
6
  } from "./chunk-FWCSY2DS.mjs";
@@ -1,15 +1,9 @@
1
1
  import {
2
2
  BaseVectorProvider
3
- } from "./chunk-VOIWNO5O.mjs";
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 = stripInternalFilterKeys(filter);
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-VOIWNO5O.mjs";
3
+ } from "./chunk-IMP6FUCY.mjs";
4
4
  import {
5
5
  __spreadValues
6
6
  } from "./chunk-FWCSY2DS.mjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BaseVectorProvider
3
- } from "./chunk-VOIWNO5O.mjs";
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
- }, filter ? { filter } : {}));
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 {
@@ -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
- }, filter ? { filter } : {}));
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 = stripInternalFilterKeys(filter);
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 = stripInternalFilterKeys2(filter);
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: filter != null ? filter : {}
1103
+ filter: sanitizedFilter
1095
1104
  });
1096
1105
  try {
1097
1106
  const response = await this.http.post(endpoint, payload);
@@ -3,7 +3,7 @@ import {
3
3
  createHealthHandler,
4
4
  createIngestHandler,
5
5
  createUploadHandler
6
- } from "../chunk-GE4AVGA5.mjs";
6
+ } from "../chunk-BJGFKDYF.mjs";
7
7
  import "../chunk-EDLTMSNY.mjs";
8
8
  import "../chunk-FWCSY2DS.mjs";
9
9
  export {
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
- }, filter ? { filter } : {}));
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 = stripInternalFilterKeys(filter);
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 = stripInternalFilterKeys2(filter);
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: filter != null ? 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-VKE5ZW7Y.mjs";
3
+ } from "./chunk-RK2UDJA2.mjs";
4
4
  import {
5
5
  RedisProvider
6
- } from "./chunk-HOMXEE3M.mjs";
6
+ } from "./chunk-H6RKMU7W.mjs";
7
7
  import {
8
8
  WeaviateProvider
9
- } from "./chunk-RUKZC3ON.mjs";
9
+ } from "./chunk-KTS3LLHY.mjs";
10
10
  import {
11
11
  UniversalVectorProvider
12
- } from "./chunk-VV2ML6TM.mjs";
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-GE4AVGA5.mjs";
37
+ } from "./chunk-BJGFKDYF.mjs";
38
38
  import "./chunk-EDLTMSNY.mjs";
39
39
  import {
40
40
  PineconeProvider
41
- } from "./chunk-BMHJTWSU.mjs";
41
+ } from "./chunk-XCNXPECE.mjs";
42
42
  import {
43
43
  PostgreSQLProvider
44
- } from "./chunk-6GSARSCP.mjs";
44
+ } from "./chunk-LJWWPTWE.mjs";
45
45
  import {
46
46
  MongoDBProvider
47
- } from "./chunk-IFPISZ2S.mjs";
47
+ } from "./chunk-2L2NC64R.mjs";
48
48
  import {
49
49
  MilvusProvider
50
- } from "./chunk-VEJNRS4B.mjs";
50
+ } from "./chunk-3QWAK3RZ.mjs";
51
51
  import {
52
52
  QdrantProvider
53
- } from "./chunk-W2PQR3UK.mjs";
53
+ } from "./chunk-5KNBWQM6.mjs";
54
54
  import {
55
55
  BaseVectorProvider
56
- } from "./chunk-VOIWNO5O.mjs";
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.4",
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 = stripInternalFilterKeys(filter);
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
- ...(filter ? { filter } : {}),
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 = stripInternalFilterKeys(filter);
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: filter ?? {},
140
+ filter: sanitizedFilter,
140
141
  });
141
142
 
142
143
  try {
@@ -1,11 +0,0 @@
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
-
9
- export {
10
- BaseVectorProvider
11
- };