@hazeljs/rag 0.2.4 → 0.3.1

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 (40) hide show
  1. package/dist/__tests__/errors/rag.error.test.d.ts +2 -0
  2. package/dist/__tests__/errors/rag.error.test.d.ts.map +1 -0
  3. package/dist/__tests__/errors/rag.error.test.js +95 -0
  4. package/dist/__tests__/errors/rag.error.test.js.map +1 -0
  5. package/dist/__tests__/reranking/cohere.reranker.test.d.ts +2 -0
  6. package/dist/__tests__/reranking/cohere.reranker.test.d.ts.map +1 -0
  7. package/dist/__tests__/reranking/cohere.reranker.test.js +68 -0
  8. package/dist/__tests__/reranking/cohere.reranker.test.js.map +1 -0
  9. package/dist/__tests__/utils/debug.test.d.ts +2 -0
  10. package/dist/__tests__/utils/debug.test.d.ts.map +1 -0
  11. package/dist/__tests__/utils/debug.test.js +99 -0
  12. package/dist/__tests__/utils/debug.test.js.map +1 -0
  13. package/dist/errors/rag.error.d.ts +33 -0
  14. package/dist/errors/rag.error.d.ts.map +1 -0
  15. package/dist/errors/rag.error.js +64 -0
  16. package/dist/errors/rag.error.js.map +1 -0
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +11 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/rag-pipeline.d.ts +39 -3
  22. package/dist/rag-pipeline.d.ts.map +1 -1
  23. package/dist/rag-pipeline.js +141 -11
  24. package/dist/rag-pipeline.js.map +1 -1
  25. package/dist/rag.service.d.ts +60 -11
  26. package/dist/rag.service.d.ts.map +1 -1
  27. package/dist/rag.service.js +390 -28
  28. package/dist/rag.service.js.map +1 -1
  29. package/dist/reranking/cohere.reranker.d.ts +34 -0
  30. package/dist/reranking/cohere.reranker.d.ts.map +1 -0
  31. package/dist/reranking/cohere.reranker.js +58 -0
  32. package/dist/reranking/cohere.reranker.js.map +1 -0
  33. package/dist/types/index.d.ts +10 -0
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/types/index.js.map +1 -1
  36. package/dist/utils/debug.d.ts +29 -0
  37. package/dist/utils/debug.d.ts.map +1 -0
  38. package/dist/utils/debug.js +82 -0
  39. package/dist/utils/debug.js.map +1 -0
  40. package/package.json +4 -4
@@ -6,10 +6,73 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.RAGPipeline = void 0;
8
8
  const types_1 = require("./types");
9
+ const bm25_1 = require("./retrieval/bm25");
10
+ const openai_embeddings_1 = require("./embeddings/openai-embeddings");
11
+ const cohere_embeddings_1 = require("./embeddings/cohere-embeddings");
12
+ const memory_vector_store_1 = require("./vector-stores/memory-vector-store");
13
+ const recursive_text_splitter_1 = require("./text-splitters/recursive-text-splitter");
9
14
  class RAGPipeline {
10
15
  constructor(config, llmFunction) {
16
+ this.bm25Indexed = false;
11
17
  this.config = config;
12
18
  this.llmFunction = llmFunction;
19
+ this.bm25 = new bm25_1.BM25();
20
+ }
21
+ /**
22
+ * Create a RAGPipeline with sensible defaults from minimal configuration.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const pipeline = RAGPipeline.from({ provider: 'openai', topK: 5, llm: myLLM });
27
+ * await pipeline.initialize();
28
+ * await pipeline.addDocuments(docs);
29
+ * const result = await pipeline.query('What is X?');
30
+ * ```
31
+ */
32
+ static from(quick = {}) {
33
+ const provider = quick.provider ?? 'openai';
34
+ // Resolve embedding provider
35
+ let embeddingProvider;
36
+ switch (provider) {
37
+ case 'cohere': {
38
+ const apiKey = quick.apiKey ?? process.env.COHERE_API_KEY;
39
+ if (!apiKey) {
40
+ throw new Error('RAGPipeline.from(): Missing API key for Cohere. ' +
41
+ 'Pass `apiKey` or set the COHERE_API_KEY environment variable.');
42
+ }
43
+ embeddingProvider = new cohere_embeddings_1.CohereEmbeddings({
44
+ apiKey,
45
+ model: quick.embeddingModel,
46
+ });
47
+ break;
48
+ }
49
+ case 'openai':
50
+ default: {
51
+ const apiKey = quick.apiKey ?? process.env.OPENAI_API_KEY;
52
+ if (!apiKey) {
53
+ throw new Error('RAGPipeline.from(): Missing API key for OpenAI. ' +
54
+ 'Pass `apiKey` or set the OPENAI_API_KEY environment variable.');
55
+ }
56
+ embeddingProvider = new openai_embeddings_1.OpenAIEmbeddings({
57
+ apiKey,
58
+ model: quick.embeddingModel,
59
+ });
60
+ break;
61
+ }
62
+ }
63
+ // Resolve vector store (currently only memory; extensible later)
64
+ const vectorStore = new memory_vector_store_1.MemoryVectorStore(embeddingProvider);
65
+ // Resolve text splitter
66
+ const textSplitter = new recursive_text_splitter_1.RecursiveTextSplitter({
67
+ chunkSize: quick.chunkSize ?? 1000,
68
+ chunkOverlap: quick.chunkOverlap ?? 200,
69
+ });
70
+ return new RAGPipeline({
71
+ vectorStore,
72
+ embeddingProvider,
73
+ textSplitter,
74
+ topK: quick.topK ?? 5,
75
+ }, quick.llm);
13
76
  }
14
77
  /**
15
78
  * Initialize the RAG pipeline
@@ -26,7 +89,20 @@ class RAGPipeline {
26
89
  if (this.config.textSplitter) {
27
90
  processedDocs = this.config.textSplitter.splitDocuments(documents);
28
91
  }
29
- return this.config.vectorStore.addDocuments(processedDocs);
92
+ const ids = await this.config.vectorStore.addDocuments(processedDocs);
93
+ // Index in BM25 for hybrid search
94
+ const bm25Docs = processedDocs.map((doc, i) => ({
95
+ id: doc.id || ids[i],
96
+ content: doc.content,
97
+ tokens: doc.content
98
+ .toLowerCase()
99
+ .replace(/[^\w\s]/g, ' ')
100
+ .split(/\s+/)
101
+ .filter((t) => t.length > 0),
102
+ }));
103
+ this.bm25.addDocuments(bm25Docs);
104
+ this.bm25Indexed = true;
105
+ return ids;
30
106
  }
31
107
  /**
32
108
  * Query the RAG system
@@ -55,16 +131,26 @@ class RAGPipeline {
55
131
  * Retrieve relevant documents
56
132
  */
57
133
  async retrieve(query, options = {}, strategy = types_1.RetrievalStrategy.SIMILARITY) {
134
+ let results;
58
135
  switch (strategy) {
59
136
  case types_1.RetrievalStrategy.SIMILARITY:
60
- return this.config.vectorStore.search(query, options);
137
+ results = await this.config.vectorStore.search(query, options);
138
+ break;
61
139
  case types_1.RetrievalStrategy.MMR:
62
- return this.retrieveWithMMR(query, options);
140
+ results = await this.retrieveWithMMR(query, options);
141
+ break;
63
142
  case types_1.RetrievalStrategy.HYBRID:
64
- return this.retrieveHybrid(query, options);
143
+ results = await this.retrieveHybrid(query, options);
144
+ break;
65
145
  default:
66
- return this.config.vectorStore.search(query, options);
146
+ results = await this.config.vectorStore.search(query, options);
147
+ break;
148
+ }
149
+ // Apply reranker if configured
150
+ if (this.config.reranker && results.length > 0) {
151
+ results = await this.config.reranker.rerank(query, results, options.topK || this.config.topK || 5);
67
152
  }
153
+ return results;
68
154
  }
69
155
  /**
70
156
  * Retrieve with Maximal Marginal Relevance (MMR)
@@ -120,14 +206,56 @@ class RAGPipeline {
120
206
  return selected;
121
207
  }
122
208
  /**
123
- * Hybrid retrieval (combines keyword and semantic search)
124
- * For now, just returns semantic search results
125
- * TODO: Implement keyword search integration
209
+ * Hybrid retrieval combines BM25 keyword search with vector similarity.
210
+ * Uses weighted score fusion (default 0.7 vector, 0.3 keyword).
126
211
  */
127
212
  async retrieveHybrid(query, options = {}) {
128
- // For now, fallback to similarity search
129
- // In production, this would combine BM25 or other keyword search with vector search
130
- return this.config.vectorStore.search(query, options);
213
+ const topK = options.topK || this.config.topK || 5;
214
+ // Always run vector search
215
+ const vectorResults = await this.config.vectorStore.search(query, {
216
+ ...options,
217
+ topK: topK * 2,
218
+ });
219
+ // If BM25 hasn't been indexed yet, fall back to vector-only
220
+ if (!this.bm25Indexed) {
221
+ return vectorResults.slice(0, topK);
222
+ }
223
+ // BM25 keyword search
224
+ const keywordResults = this.bm25.search(query, topK * 2);
225
+ // Normalize scores to [0, 1]
226
+ const normalize = (items) => {
227
+ if (items.length === 0)
228
+ return new Map();
229
+ const scores = items.map((r) => r.score);
230
+ const min = Math.min(...scores);
231
+ const max = Math.max(...scores);
232
+ const range = max - min || 1;
233
+ return new Map(items.map((r) => [r.id, (r.score - min) / range]));
234
+ };
235
+ const vectorScores = normalize(vectorResults.map((r) => ({ id: r.id, score: r.score })));
236
+ const keywordScores = normalize(keywordResults);
237
+ const vectorWeight = 0.7;
238
+ const keywordWeight = 0.3;
239
+ // Fuse scores
240
+ const allIds = new Set([...vectorScores.keys(), ...keywordScores.keys()]);
241
+ const fused = [];
242
+ for (const id of allIds) {
243
+ const vs = vectorScores.get(id) || 0;
244
+ const ks = keywordScores.get(id) || 0;
245
+ fused.push({ id, score: vectorWeight * vs + keywordWeight * ks });
246
+ }
247
+ fused.sort((a, b) => b.score - a.score);
248
+ // Map back to full SearchResult objects
249
+ const resultMap = new Map(vectorResults.map((r) => [r.id, r]));
250
+ return fused
251
+ .slice(0, topK)
252
+ .map((f) => {
253
+ const original = resultMap.get(f.id);
254
+ if (original)
255
+ return { ...original, score: f.score };
256
+ return null;
257
+ })
258
+ .filter((r) => r !== null);
131
259
  }
132
260
  /**
133
261
  * Build context string from search results
@@ -175,6 +303,8 @@ class RAGPipeline {
175
303
  */
176
304
  async clear() {
177
305
  await this.config.vectorStore.clear();
306
+ this.bm25.clear();
307
+ this.bm25Indexed = false;
178
308
  }
179
309
  }
180
310
  exports.RAGPipeline = RAGPipeline;
@@ -1 +1 @@
1
- {"version":3,"file":"rag-pipeline.js","sourceRoot":"","sources":["../src/rag-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rag-pipeline.js","sourceRoot":"","sources":["../src/rag-pipeline.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,21 @@ export interface RAGServiceConfig {
11
11
  textSplitter?: TextSplitter;
12
12
  llmFunction?: LLMFunction;
13
13
  topK?: number;
14
+ /** Custom query generator for multi-query retrieval (uses simple variations if not set). */
15
+ queryGenerator?: (question: string, numQueries: number) => Promise<string[]>;
16
+ /** Weights for hybrid search. Defaults: vectorWeight=0.7, keywordWeight=0.3. */
17
+ hybridWeights?: {
18
+ vectorWeight?: number;
19
+ keywordWeight?: number;
20
+ };
14
21
  }
15
22
  export declare class RAGService {
16
23
  private config;
17
24
  private pipeline;
25
+ private multiQueryRetrieval?;
26
+ private hybridRetrieval?;
27
+ private bm25;
28
+ private conversationHistory;
18
29
  constructor(config: RAGServiceConfig);
19
30
  /**
20
31
  * Initialize the RAG service
@@ -24,6 +35,27 @@ export declare class RAGService {
24
35
  * Index a document or multiple documents
25
36
  */
26
37
  index(documents: Document | Document[]): Promise<string[]>;
38
+ /**
39
+ * Ingest documents from a file path, URL, or directory.
40
+ * Auto-detects the source type and uses the appropriate loader.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * await rag.ingest('./docs/guide.pdf');
45
+ * await rag.ingest('./data/faq.csv');
46
+ * await rag.ingest('https://example.com/page');
47
+ * await rag.ingest('./knowledge-base/'); // loads entire directory
48
+ * ```
49
+ */
50
+ ingest(source: string): Promise<string[]>;
51
+ /**
52
+ * Auto-detect source type and load documents.
53
+ */
54
+ private loadSource;
55
+ /**
56
+ * Extract file extension from a path.
57
+ */
58
+ private getExtension;
27
59
  /**
28
60
  * Search for similar documents
29
61
  */
@@ -47,24 +79,39 @@ export declare class RAGService {
47
79
  }>;
48
80
  /**
49
81
  * Multi-query RAG
50
- * Generates multiple search queries and combines results
82
+ * Generates multiple search queries from a single question and combines
83
+ * deduplicated results, ranked by frequency and average score.
84
+ */
85
+ multiQuery(question: string, numQueries?: number): Promise<SearchResult[]>;
86
+ /**
87
+ * Compress retrieved context by removing low-relevance and redundant results.
88
+ * Uses LLM-based compression when available, otherwise applies score-based filtering
89
+ * with deduplication.
51
90
  */
52
- multiQuery(question: string, _numQueries?: number): Promise<SearchResult[]>;
91
+ compress(documents: SearchResult[], query: string): Promise<SearchResult[]>;
53
92
  /**
54
- * Compress retrieved context
93
+ * Jaccard similarity between two strings (token-level).
55
94
  */
56
- compress(documents: SearchResult[], _query: string): Promise<SearchResult[]>;
95
+ private jaccardSimilarity;
57
96
  /**
58
- * Self-query with automatic metadata extraction
97
+ * Self-query with automatic metadata extraction.
98
+ * Extracts filter conditions from natural language when an LLM is available,
99
+ * then applies them as metadata filters on the vector search.
59
100
  */
60
101
  selfQuery(naturalLanguageQuery: string): Promise<SearchResult[]>;
61
102
  /**
62
- * Conversational RAG with session memory
103
+ * Conversational RAG with session memory.
104
+ * Maintains per-session conversation history and rewrites the user's
105
+ * follow-up question into a standalone query before retrieval.
63
106
  */
64
- chat(message: string, _sessionId: string): Promise<{
107
+ chat(message: string, sessionId: string): Promise<{
65
108
  answer: string;
66
109
  sources: SearchResult[];
67
110
  }>;
111
+ /**
112
+ * Clear conversation history for a session.
113
+ */
114
+ clearChat(sessionId: string): void;
68
115
  /**
69
116
  * Hybrid search combining vector and keyword search
70
117
  */
@@ -73,13 +120,15 @@ export declare class RAGService {
73
120
  keywordWeight?: number;
74
121
  }): Promise<SearchResult[]>;
75
122
  /**
76
- * Rerank search results
123
+ * Rerank search results using cross-encoder-style LLM scoring.
124
+ * When no LLM is configured, falls back to BM25-boosted re-scoring.
77
125
  */
78
- rerank(results: SearchResult[], _query: string, topN?: number): Promise<SearchResult[]>;
126
+ rerank(results: SearchResult[], query: string, topN?: number): Promise<SearchResult[]>;
79
127
  /**
80
- * Ensemble retrieval combining multiple methods
128
+ * Ensemble retrieval combining multiple retrieval strategies.
129
+ * Runs each strategy, normalizes scores, applies weights, and fuses results.
81
130
  */
82
- ensemble(query: string, _methods: RetrievalStrategy[], _weights?: number[]): Promise<SearchResult[]>;
131
+ ensemble(query: string, methods: RetrievalStrategy[], weights?: number[]): Promise<SearchResult[]>;
83
132
  /**
84
133
  * Time-weighted retrieval favoring recent documents
85
134
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rag.service.d.ts","sourceRoot":"","sources":["../src/rag.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rag.service.d.ts","sourceRoot":"","sources":["../src/rag.service.ts"],"names":[],"mappings":"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"}