@retrivora-ai/rag-engine 0.2.8 → 0.3.0

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.
@@ -47,7 +47,7 @@ interface VectorDBConfig {
47
47
  *
48
48
  * For multi-table PostgreSQL search, the following options are also supported:
49
49
  * - tables?: string[] | string
50
- * - searchFields?: string[] // optional override for which columns receive exact-match boosts
50
+ * - searchFields?: string[] | string // optional override for which columns receive exact-match boosts
51
51
  */
52
52
  options: Record<string, unknown>;
53
53
  }
@@ -47,7 +47,7 @@ interface VectorDBConfig {
47
47
  *
48
48
  * For multi-table PostgreSQL search, the following options are also supported:
49
49
  * - tables?: string[] | string
50
- * - searchFields?: string[] // optional override for which columns receive exact-match boosts
50
+ * - searchFields?: string[] | string // optional override for which columns receive exact-match boosts
51
51
  */
52
52
  options: Record<string, unknown>;
53
53
  }
@@ -316,6 +316,20 @@ var ConfigValidator = class {
316
316
  severity: "error"
317
317
  });
318
318
  }
319
+ if (opts.tables && typeof opts.tables !== "string" && !Array.isArray(opts.tables)) {
320
+ errors.push({
321
+ field: "vectorDb.options.tables",
322
+ message: "PostgreSQL tables must be a string or a string array",
323
+ severity: "error"
324
+ });
325
+ }
326
+ if (opts.searchFields && typeof opts.searchFields !== "string" && !Array.isArray(opts.searchFields)) {
327
+ errors.push({
328
+ field: "vectorDb.options.searchFields",
329
+ message: "PostgreSQL searchFields must be a string or a string array",
330
+ severity: "error"
331
+ });
332
+ }
319
333
  return errors;
320
334
  }
321
335
  /**
@@ -1556,7 +1570,11 @@ var EmbeddingStrategyResolver = class {
1556
1570
  function normalizeHintValue(value) {
1557
1571
  return value.replace(/\s+/g, " ").trim();
1558
1572
  }
1573
+ function isLikelyPromptPhrase(value) {
1574
+ return /^(what|which|who|where|when|why|how)\b/i.test(value.trim());
1575
+ }
1559
1576
  function extractQueryFieldHints(question) {
1577
+ var _a, _b, _c, _d;
1560
1578
  if (!question.trim()) return [];
1561
1579
  const hints = /* @__PURE__ */ new Map();
1562
1580
  const addHint = (value, field) => {
@@ -1573,6 +1591,46 @@ function extractQueryFieldHints(question) {
1573
1591
  for (const match of question.matchAll(/["']([^"']{2,100})["']/g)) {
1574
1592
  addHint(match[1]);
1575
1593
  }
1594
+ const naturalQuestionPatterns = [
1595
+ /\b(?:what|which)\s+(?:is|are|was|were)\s+(?:the\s+)?([^?.!,]{1,60}?)\s+of\s+["']?([^"'\n?.!,]{2,120})["']?(?=[?.!,]|$)/gi,
1596
+ /\b(?:who|what)\s+(?:is|are|was|were)\s+["']?([^"'\n?.!,]{2,120})["']?(?=[?.!,]|$)/gi,
1597
+ /\b(?:about|for|regarding)\s+["']?([^"'\n?.!,]{2,120})["']?(?=[?.!,]|$)/gi
1598
+ ];
1599
+ const personCompanyPatterns = [
1600
+ /\bcompany(?:\s+name)?\s+(?:of|for)\s+["']?([^"'\n?.!,]{2,120})["']?(?=[?.!,]|$)/gi,
1601
+ /\b(?:which|what)\s+company\s+does\s+["']?([^"'\n?.!,]{2,120})["']?\s+work(?:\s+for|\s+at)?(?=[?.!,]|$)/gi,
1602
+ /\bwhere\s+does\s+["']?([^"'\n?.!,]{2,120})["']?\s+work(?:\s+for|\s+at)?(?=[?.!,]|$)/gi
1603
+ ];
1604
+ for (const pattern of personCompanyPatterns) {
1605
+ for (const match of question.matchAll(pattern)) {
1606
+ const name = match[1];
1607
+ if (name) addHint(name, "name");
1608
+ }
1609
+ }
1610
+ const universalPatterns = [
1611
+ { regex: /([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/gi, field: "email", group: 1 },
1612
+ { regex: /(\+?\d[\d\-\.\s\(\)]{6,}\d)/g, field: "phone", group: 1 },
1613
+ { regex: /(\b\d{4}-\d{2}-\d{2}\b|\b\d{1,2}\/\d{1,2}\/\d{2,4}\b)/g, field: "date", group: 1 },
1614
+ { regex: /(\$\s?\d{1,3}(?:,\d{3})*(?:\.\d+)?)/g, field: "amount", group: 1 },
1615
+ { regex: /\b(ID|id|identifier)[: ]\s*([A-Za-z0-9\-]{3,})\b/gi, field: "id", group: 2 },
1616
+ // Generic quoted phrase / proper-noun sequences as keywords (already partially handled above)
1617
+ { regex: /"([^"]{2,120})"/g, group: 1 },
1618
+ { regex: /'([^']{2,120})'/g, group: 1 }
1619
+ ];
1620
+ for (const p of universalPatterns) {
1621
+ for (const match of question.matchAll(p.regex)) {
1622
+ const val = p.group ? (_a = match[p.group]) != null ? _a : match[0] : match[0];
1623
+ if (!val) continue;
1624
+ if (p.field) addHint(val, p.field);
1625
+ else addHint(val);
1626
+ }
1627
+ }
1628
+ for (const pattern of naturalQuestionPatterns) {
1629
+ for (const match of question.matchAll(pattern)) {
1630
+ const value = (_b = match[2]) != null ? _b : match[1];
1631
+ if (value) addHint(value);
1632
+ }
1633
+ }
1576
1634
  const fieldPattern = `([^\\n:=?.!,]{1,60}?)`;
1577
1635
  const valuePattern = `([^\\n?.!,]{1,120}?)`;
1578
1636
  const fieldValuePatterns = [
@@ -1582,11 +1640,37 @@ function extractQueryFieldHints(question) {
1582
1640
  ];
1583
1641
  for (const pattern of fieldValuePatterns) {
1584
1642
  for (const match of question.matchAll(pattern)) {
1585
- addHint(match[2], match[1]);
1643
+ const field = normalizeHintValue((_c = match[1]) != null ? _c : "");
1644
+ const value = (_d = match[2]) != null ? _d : "";
1645
+ if (field && !isLikelyPromptPhrase(field)) {
1646
+ addHint(value, field);
1647
+ } else {
1648
+ addHint(value);
1649
+ }
1586
1650
  }
1587
1651
  }
1652
+ for (const match of question.matchAll(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+){0,3}\b/g)) {
1653
+ addHint(match[0]);
1654
+ }
1588
1655
  return [...hints.values()];
1589
1656
  }
1657
+ function buildQueryFilter(question, hints) {
1658
+ const filter = { metadata: {}, keywords: [], queryText: question };
1659
+ for (const hint of hints) {
1660
+ if (hint.field) {
1661
+ filter.metadata[hint.field] = hint.value;
1662
+ } else {
1663
+ filter.keywords.push(hint.value);
1664
+ }
1665
+ }
1666
+ for (const match of question.matchAll(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+){0,3}\b/g)) {
1667
+ const term = normalizeHintValue(match[0]);
1668
+ if (term && !filter.keywords.includes(term)) filter.keywords.push(term);
1669
+ }
1670
+ if (Object.keys(filter.metadata || {}).length === 0) delete filter.metadata;
1671
+ if (filter.keywords && filter.keywords.length === 0) delete filter.keywords;
1672
+ return filter;
1673
+ }
1590
1674
  var Pipeline = class {
1591
1675
  constructor(config) {
1592
1676
  this.initialised = false;
@@ -1675,10 +1759,9 @@ var Pipeline = class {
1675
1759
  try {
1676
1760
  const queryVector = await this.embeddingProvider.embed(question, { taskType: "query" });
1677
1761
  const fieldHints = extractQueryFieldHints(question);
1678
- const rawMatches = await this.vectorDB.query(queryVector, topK, ns, {
1679
- __queryText: question,
1680
- __fieldHints: fieldHints
1681
- });
1762
+ const filter = buildQueryFilter(question, fieldHints);
1763
+ filter.__entityHints = fieldHints;
1764
+ const rawMatches = await this.vectorDB.query(queryVector, topK, ns, filter);
1682
1765
  const sources = rawMatches.filter((m) => m.score >= scoreThreshold);
1683
1766
  const context = sources.length ? sources.map((m, i) => `[Source ${i + 1}]
1684
1767
  ${m.content}`).join("\n\n---\n\n") : "No relevant context found.";
@@ -1,3 +1,3 @@
1
- import '../RagConfig--ibz0b3W.mjs';
2
- export { c as createChatHandler, a as createHealthHandler, b as createIngestHandler, d as createUploadHandler } from '../index-w8qIEFvi.mjs';
1
+ import '../RagConfig-D3Inaf9N.mjs';
2
+ export { c as createChatHandler, a as createHealthHandler, b as createIngestHandler, d as createUploadHandler } from '../index-Ymwm-_OR.mjs';
3
3
  import 'next/server';
@@ -1,3 +1,3 @@
1
- import '../RagConfig--ibz0b3W.js';
2
- export { c as createChatHandler, a as createHealthHandler, b as createIngestHandler, d as createUploadHandler } from '../index-Dr1HN0se.js';
1
+ import '../RagConfig-D3Inaf9N.js';
2
+ export { c as createChatHandler, a as createHealthHandler, b as createIngestHandler, d as createUploadHandler } from '../index-BhNJQ2SS.js';
3
3
  import 'next/server';
@@ -1484,6 +1484,20 @@ var ConfigValidator = class {
1484
1484
  severity: "error"
1485
1485
  });
1486
1486
  }
1487
+ if (opts.tables && typeof opts.tables !== "string" && !Array.isArray(opts.tables)) {
1488
+ errors.push({
1489
+ field: "vectorDb.options.tables",
1490
+ message: "PostgreSQL tables must be a string or a string array",
1491
+ severity: "error"
1492
+ });
1493
+ }
1494
+ if (opts.searchFields && typeof opts.searchFields !== "string" && !Array.isArray(opts.searchFields)) {
1495
+ errors.push({
1496
+ field: "vectorDb.options.searchFields",
1497
+ message: "PostgreSQL searchFields must be a string or a string array",
1498
+ severity: "error"
1499
+ });
1500
+ }
1487
1501
  return errors;
1488
1502
  }
1489
1503
  /**
@@ -2680,7 +2694,11 @@ var EmbeddingStrategyResolver = class {
2680
2694
  function normalizeHintValue(value) {
2681
2695
  return value.replace(/\s+/g, " ").trim();
2682
2696
  }
2697
+ function isLikelyPromptPhrase(value) {
2698
+ return /^(what|which|who|where|when|why|how)\b/i.test(value.trim());
2699
+ }
2683
2700
  function extractQueryFieldHints(question) {
2701
+ var _a, _b, _c, _d;
2684
2702
  if (!question.trim()) return [];
2685
2703
  const hints = /* @__PURE__ */ new Map();
2686
2704
  const addHint = (value, field) => {
@@ -2697,6 +2715,46 @@ function extractQueryFieldHints(question) {
2697
2715
  for (const match of question.matchAll(/["']([^"']{2,100})["']/g)) {
2698
2716
  addHint(match[1]);
2699
2717
  }
2718
+ const naturalQuestionPatterns = [
2719
+ /\b(?:what|which)\s+(?:is|are|was|were)\s+(?:the\s+)?([^?.!,]{1,60}?)\s+of\s+["']?([^"'\n?.!,]{2,120})["']?(?=[?.!,]|$)/gi,
2720
+ /\b(?:who|what)\s+(?:is|are|was|were)\s+["']?([^"'\n?.!,]{2,120})["']?(?=[?.!,]|$)/gi,
2721
+ /\b(?:about|for|regarding)\s+["']?([^"'\n?.!,]{2,120})["']?(?=[?.!,]|$)/gi
2722
+ ];
2723
+ const personCompanyPatterns = [
2724
+ /\bcompany(?:\s+name)?\s+(?:of|for)\s+["']?([^"'\n?.!,]{2,120})["']?(?=[?.!,]|$)/gi,
2725
+ /\b(?:which|what)\s+company\s+does\s+["']?([^"'\n?.!,]{2,120})["']?\s+work(?:\s+for|\s+at)?(?=[?.!,]|$)/gi,
2726
+ /\bwhere\s+does\s+["']?([^"'\n?.!,]{2,120})["']?\s+work(?:\s+for|\s+at)?(?=[?.!,]|$)/gi
2727
+ ];
2728
+ for (const pattern of personCompanyPatterns) {
2729
+ for (const match of question.matchAll(pattern)) {
2730
+ const name = match[1];
2731
+ if (name) addHint(name, "name");
2732
+ }
2733
+ }
2734
+ const universalPatterns = [
2735
+ { regex: /([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/gi, field: "email", group: 1 },
2736
+ { regex: /(\+?\d[\d\-\.\s\(\)]{6,}\d)/g, field: "phone", group: 1 },
2737
+ { regex: /(\b\d{4}-\d{2}-\d{2}\b|\b\d{1,2}\/\d{1,2}\/\d{2,4}\b)/g, field: "date", group: 1 },
2738
+ { regex: /(\$\s?\d{1,3}(?:,\d{3})*(?:\.\d+)?)/g, field: "amount", group: 1 },
2739
+ { regex: /\b(ID|id|identifier)[: ]\s*([A-Za-z0-9\-]{3,})\b/gi, field: "id", group: 2 },
2740
+ // Generic quoted phrase / proper-noun sequences as keywords (already partially handled above)
2741
+ { regex: /"([^"]{2,120})"/g, group: 1 },
2742
+ { regex: /'([^']{2,120})'/g, group: 1 }
2743
+ ];
2744
+ for (const p of universalPatterns) {
2745
+ for (const match of question.matchAll(p.regex)) {
2746
+ const val = p.group ? (_a = match[p.group]) != null ? _a : match[0] : match[0];
2747
+ if (!val) continue;
2748
+ if (p.field) addHint(val, p.field);
2749
+ else addHint(val);
2750
+ }
2751
+ }
2752
+ for (const pattern of naturalQuestionPatterns) {
2753
+ for (const match of question.matchAll(pattern)) {
2754
+ const value = (_b = match[2]) != null ? _b : match[1];
2755
+ if (value) addHint(value);
2756
+ }
2757
+ }
2700
2758
  const fieldPattern = `([^\\n:=?.!,]{1,60}?)`;
2701
2759
  const valuePattern = `([^\\n?.!,]{1,120}?)`;
2702
2760
  const fieldValuePatterns = [
@@ -2706,11 +2764,37 @@ function extractQueryFieldHints(question) {
2706
2764
  ];
2707
2765
  for (const pattern of fieldValuePatterns) {
2708
2766
  for (const match of question.matchAll(pattern)) {
2709
- addHint(match[2], match[1]);
2767
+ const field = normalizeHintValue((_c = match[1]) != null ? _c : "");
2768
+ const value = (_d = match[2]) != null ? _d : "";
2769
+ if (field && !isLikelyPromptPhrase(field)) {
2770
+ addHint(value, field);
2771
+ } else {
2772
+ addHint(value);
2773
+ }
2710
2774
  }
2711
2775
  }
2776
+ for (const match of question.matchAll(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+){0,3}\b/g)) {
2777
+ addHint(match[0]);
2778
+ }
2712
2779
  return [...hints.values()];
2713
2780
  }
2781
+ function buildQueryFilter(question, hints) {
2782
+ const filter = { metadata: {}, keywords: [], queryText: question };
2783
+ for (const hint of hints) {
2784
+ if (hint.field) {
2785
+ filter.metadata[hint.field] = hint.value;
2786
+ } else {
2787
+ filter.keywords.push(hint.value);
2788
+ }
2789
+ }
2790
+ for (const match of question.matchAll(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+){0,3}\b/g)) {
2791
+ const term = normalizeHintValue(match[0]);
2792
+ if (term && !filter.keywords.includes(term)) filter.keywords.push(term);
2793
+ }
2794
+ if (Object.keys(filter.metadata || {}).length === 0) delete filter.metadata;
2795
+ if (filter.keywords && filter.keywords.length === 0) delete filter.keywords;
2796
+ return filter;
2797
+ }
2714
2798
  var Pipeline = class {
2715
2799
  constructor(config) {
2716
2800
  this.initialised = false;
@@ -2799,10 +2883,9 @@ var Pipeline = class {
2799
2883
  try {
2800
2884
  const queryVector = await this.embeddingProvider.embed(question, { taskType: "query" });
2801
2885
  const fieldHints = extractQueryFieldHints(question);
2802
- const rawMatches = await this.vectorDB.query(queryVector, topK, ns, {
2803
- __queryText: question,
2804
- __fieldHints: fieldHints
2805
- });
2886
+ const filter = buildQueryFilter(question, fieldHints);
2887
+ filter.__entityHints = fieldHints;
2888
+ const rawMatches = await this.vectorDB.query(queryVector, topK, ns, filter);
2806
2889
  const sources = rawMatches.filter((m) => m.score >= scoreThreshold);
2807
2890
  const context = sources.length ? sources.map((m, i) => `[Source ${i + 1}]
2808
2891
  ${m.content}`).join("\n\n---\n\n") : "No relevant context found.";
@@ -3,7 +3,7 @@ import {
3
3
  createHealthHandler,
4
4
  createIngestHandler,
5
5
  createUploadHandler
6
- } from "../chunk-CYVPACA7.mjs";
6
+ } from "../chunk-GT72OIOD.mjs";
7
7
  import "../chunk-EDLTMSNY.mjs";
8
8
  import "../chunk-FWCSY2DS.mjs";
9
9
  export {
@@ -1,4 +1,4 @@
1
- import { c as VectorDBConfig, L as LLMConfig, E as EmbeddingConfig, a as RagConfig, C as ChatResponse } from './RagConfig--ibz0b3W.js';
1
+ import { c as VectorDBConfig, L as LLMConfig, E as EmbeddingConfig, a as RagConfig, C as ChatResponse } from './RagConfig-D3Inaf9N.js';
2
2
  import { NextRequest, NextResponse } from 'next/server';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { c as VectorDBConfig, L as LLMConfig, E as EmbeddingConfig, a as RagConfig, C as ChatResponse } from './RagConfig--ibz0b3W.mjs';
1
+ import { c as VectorDBConfig, L as LLMConfig, E as EmbeddingConfig, a as RagConfig, C as ChatResponse } from './RagConfig-D3Inaf9N.mjs';
2
2
  import { NextRequest, NextResponse } from 'next/server';
3
3
 
4
4
  /**
package/dist/index.d.mts CHANGED
@@ -2,8 +2,8 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React$1, { ReactNode } from 'react';
3
3
  import { C as ChatMessage } from './DocumentChunker-BICIjSuG.mjs';
4
4
  export { a as ChatOptions, b as Chunk, c as ChunkOptions, E as EmbedOptions, I as ILLMProvider } from './DocumentChunker-BICIjSuG.mjs';
5
- import { V as VectorMatch, U as UIConfig } from './RagConfig--ibz0b3W.mjs';
6
- export { C as ChatResponse, E as EmbeddingConfig, I as IngestDocument, L as LLMConfig, R as RAGConfig, a as RagConfig, b as UpsertDocument, c as VectorDBConfig } from './RagConfig--ibz0b3W.mjs';
5
+ import { V as VectorMatch, U as UIConfig } from './RagConfig-D3Inaf9N.mjs';
6
+ export { C as ChatResponse, E as EmbeddingConfig, I as IngestDocument, L as LLMConfig, R as RAGConfig, a as RagConfig, b as UpsertDocument, c as VectorDBConfig } from './RagConfig-D3Inaf9N.mjs';
7
7
 
8
8
  interface ChatWidgetProps {
9
9
  /** Position of the floating button. Defaults to bottom-right. */
package/dist/index.d.ts CHANGED
@@ -2,8 +2,8 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React$1, { ReactNode } from 'react';
3
3
  import { C as ChatMessage } from './DocumentChunker-BICIjSuG.js';
4
4
  export { a as ChatOptions, b as Chunk, c as ChunkOptions, E as EmbedOptions, I as ILLMProvider } from './DocumentChunker-BICIjSuG.js';
5
- import { V as VectorMatch, U as UIConfig } from './RagConfig--ibz0b3W.js';
6
- export { C as ChatResponse, E as EmbeddingConfig, I as IngestDocument, L as LLMConfig, R as RAGConfig, a as RagConfig, b as UpsertDocument, c as VectorDBConfig } from './RagConfig--ibz0b3W.js';
5
+ import { V as VectorMatch, U as UIConfig } from './RagConfig-D3Inaf9N.js';
6
+ export { C as ChatResponse, E as EmbeddingConfig, I as IngestDocument, L as LLMConfig, R as RAGConfig, a as RagConfig, b as UpsertDocument, c as VectorDBConfig } from './RagConfig-D3Inaf9N.js';
7
7
 
8
8
  interface ChatWidgetProps {
9
9
  /** Position of the floating button. Defaults to bottom-right. */
package/dist/server.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { a as RagConfig, C as ChatResponse, I as IngestDocument, c as VectorDBConfig, b as UpsertDocument, V as VectorMatch, L as LLMConfig, E as EmbeddingConfig, d as VectorDBProvider, e as LLMProvider, f as EmbeddingProvider } from './RagConfig--ibz0b3W.mjs';
2
- export { R as RAGConfig, U as UIConfig } from './RagConfig--ibz0b3W.mjs';
1
+ import { a as RagConfig, C as ChatResponse, I as IngestDocument, c as VectorDBConfig, b as UpsertDocument, V as VectorMatch, L as LLMConfig, E as EmbeddingConfig, d as VectorDBProvider, e as LLMProvider, f as EmbeddingProvider } from './RagConfig-D3Inaf9N.mjs';
2
+ export { R as RAGConfig, U as UIConfig } from './RagConfig-D3Inaf9N.mjs';
3
3
  import { C as ChatMessage, I as ILLMProvider, a as ChatOptions, E as EmbedOptions } from './DocumentChunker-BICIjSuG.mjs';
4
4
  export { b as Chunk, c as ChunkOptions, D as DocumentChunker } from './DocumentChunker-BICIjSuG.mjs';
5
- import { H as HealthCheckResult } from './index-w8qIEFvi.mjs';
6
- export { P as ProviderHealthCheck, c as createChatHandler, a as createHealthHandler, b as createIngestHandler, d as createUploadHandler } from './index-w8qIEFvi.mjs';
5
+ import { H as HealthCheckResult } from './index-Ymwm-_OR.mjs';
6
+ export { P as ProviderHealthCheck, c as createChatHandler, a as createHealthHandler, b as createIngestHandler, d as createUploadHandler } from './index-Ymwm-_OR.mjs';
7
7
  import 'next/server';
8
8
 
9
9
  /**
@@ -706,7 +706,7 @@ declare class MultiTablePostgresProvider extends BaseVectorProvider {
706
706
  private readonly dimensions;
707
707
  private readonly connectionString;
708
708
  private tables;
709
- private tableSearchConfig;
709
+ private searchFields;
710
710
  constructor(config: VectorDBConfig);
711
711
  initialize(): Promise<void>;
712
712
  /**
@@ -726,8 +726,6 @@ declare class MultiTablePostgresProvider extends BaseVectorProvider {
726
726
  deleteNamespace(_namespace: string): Promise<void>;
727
727
  ping(): Promise<boolean>;
728
728
  disconnect(): Promise<void>;
729
- private loadTableSearchConfig;
730
- private parseConfiguredSearchFields;
731
729
  }
732
730
 
733
731
  /**
package/dist/server.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { a as RagConfig, C as ChatResponse, I as IngestDocument, c as VectorDBConfig, b as UpsertDocument, V as VectorMatch, L as LLMConfig, E as EmbeddingConfig, d as VectorDBProvider, e as LLMProvider, f as EmbeddingProvider } from './RagConfig--ibz0b3W.js';
2
- export { R as RAGConfig, U as UIConfig } from './RagConfig--ibz0b3W.js';
1
+ import { a as RagConfig, C as ChatResponse, I as IngestDocument, c as VectorDBConfig, b as UpsertDocument, V as VectorMatch, L as LLMConfig, E as EmbeddingConfig, d as VectorDBProvider, e as LLMProvider, f as EmbeddingProvider } from './RagConfig-D3Inaf9N.js';
2
+ export { R as RAGConfig, U as UIConfig } from './RagConfig-D3Inaf9N.js';
3
3
  import { C as ChatMessage, I as ILLMProvider, a as ChatOptions, E as EmbedOptions } from './DocumentChunker-BICIjSuG.js';
4
4
  export { b as Chunk, c as ChunkOptions, D as DocumentChunker } from './DocumentChunker-BICIjSuG.js';
5
- import { H as HealthCheckResult } from './index-Dr1HN0se.js';
6
- export { P as ProviderHealthCheck, c as createChatHandler, a as createHealthHandler, b as createIngestHandler, d as createUploadHandler } from './index-Dr1HN0se.js';
5
+ import { H as HealthCheckResult } from './index-BhNJQ2SS.js';
6
+ export { P as ProviderHealthCheck, c as createChatHandler, a as createHealthHandler, b as createIngestHandler, d as createUploadHandler } from './index-BhNJQ2SS.js';
7
7
  import 'next/server';
8
8
 
9
9
  /**
@@ -706,7 +706,7 @@ declare class MultiTablePostgresProvider extends BaseVectorProvider {
706
706
  private readonly dimensions;
707
707
  private readonly connectionString;
708
708
  private tables;
709
- private tableSearchConfig;
709
+ private searchFields;
710
710
  constructor(config: VectorDBConfig);
711
711
  initialize(): Promise<void>;
712
712
  /**
@@ -726,8 +726,6 @@ declare class MultiTablePostgresProvider extends BaseVectorProvider {
726
726
  deleteNamespace(_namespace: string): Promise<void>;
727
727
  ping(): Promise<boolean>;
728
728
  disconnect(): Promise<void>;
729
- private loadTableSearchConfig;
730
- private parseConfiguredSearchFields;
731
729
  }
732
730
 
733
731
  /**