@hazeljs/rag 0.2.0-beta.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 (174) hide show
  1. package/README.md +379 -0
  2. package/dist/agentic/agentic-rag.service.d.ts +49 -0
  3. package/dist/agentic/agentic-rag.service.d.ts.map +1 -0
  4. package/dist/agentic/agentic-rag.service.js +149 -0
  5. package/dist/agentic/agentic-rag.service.js.map +1 -0
  6. package/dist/agentic/decorators/active-learning.decorator.d.ts +19 -0
  7. package/dist/agentic/decorators/active-learning.decorator.d.ts.map +1 -0
  8. package/dist/agentic/decorators/active-learning.decorator.js +98 -0
  9. package/dist/agentic/decorators/active-learning.decorator.js.map +1 -0
  10. package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts +16 -0
  11. package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts.map +1 -0
  12. package/dist/agentic/decorators/adaptive-retrieval.decorator.js +114 -0
  13. package/dist/agentic/decorators/adaptive-retrieval.decorator.js.map +1 -0
  14. package/dist/agentic/decorators/cached.decorator.d.ts +18 -0
  15. package/dist/agentic/decorators/cached.decorator.d.ts.map +1 -0
  16. package/dist/agentic/decorators/cached.decorator.js +93 -0
  17. package/dist/agentic/decorators/cached.decorator.js.map +1 -0
  18. package/dist/agentic/decorators/context-aware.decorator.d.ts +16 -0
  19. package/dist/agentic/decorators/context-aware.decorator.d.ts.map +1 -0
  20. package/dist/agentic/decorators/context-aware.decorator.js +169 -0
  21. package/dist/agentic/decorators/context-aware.decorator.js.map +1 -0
  22. package/dist/agentic/decorators/corrective-rag.decorator.d.ts +15 -0
  23. package/dist/agentic/decorators/corrective-rag.decorator.d.ts.map +1 -0
  24. package/dist/agentic/decorators/corrective-rag.decorator.js +146 -0
  25. package/dist/agentic/decorators/corrective-rag.decorator.js.map +1 -0
  26. package/dist/agentic/decorators/hyde.decorator.d.ts +14 -0
  27. package/dist/agentic/decorators/hyde.decorator.d.ts.map +1 -0
  28. package/dist/agentic/decorators/hyde.decorator.js +90 -0
  29. package/dist/agentic/decorators/hyde.decorator.js.map +1 -0
  30. package/dist/agentic/decorators/index.d.ts +16 -0
  31. package/dist/agentic/decorators/index.d.ts.map +1 -0
  32. package/dist/agentic/decorators/index.js +32 -0
  33. package/dist/agentic/decorators/index.js.map +1 -0
  34. package/dist/agentic/decorators/multi-hop.decorator.d.ts +14 -0
  35. package/dist/agentic/decorators/multi-hop.decorator.d.ts.map +1 -0
  36. package/dist/agentic/decorators/multi-hop.decorator.js +120 -0
  37. package/dist/agentic/decorators/multi-hop.decorator.js.map +1 -0
  38. package/dist/agentic/decorators/query-planner.decorator.d.ts +19 -0
  39. package/dist/agentic/decorators/query-planner.decorator.d.ts.map +1 -0
  40. package/dist/agentic/decorators/query-planner.decorator.js +227 -0
  41. package/dist/agentic/decorators/query-planner.decorator.js.map +1 -0
  42. package/dist/agentic/decorators/query-rewriter.decorator.d.ts +15 -0
  43. package/dist/agentic/decorators/query-rewriter.decorator.d.ts.map +1 -0
  44. package/dist/agentic/decorators/query-rewriter.decorator.js +140 -0
  45. package/dist/agentic/decorators/query-rewriter.decorator.js.map +1 -0
  46. package/dist/agentic/decorators/self-reflective.decorator.d.ts +18 -0
  47. package/dist/agentic/decorators/self-reflective.decorator.d.ts.map +1 -0
  48. package/dist/agentic/decorators/self-reflective.decorator.js +210 -0
  49. package/dist/agentic/decorators/self-reflective.decorator.js.map +1 -0
  50. package/dist/agentic/decorators/source-verification.decorator.d.ts +15 -0
  51. package/dist/agentic/decorators/source-verification.decorator.d.ts.map +1 -0
  52. package/dist/agentic/decorators/source-verification.decorator.js +121 -0
  53. package/dist/agentic/decorators/source-verification.decorator.js.map +1 -0
  54. package/dist/agentic/index.d.ts +9 -0
  55. package/dist/agentic/index.d.ts.map +1 -0
  56. package/dist/agentic/index.js +25 -0
  57. package/dist/agentic/index.js.map +1 -0
  58. package/dist/agentic/types.d.ts +209 -0
  59. package/dist/agentic/types.d.ts.map +1 -0
  60. package/dist/agentic/types.js +7 -0
  61. package/dist/agentic/types.js.map +1 -0
  62. package/dist/decorators/embeddable.decorator.d.ts +31 -0
  63. package/dist/decorators/embeddable.decorator.d.ts.map +1 -0
  64. package/dist/decorators/embeddable.decorator.js +44 -0
  65. package/dist/decorators/embeddable.decorator.js.map +1 -0
  66. package/dist/decorators/rag.decorator.d.ts +58 -0
  67. package/dist/decorators/rag.decorator.d.ts.map +1 -0
  68. package/dist/decorators/rag.decorator.js +78 -0
  69. package/dist/decorators/rag.decorator.js.map +1 -0
  70. package/dist/decorators/semantic-search.decorator.d.ts +69 -0
  71. package/dist/decorators/semantic-search.decorator.d.ts.map +1 -0
  72. package/dist/decorators/semantic-search.decorator.js +116 -0
  73. package/dist/decorators/semantic-search.decorator.js.map +1 -0
  74. package/dist/embeddings/cohere-embeddings.d.ts +33 -0
  75. package/dist/embeddings/cohere-embeddings.d.ts.map +1 -0
  76. package/dist/embeddings/cohere-embeddings.js +91 -0
  77. package/dist/embeddings/cohere-embeddings.js.map +1 -0
  78. package/dist/embeddings/openai-embeddings.d.ts +21 -0
  79. package/dist/embeddings/openai-embeddings.d.ts.map +1 -0
  80. package/dist/embeddings/openai-embeddings.js +53 -0
  81. package/dist/embeddings/openai-embeddings.js.map +1 -0
  82. package/dist/index.d.ts +27 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +54 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/memory/index.d.ts +11 -0
  87. package/dist/memory/index.d.ts.map +1 -0
  88. package/dist/memory/index.js +31 -0
  89. package/dist/memory/index.js.map +1 -0
  90. package/dist/memory/memory-manager.d.ts +96 -0
  91. package/dist/memory/memory-manager.d.ts.map +1 -0
  92. package/dist/memory/memory-manager.js +369 -0
  93. package/dist/memory/memory-manager.js.map +1 -0
  94. package/dist/memory/memory-store.interface.d.ts +73 -0
  95. package/dist/memory/memory-store.interface.d.ts.map +1 -0
  96. package/dist/memory/memory-store.interface.js +6 -0
  97. package/dist/memory/memory-store.interface.js.map +1 -0
  98. package/dist/memory/stores/buffer-memory.d.ts +47 -0
  99. package/dist/memory/stores/buffer-memory.d.ts.map +1 -0
  100. package/dist/memory/stores/buffer-memory.js +280 -0
  101. package/dist/memory/stores/buffer-memory.js.map +1 -0
  102. package/dist/memory/stores/hybrid-memory.d.ts +49 -0
  103. package/dist/memory/stores/hybrid-memory.d.ts.map +1 -0
  104. package/dist/memory/stores/hybrid-memory.js +194 -0
  105. package/dist/memory/stores/hybrid-memory.js.map +1 -0
  106. package/dist/memory/stores/vector-memory.d.ts +48 -0
  107. package/dist/memory/stores/vector-memory.d.ts.map +1 -0
  108. package/dist/memory/stores/vector-memory.js +312 -0
  109. package/dist/memory/stores/vector-memory.js.map +1 -0
  110. package/dist/memory/types.d.ts +119 -0
  111. package/dist/memory/types.d.ts.map +1 -0
  112. package/dist/memory/types.js +18 -0
  113. package/dist/memory/types.js.map +1 -0
  114. package/dist/rag-pipeline-with-memory.d.ts +68 -0
  115. package/dist/rag-pipeline-with-memory.d.ts.map +1 -0
  116. package/dist/rag-pipeline-with-memory.js +186 -0
  117. package/dist/rag-pipeline-with-memory.js.map +1 -0
  118. package/dist/rag-pipeline.d.ts +59 -0
  119. package/dist/rag-pipeline.d.ts.map +1 -0
  120. package/dist/rag-pipeline.js +181 -0
  121. package/dist/rag-pipeline.js.map +1 -0
  122. package/dist/rag.module.d.ts +26 -0
  123. package/dist/rag.module.d.ts.map +1 -0
  124. package/dist/rag.module.js +40 -0
  125. package/dist/rag.module.js.map +1 -0
  126. package/dist/rag.service.d.ts +95 -0
  127. package/dist/rag.service.d.ts.map +1 -0
  128. package/dist/rag.service.js +174 -0
  129. package/dist/rag.service.js.map +1 -0
  130. package/dist/retrieval/bm25.d.ts +57 -0
  131. package/dist/retrieval/bm25.d.ts.map +1 -0
  132. package/dist/retrieval/bm25.js +106 -0
  133. package/dist/retrieval/bm25.js.map +1 -0
  134. package/dist/retrieval/hybrid-search.d.ts +48 -0
  135. package/dist/retrieval/hybrid-search.d.ts.map +1 -0
  136. package/dist/retrieval/hybrid-search.js +123 -0
  137. package/dist/retrieval/hybrid-search.js.map +1 -0
  138. package/dist/retrieval/multi-query.d.ts +38 -0
  139. package/dist/retrieval/multi-query.d.ts.map +1 -0
  140. package/dist/retrieval/multi-query.js +135 -0
  141. package/dist/retrieval/multi-query.js.map +1 -0
  142. package/dist/text-splitters/recursive-text-splitter.d.ts +21 -0
  143. package/dist/text-splitters/recursive-text-splitter.d.ts.map +1 -0
  144. package/dist/text-splitters/recursive-text-splitter.js +95 -0
  145. package/dist/text-splitters/recursive-text-splitter.js.map +1 -0
  146. package/dist/types/index.d.ts +144 -0
  147. package/dist/types/index.d.ts.map +1 -0
  148. package/dist/types/index.js +16 -0
  149. package/dist/types/index.js.map +1 -0
  150. package/dist/utils/similarity.d.ts +16 -0
  151. package/dist/utils/similarity.d.ts.map +1 -0
  152. package/dist/utils/similarity.js +58 -0
  153. package/dist/utils/similarity.js.map +1 -0
  154. package/dist/vector-stores/chroma.store.d.ts +42 -0
  155. package/dist/vector-stores/chroma.store.d.ts.map +1 -0
  156. package/dist/vector-stores/chroma.store.js +242 -0
  157. package/dist/vector-stores/chroma.store.js.map +1 -0
  158. package/dist/vector-stores/memory-vector-store.d.ts +20 -0
  159. package/dist/vector-stores/memory-vector-store.d.ts.map +1 -0
  160. package/dist/vector-stores/memory-vector-store.js +94 -0
  161. package/dist/vector-stores/memory-vector-store.js.map +1 -0
  162. package/dist/vector-stores/pinecone.store.d.ts +34 -0
  163. package/dist/vector-stores/pinecone.store.d.ts.map +1 -0
  164. package/dist/vector-stores/pinecone.store.js +146 -0
  165. package/dist/vector-stores/pinecone.store.js.map +1 -0
  166. package/dist/vector-stores/qdrant.store.d.ts +31 -0
  167. package/dist/vector-stores/qdrant.store.d.ts.map +1 -0
  168. package/dist/vector-stores/qdrant.store.js +173 -0
  169. package/dist/vector-stores/qdrant.store.js.map +1 -0
  170. package/dist/vector-stores/weaviate.store.d.ts +37 -0
  171. package/dist/vector-stores/weaviate.store.d.ts.map +1 -0
  172. package/dist/vector-stores/weaviate.store.js +226 -0
  173. package/dist/vector-stores/weaviate.store.js.map +1 -0
  174. package/package.json +87 -0
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ /**
3
+ * RAG Pipeline with Memory Integration
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RAGPipelineWithMemory = void 0;
7
+ const rag_pipeline_1 = require("./rag-pipeline");
8
+ const types_1 = require("./memory/types");
9
+ /**
10
+ * RAG Pipeline enhanced with memory capabilities
11
+ * Combines document retrieval with conversation history and persistent memory
12
+ */
13
+ class RAGPipelineWithMemory extends rag_pipeline_1.RAGPipeline {
14
+ constructor(config, memoryManager, llmFunction) {
15
+ super(config, llmFunction);
16
+ this.memoryManager = memoryManager;
17
+ this.llmFunc = llmFunction;
18
+ }
19
+ /**
20
+ * Initialize both RAG and memory systems
21
+ */
22
+ async initialize() {
23
+ await super.initialize();
24
+ await this.memoryManager.initialize();
25
+ }
26
+ /**
27
+ * Query with memory-enhanced context
28
+ */
29
+ async queryWithMemory(query, sessionId, userId, options) {
30
+ // 1. Store user query in conversation memory
31
+ await this.memoryManager.addMessage({
32
+ role: 'user',
33
+ content: query,
34
+ }, sessionId, userId);
35
+ // 2. Retrieve relevant memories
36
+ const memories = await this.memoryManager.relevantMemories(query, {
37
+ sessionId,
38
+ userId,
39
+ types: [types_1.MemoryType.CONVERSATION, types_1.MemoryType.FACT, types_1.MemoryType.ENTITY],
40
+ topK: options?.topK || 5,
41
+ });
42
+ // 3. Get recent conversation history
43
+ const conversationHistory = await this.memoryManager.getConversationHistory(sessionId, 5);
44
+ // 4. Perform RAG retrieval
45
+ const ragResults = await this.retrieve(query, options);
46
+ // 5. Build enhanced context
47
+ const context = this.buildEnhancedContext(memories, conversationHistory, ragResults);
48
+ // 6. Generate response with LLM
49
+ let answer = '';
50
+ if (this.llmFunc) {
51
+ const prompt = this.buildPromptWithMemory(query, context, conversationHistory, options?.llmPrompt);
52
+ answer = await this.llmFunc(prompt);
53
+ }
54
+ else {
55
+ answer = context;
56
+ }
57
+ // 7. Store assistant response in memory
58
+ await this.memoryManager.addMessage({
59
+ role: 'assistant',
60
+ content: answer,
61
+ }, sessionId, userId);
62
+ return {
63
+ answer,
64
+ sources: ragResults,
65
+ context,
66
+ memories,
67
+ conversationHistory,
68
+ };
69
+ }
70
+ /**
71
+ * Query with automatic fact extraction and storage
72
+ */
73
+ async queryWithLearning(query, sessionId, userId, options) {
74
+ const response = await this.queryWithMemory(query, sessionId, userId, options);
75
+ // Extract and store important facts from the response
76
+ await this.extractAndStoreFacts(response.answer, sessionId, userId);
77
+ return response;
78
+ }
79
+ /**
80
+ * Clear all memory for a session
81
+ */
82
+ async clearSessionMemory(sessionId) {
83
+ await this.memoryManager.clearConversation(sessionId);
84
+ await this.memoryManager.clearContext(sessionId);
85
+ }
86
+ /**
87
+ * Get conversation summary
88
+ */
89
+ async getConversationSummary(sessionId) {
90
+ return this.memoryManager.summarizeConversation(sessionId);
91
+ }
92
+ /**
93
+ * Store a fact in memory
94
+ */
95
+ async storeFact(fact, sessionId, userId) {
96
+ return this.memoryManager.storeFact(fact, {
97
+ sessionId,
98
+ userId,
99
+ });
100
+ }
101
+ /**
102
+ * Recall facts related to a query
103
+ */
104
+ async recallFacts(query, topK) {
105
+ return this.memoryManager.recallFacts(query, { topK });
106
+ }
107
+ /**
108
+ * Get memory statistics
109
+ */
110
+ async getMemoryStats(sessionId) {
111
+ return this.memoryManager.getStats(sessionId);
112
+ }
113
+ /**
114
+ * Build enhanced context combining memories, conversation, and RAG results
115
+ */
116
+ buildEnhancedContext(memories, conversationHistory, ragResults) {
117
+ const parts = [];
118
+ // Add relevant memories
119
+ if (memories.length > 0) {
120
+ parts.push('## Relevant Memories:');
121
+ memories.forEach((m, i) => {
122
+ parts.push(`${i + 1}. ${m.content}`);
123
+ });
124
+ parts.push('');
125
+ }
126
+ // Add recent conversation
127
+ if (conversationHistory.length > 0) {
128
+ parts.push('## Recent Conversation:');
129
+ conversationHistory.forEach((msg) => {
130
+ parts.push(`${msg.role}: ${msg.content}`);
131
+ });
132
+ parts.push('');
133
+ }
134
+ // Add RAG results
135
+ if (ragResults.length > 0) {
136
+ parts.push('## Retrieved Documents:');
137
+ ragResults.forEach((result, i) => {
138
+ parts.push(`${i + 1}. ${result.content}`);
139
+ if (result.metadata?.source) {
140
+ parts.push(` Source: ${result.metadata.source}`);
141
+ }
142
+ });
143
+ }
144
+ return parts.join('\n');
145
+ }
146
+ /**
147
+ * Build prompt with memory context
148
+ */
149
+ buildPromptWithMemory(query, context, conversationHistory, customPrompt) {
150
+ if (customPrompt) {
151
+ return customPrompt
152
+ .replace('{context}', context)
153
+ .replace('{query}', query)
154
+ .replace('{history}', conversationHistory.map((m) => `${m.role}: ${m.content}`).join('\n'));
155
+ }
156
+ return `You are a helpful AI assistant with access to relevant context and conversation history.
157
+
158
+ ${context}
159
+
160
+ Current Question: ${query}
161
+
162
+ Please provide a helpful and accurate response based on the above context and conversation history. If the context doesn't contain enough information, say so clearly.
163
+
164
+ Response:`;
165
+ }
166
+ /**
167
+ * Extract and store important facts from text
168
+ */
169
+ async extractAndStoreFacts(text, sessionId, userId) {
170
+ // Simple fact extraction: sentences that look like statements
171
+ const sentences = text.split(/[.!?]+/).filter((s) => s.trim().length > 20);
172
+ for (const sentence of sentences) {
173
+ const trimmed = sentence.trim();
174
+ // Store sentences that look like facts (not questions, not too short)
175
+ if (!trimmed.includes('?') && trimmed.length > 30 && trimmed.length < 200) {
176
+ await this.memoryManager.storeFact(trimmed, {
177
+ sessionId,
178
+ userId,
179
+ extractedFrom: 'response',
180
+ });
181
+ }
182
+ }
183
+ }
184
+ }
185
+ exports.RAGPipelineWithMemory = RAGPipelineWithMemory;
186
+ //# sourceMappingURL=rag-pipeline-with-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-pipeline-with-memory.js","sourceRoot":"","sources":["../src/rag-pipeline-with-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * RAG Pipeline
3
+ * Main class for Retrieval-Augmented Generation
4
+ */
5
+ import { RAGConfig, RAGQueryOptions, RAGResponse, Document, SearchResult, RetrievalStrategy } from './types';
6
+ export type LLMFunction = (prompt: string) => Promise<string>;
7
+ export declare class RAGPipeline {
8
+ private config;
9
+ private llmFunction?;
10
+ constructor(config: RAGConfig, llmFunction?: LLMFunction);
11
+ /**
12
+ * Initialize the RAG pipeline
13
+ */
14
+ initialize(): Promise<void>;
15
+ /**
16
+ * Add documents to the knowledge base
17
+ */
18
+ addDocuments(documents: Document[]): Promise<string[]>;
19
+ /**
20
+ * Query the RAG system
21
+ */
22
+ query(query: string, options?: RAGQueryOptions): Promise<RAGResponse>;
23
+ /**
24
+ * Retrieve relevant documents
25
+ */
26
+ retrieve(query: string, options?: RAGQueryOptions, strategy?: RetrievalStrategy): Promise<SearchResult[]>;
27
+ /**
28
+ * Retrieve with Maximal Marginal Relevance (MMR)
29
+ * Balances relevance and diversity
30
+ */
31
+ private retrieveWithMMR;
32
+ /**
33
+ * Hybrid retrieval (combines keyword and semantic search)
34
+ * For now, just returns semantic search results
35
+ * TODO: Implement keyword search integration
36
+ */
37
+ private retrieveHybrid;
38
+ /**
39
+ * Build context string from search results
40
+ */
41
+ private buildContext;
42
+ /**
43
+ * Generate answer using LLM
44
+ */
45
+ private generateAnswer;
46
+ /**
47
+ * Calculate cosine similarity
48
+ */
49
+ private cosineSimilarity;
50
+ /**
51
+ * Delete documents from the knowledge base
52
+ */
53
+ deleteDocuments(ids: string[]): Promise<void>;
54
+ /**
55
+ * Clear all documents
56
+ */
57
+ clear(): Promise<void>;
58
+ }
59
+ //# sourceMappingURL=rag-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-pipeline.d.ts","sourceRoot":"","sources":["../src/rag-pipeline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,SAAS,EACT,eAAe,EACf,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9D,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAc;gBAEtB,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW;IAKxD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW5D;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IA8B/E;;OAEG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,eAAoB,EAC7B,QAAQ,GAAE,iBAAgD,GACzD,OAAO,CAAC,YAAY,EAAE,CAAC;IAgB1B;;;OAGG;YACW,eAAe;IA6D7B;;;;OAIG;YACW,cAAc;IAS5B;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;YACW,cAAc;IAU5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ /**
3
+ * RAG Pipeline
4
+ * Main class for Retrieval-Augmented Generation
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RAGPipeline = void 0;
8
+ const types_1 = require("./types");
9
+ class RAGPipeline {
10
+ constructor(config, llmFunction) {
11
+ this.config = config;
12
+ this.llmFunction = llmFunction;
13
+ }
14
+ /**
15
+ * Initialize the RAG pipeline
16
+ */
17
+ async initialize() {
18
+ await this.config.vectorStore.initialize();
19
+ }
20
+ /**
21
+ * Add documents to the knowledge base
22
+ */
23
+ async addDocuments(documents) {
24
+ let processedDocs = documents;
25
+ // Split documents if text splitter is configured
26
+ if (this.config.textSplitter) {
27
+ processedDocs = this.config.textSplitter.splitDocuments(documents);
28
+ }
29
+ return this.config.vectorStore.addDocuments(processedDocs);
30
+ }
31
+ /**
32
+ * Query the RAG system
33
+ */
34
+ async query(query, options = {}) {
35
+ const { topK = this.config.topK || 5, strategy = types_1.RetrievalStrategy.SIMILARITY, llmPrompt, includeContext = true, ...searchOptions } = options;
36
+ // Retrieve relevant documents
37
+ const sources = await this.retrieve(query, { ...searchOptions, topK }, strategy);
38
+ // Build context from sources
39
+ const context = this.buildContext(sources);
40
+ // Generate answer using LLM if available
41
+ let answer = '';
42
+ if (this.llmFunction && llmPrompt) {
43
+ answer = await this.generateAnswer(query, context, llmPrompt);
44
+ }
45
+ else {
46
+ answer = context; // Return context if no LLM
47
+ }
48
+ return {
49
+ answer,
50
+ sources,
51
+ context: includeContext ? context : '',
52
+ };
53
+ }
54
+ /**
55
+ * Retrieve relevant documents
56
+ */
57
+ async retrieve(query, options = {}, strategy = types_1.RetrievalStrategy.SIMILARITY) {
58
+ switch (strategy) {
59
+ case types_1.RetrievalStrategy.SIMILARITY:
60
+ return this.config.vectorStore.search(query, options);
61
+ case types_1.RetrievalStrategy.MMR:
62
+ return this.retrieveWithMMR(query, options);
63
+ case types_1.RetrievalStrategy.HYBRID:
64
+ return this.retrieveHybrid(query, options);
65
+ default:
66
+ return this.config.vectorStore.search(query, options);
67
+ }
68
+ }
69
+ /**
70
+ * Retrieve with Maximal Marginal Relevance (MMR)
71
+ * Balances relevance and diversity
72
+ */
73
+ async retrieveWithMMR(query, options = {}) {
74
+ const { topK = 5, ...searchOptions } = options;
75
+ // Get more results than needed for MMR selection
76
+ const candidates = await this.config.vectorStore.search(query, {
77
+ ...searchOptions,
78
+ topK: topK * 3,
79
+ includeEmbedding: true,
80
+ });
81
+ if (candidates.length === 0)
82
+ return [];
83
+ // Get query embedding (not used in MMR, but kept for potential future use)
84
+ await this.config.embeddingProvider.embed(query);
85
+ // MMR algorithm
86
+ const selected = [];
87
+ const lambda = 0.5; // Balance between relevance and diversity
88
+ while (selected.length < topK && candidates.length > 0) {
89
+ let bestScore = -Infinity;
90
+ let bestIdx = -1;
91
+ for (let i = 0; i < candidates.length; i++) {
92
+ const candidate = candidates[i];
93
+ if (!candidate.embedding)
94
+ continue;
95
+ // Calculate relevance to query
96
+ const relevance = candidate.score;
97
+ // Calculate max similarity to already selected documents
98
+ let maxSimilarity = 0;
99
+ for (const selectedDoc of selected) {
100
+ if (!selectedDoc.embedding)
101
+ continue;
102
+ const similarity = this.cosineSimilarity(candidate.embedding, selectedDoc.embedding);
103
+ maxSimilarity = Math.max(maxSimilarity, similarity);
104
+ }
105
+ // MMR score
106
+ const mmrScore = lambda * relevance - (1 - lambda) * maxSimilarity;
107
+ if (mmrScore > bestScore) {
108
+ bestScore = mmrScore;
109
+ bestIdx = i;
110
+ }
111
+ }
112
+ if (bestIdx >= 0) {
113
+ selected.push(candidates[bestIdx]);
114
+ candidates.splice(bestIdx, 1);
115
+ }
116
+ else {
117
+ break;
118
+ }
119
+ }
120
+ return selected;
121
+ }
122
+ /**
123
+ * Hybrid retrieval (combines keyword and semantic search)
124
+ * For now, just returns semantic search results
125
+ * TODO: Implement keyword search integration
126
+ */
127
+ 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);
131
+ }
132
+ /**
133
+ * Build context string from search results
134
+ */
135
+ buildContext(results) {
136
+ return results
137
+ .map((result, idx) => {
138
+ const metadata = result.metadata ? `\nMetadata: ${JSON.stringify(result.metadata)}` : '';
139
+ return `[${idx + 1}] ${result.content}${metadata}`;
140
+ })
141
+ .join('\n\n');
142
+ }
143
+ /**
144
+ * Generate answer using LLM
145
+ */
146
+ async generateAnswer(query, context, prompt) {
147
+ if (!this.llmFunction) {
148
+ throw new Error('LLM function not configured');
149
+ }
150
+ const fullPrompt = prompt.replace('{context}', context).replace('{query}', query);
151
+ return this.llmFunction(fullPrompt);
152
+ }
153
+ /**
154
+ * Calculate cosine similarity
155
+ */
156
+ cosineSimilarity(a, b) {
157
+ let dotProduct = 0;
158
+ let normA = 0;
159
+ let normB = 0;
160
+ for (let i = 0; i < a.length; i++) {
161
+ dotProduct += a[i] * b[i];
162
+ normA += a[i] * a[i];
163
+ normB += b[i] * b[i];
164
+ }
165
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
166
+ }
167
+ /**
168
+ * Delete documents from the knowledge base
169
+ */
170
+ async deleteDocuments(ids) {
171
+ await this.config.vectorStore.deleteDocuments(ids);
172
+ }
173
+ /**
174
+ * Clear all documents
175
+ */
176
+ async clear() {
177
+ await this.config.vectorStore.clear();
178
+ }
179
+ }
180
+ exports.RAGPipeline = RAGPipeline;
181
+ //# sourceMappingURL=rag-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-pipeline.js","sourceRoot":"","sources":["../src/rag-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * RAG Module
3
+ * HazelJS module for RAG functionality
4
+ */
5
+ import { RAGServiceConfig } from './rag.service';
6
+ import { RAGModuleOptions } from './decorators/rag.decorator';
7
+ export interface RAGModuleConfig extends RAGModuleOptions {
8
+ isGlobal?: boolean;
9
+ vectorStore?: RAGServiceConfig['vectorStore'];
10
+ embeddingProvider?: RAGServiceConfig['embeddingProvider'];
11
+ textSplitter?: RAGServiceConfig['textSplitter'];
12
+ llmFunction?: RAGServiceConfig['llmFunction'];
13
+ topK?: number;
14
+ }
15
+ export declare class RAGModule {
16
+ private static config;
17
+ /**
18
+ * Configure RAG module with options
19
+ */
20
+ static forRoot(config?: RAGModuleConfig): typeof RAGModule;
21
+ /**
22
+ * Get the stored configuration
23
+ */
24
+ static getConfig(): RAGModuleConfig;
25
+ }
26
+ //# sourceMappingURL=rag.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag.module.d.ts","sourceRoot":"","sources":["../src/rag.module.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAc,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAChD,WAAW,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAIa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAuB;IAE5C;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,GAAE,eAAoB,GAAG,OAAO,SAAS;IAK9D;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,eAAe;CAGpC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * RAG Module
4
+ * HazelJS module for RAG functionality
5
+ */
6
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
7
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
10
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
11
+ };
12
+ var RAGModule_1;
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.RAGModule = void 0;
15
+ const core_1 = require("@hazeljs/core");
16
+ const rag_service_1 = require("./rag.service");
17
+ let RAGModule = RAGModule_1 = class RAGModule {
18
+ /**
19
+ * Configure RAG module with options
20
+ */
21
+ static forRoot(config = {}) {
22
+ RAGModule_1.config = config;
23
+ return RAGModule_1;
24
+ }
25
+ /**
26
+ * Get the stored configuration
27
+ */
28
+ static getConfig() {
29
+ return RAGModule_1.config;
30
+ }
31
+ };
32
+ exports.RAGModule = RAGModule;
33
+ RAGModule.config = {};
34
+ exports.RAGModule = RAGModule = RAGModule_1 = __decorate([
35
+ (0, core_1.HazelModule)({
36
+ providers: [rag_service_1.RAGService],
37
+ exports: [rag_service_1.RAGService],
38
+ })
39
+ ], RAGModule);
40
+ //# sourceMappingURL=rag.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag.module.js","sourceRoot":"","sources":["../src/rag.module.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;AAEH,wCAA4C;AAC5C,+CAA6D;AAgBtD,IAAM,SAAS,iBAAf,MAAM,SAAS;IAGpB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,SAA0B,EAAE;QACzC,WAAS,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1B,OAAO,WAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS;QACd,OAAO,WAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;;AAhBU,8BAAS;AACL,gBAAM,GAAoB,EAAE,AAAtB,CAAuB;oBADjC,SAAS;IAJrB,IAAA,kBAAW,EAAC;QACX,SAAS,EAAE,CAAC,wBAAU,CAAC;QACvB,OAAO,EAAE,CAAC,wBAAU,CAAC;KACtB,CAAC;GACW,SAAS,CAiBrB"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * RAG Service
3
+ * Main service for RAG operations in HazelJS
4
+ */
5
+ import { LLMFunction } from './rag-pipeline';
6
+ import { VectorStore, EmbeddingProvider, TextSplitter, Document, SearchResult, QueryOptions, RetrievalStrategy } from './types';
7
+ export interface RAGServiceConfig {
8
+ vectorStore: VectorStore;
9
+ embeddingProvider: EmbeddingProvider;
10
+ textSplitter?: TextSplitter;
11
+ llmFunction?: LLMFunction;
12
+ topK?: number;
13
+ }
14
+ export declare class RAGService {
15
+ private config;
16
+ private pipeline;
17
+ constructor(config: RAGServiceConfig);
18
+ /**
19
+ * Initialize the RAG service
20
+ */
21
+ initialize(): Promise<void>;
22
+ /**
23
+ * Index a document or multiple documents
24
+ */
25
+ index(documents: Document | Document[]): Promise<string[]>;
26
+ /**
27
+ * Search for similar documents
28
+ */
29
+ search(query: string, options?: QueryOptions & {
30
+ strategy?: RetrievalStrategy;
31
+ }): Promise<SearchResult[]>;
32
+ /**
33
+ * Retrieve relevant context for a query
34
+ */
35
+ retrieve(query: string, options?: QueryOptions): Promise<SearchResult[]>;
36
+ /**
37
+ * Generate an answer using RAG
38
+ */
39
+ generate(query: string, context: SearchResult[] | string): Promise<string>;
40
+ /**
41
+ * Full RAG pipeline: retrieve + generate
42
+ */
43
+ ask(query: string, options?: QueryOptions): Promise<{
44
+ answer: string;
45
+ sources: SearchResult[];
46
+ }>;
47
+ /**
48
+ * Multi-query RAG
49
+ * Generates multiple search queries and combines results
50
+ */
51
+ multiQuery(question: string, _numQueries?: number): Promise<SearchResult[]>;
52
+ /**
53
+ * Compress retrieved context
54
+ */
55
+ compress(documents: SearchResult[], _query: string): Promise<SearchResult[]>;
56
+ /**
57
+ * Self-query with automatic metadata extraction
58
+ */
59
+ selfQuery(naturalLanguageQuery: string): Promise<SearchResult[]>;
60
+ /**
61
+ * Conversational RAG with session memory
62
+ */
63
+ chat(message: string, _sessionId: string): Promise<{
64
+ answer: string;
65
+ sources: SearchResult[];
66
+ }>;
67
+ /**
68
+ * Hybrid search combining vector and keyword search
69
+ */
70
+ hybridSearch(query: string, options?: QueryOptions & {
71
+ vectorWeight?: number;
72
+ keywordWeight?: number;
73
+ }): Promise<SearchResult[]>;
74
+ /**
75
+ * Rerank search results
76
+ */
77
+ rerank(results: SearchResult[], _query: string, topN?: number): Promise<SearchResult[]>;
78
+ /**
79
+ * Ensemble retrieval combining multiple methods
80
+ */
81
+ ensemble(query: string, _methods: RetrievalStrategy[], _weights?: number[]): Promise<SearchResult[]>;
82
+ /**
83
+ * Time-weighted retrieval favoring recent documents
84
+ */
85
+ timeWeighted(query: string, decayRate?: number): Promise<SearchResult[]>;
86
+ /**
87
+ * Delete documents by IDs
88
+ */
89
+ delete(ids: string[]): Promise<void>;
90
+ /**
91
+ * Clear all documents
92
+ */
93
+ clear(): Promise<void>;
94
+ }
95
+ //# sourceMappingURL=rag.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag.service.d.ts","sourceRoot":"","sources":["../src/rag.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBACa,UAAU;IAGT,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAc;gBAEV,MAAM,EAAE,gBAAgB;IAY5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKhE;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,EAAE,iBAAiB,CAAA;KAAE,GACxD,OAAO,CAAC,YAAY,EAAE,CAAC;IAK1B;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI9E;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBhF;;OAEG;IACG,GAAG,CACP,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IAMvD;;;OAGG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMpF;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMlF;;OAEG;IACG,SAAS,CAAC,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMtE;;OAEG;IACG,IAAI,CACR,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IAKvD;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GAAG;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1B;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAM7F;;OAEG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC;IAK1B;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmBpF;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}