@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.
- package/README.md +379 -0
- package/dist/agentic/agentic-rag.service.d.ts +49 -0
- package/dist/agentic/agentic-rag.service.d.ts.map +1 -0
- package/dist/agentic/agentic-rag.service.js +149 -0
- package/dist/agentic/agentic-rag.service.js.map +1 -0
- package/dist/agentic/decorators/active-learning.decorator.d.ts +19 -0
- package/dist/agentic/decorators/active-learning.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/active-learning.decorator.js +98 -0
- package/dist/agentic/decorators/active-learning.decorator.js.map +1 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts +16 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.js +114 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.js.map +1 -0
- package/dist/agentic/decorators/cached.decorator.d.ts +18 -0
- package/dist/agentic/decorators/cached.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/cached.decorator.js +93 -0
- package/dist/agentic/decorators/cached.decorator.js.map +1 -0
- package/dist/agentic/decorators/context-aware.decorator.d.ts +16 -0
- package/dist/agentic/decorators/context-aware.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/context-aware.decorator.js +169 -0
- package/dist/agentic/decorators/context-aware.decorator.js.map +1 -0
- package/dist/agentic/decorators/corrective-rag.decorator.d.ts +15 -0
- package/dist/agentic/decorators/corrective-rag.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/corrective-rag.decorator.js +146 -0
- package/dist/agentic/decorators/corrective-rag.decorator.js.map +1 -0
- package/dist/agentic/decorators/hyde.decorator.d.ts +14 -0
- package/dist/agentic/decorators/hyde.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/hyde.decorator.js +90 -0
- package/dist/agentic/decorators/hyde.decorator.js.map +1 -0
- package/dist/agentic/decorators/index.d.ts +16 -0
- package/dist/agentic/decorators/index.d.ts.map +1 -0
- package/dist/agentic/decorators/index.js +32 -0
- package/dist/agentic/decorators/index.js.map +1 -0
- package/dist/agentic/decorators/multi-hop.decorator.d.ts +14 -0
- package/dist/agentic/decorators/multi-hop.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/multi-hop.decorator.js +120 -0
- package/dist/agentic/decorators/multi-hop.decorator.js.map +1 -0
- package/dist/agentic/decorators/query-planner.decorator.d.ts +19 -0
- package/dist/agentic/decorators/query-planner.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/query-planner.decorator.js +227 -0
- package/dist/agentic/decorators/query-planner.decorator.js.map +1 -0
- package/dist/agentic/decorators/query-rewriter.decorator.d.ts +15 -0
- package/dist/agentic/decorators/query-rewriter.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/query-rewriter.decorator.js +140 -0
- package/dist/agentic/decorators/query-rewriter.decorator.js.map +1 -0
- package/dist/agentic/decorators/self-reflective.decorator.d.ts +18 -0
- package/dist/agentic/decorators/self-reflective.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/self-reflective.decorator.js +210 -0
- package/dist/agentic/decorators/self-reflective.decorator.js.map +1 -0
- package/dist/agentic/decorators/source-verification.decorator.d.ts +15 -0
- package/dist/agentic/decorators/source-verification.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/source-verification.decorator.js +121 -0
- package/dist/agentic/decorators/source-verification.decorator.js.map +1 -0
- package/dist/agentic/index.d.ts +9 -0
- package/dist/agentic/index.d.ts.map +1 -0
- package/dist/agentic/index.js +25 -0
- package/dist/agentic/index.js.map +1 -0
- package/dist/agentic/types.d.ts +209 -0
- package/dist/agentic/types.d.ts.map +1 -0
- package/dist/agentic/types.js +7 -0
- package/dist/agentic/types.js.map +1 -0
- package/dist/decorators/embeddable.decorator.d.ts +31 -0
- package/dist/decorators/embeddable.decorator.d.ts.map +1 -0
- package/dist/decorators/embeddable.decorator.js +44 -0
- package/dist/decorators/embeddable.decorator.js.map +1 -0
- package/dist/decorators/rag.decorator.d.ts +58 -0
- package/dist/decorators/rag.decorator.d.ts.map +1 -0
- package/dist/decorators/rag.decorator.js +78 -0
- package/dist/decorators/rag.decorator.js.map +1 -0
- package/dist/decorators/semantic-search.decorator.d.ts +69 -0
- package/dist/decorators/semantic-search.decorator.d.ts.map +1 -0
- package/dist/decorators/semantic-search.decorator.js +116 -0
- package/dist/decorators/semantic-search.decorator.js.map +1 -0
- package/dist/embeddings/cohere-embeddings.d.ts +33 -0
- package/dist/embeddings/cohere-embeddings.d.ts.map +1 -0
- package/dist/embeddings/cohere-embeddings.js +91 -0
- package/dist/embeddings/cohere-embeddings.js.map +1 -0
- package/dist/embeddings/openai-embeddings.d.ts +21 -0
- package/dist/embeddings/openai-embeddings.d.ts.map +1 -0
- package/dist/embeddings/openai-embeddings.js +53 -0
- package/dist/embeddings/openai-embeddings.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/index.d.ts +11 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +31 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +96 -0
- package/dist/memory/memory-manager.d.ts.map +1 -0
- package/dist/memory/memory-manager.js +369 -0
- package/dist/memory/memory-manager.js.map +1 -0
- package/dist/memory/memory-store.interface.d.ts +73 -0
- package/dist/memory/memory-store.interface.d.ts.map +1 -0
- package/dist/memory/memory-store.interface.js +6 -0
- package/dist/memory/memory-store.interface.js.map +1 -0
- package/dist/memory/stores/buffer-memory.d.ts +47 -0
- package/dist/memory/stores/buffer-memory.d.ts.map +1 -0
- package/dist/memory/stores/buffer-memory.js +280 -0
- package/dist/memory/stores/buffer-memory.js.map +1 -0
- package/dist/memory/stores/hybrid-memory.d.ts +49 -0
- package/dist/memory/stores/hybrid-memory.d.ts.map +1 -0
- package/dist/memory/stores/hybrid-memory.js +194 -0
- package/dist/memory/stores/hybrid-memory.js.map +1 -0
- package/dist/memory/stores/vector-memory.d.ts +48 -0
- package/dist/memory/stores/vector-memory.d.ts.map +1 -0
- package/dist/memory/stores/vector-memory.js +312 -0
- package/dist/memory/stores/vector-memory.js.map +1 -0
- package/dist/memory/types.d.ts +119 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +18 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/rag-pipeline-with-memory.d.ts +68 -0
- package/dist/rag-pipeline-with-memory.d.ts.map +1 -0
- package/dist/rag-pipeline-with-memory.js +186 -0
- package/dist/rag-pipeline-with-memory.js.map +1 -0
- package/dist/rag-pipeline.d.ts +59 -0
- package/dist/rag-pipeline.d.ts.map +1 -0
- package/dist/rag-pipeline.js +181 -0
- package/dist/rag-pipeline.js.map +1 -0
- package/dist/rag.module.d.ts +26 -0
- package/dist/rag.module.d.ts.map +1 -0
- package/dist/rag.module.js +40 -0
- package/dist/rag.module.js.map +1 -0
- package/dist/rag.service.d.ts +95 -0
- package/dist/rag.service.d.ts.map +1 -0
- package/dist/rag.service.js +174 -0
- package/dist/rag.service.js.map +1 -0
- package/dist/retrieval/bm25.d.ts +57 -0
- package/dist/retrieval/bm25.d.ts.map +1 -0
- package/dist/retrieval/bm25.js +106 -0
- package/dist/retrieval/bm25.js.map +1 -0
- package/dist/retrieval/hybrid-search.d.ts +48 -0
- package/dist/retrieval/hybrid-search.d.ts.map +1 -0
- package/dist/retrieval/hybrid-search.js +123 -0
- package/dist/retrieval/hybrid-search.js.map +1 -0
- package/dist/retrieval/multi-query.d.ts +38 -0
- package/dist/retrieval/multi-query.d.ts.map +1 -0
- package/dist/retrieval/multi-query.js +135 -0
- package/dist/retrieval/multi-query.js.map +1 -0
- package/dist/text-splitters/recursive-text-splitter.d.ts +21 -0
- package/dist/text-splitters/recursive-text-splitter.d.ts.map +1 -0
- package/dist/text-splitters/recursive-text-splitter.js +95 -0
- package/dist/text-splitters/recursive-text-splitter.js.map +1 -0
- package/dist/types/index.d.ts +144 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/similarity.d.ts +16 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +58 -0
- package/dist/utils/similarity.js.map +1 -0
- package/dist/vector-stores/chroma.store.d.ts +42 -0
- package/dist/vector-stores/chroma.store.d.ts.map +1 -0
- package/dist/vector-stores/chroma.store.js +242 -0
- package/dist/vector-stores/chroma.store.js.map +1 -0
- package/dist/vector-stores/memory-vector-store.d.ts +20 -0
- package/dist/vector-stores/memory-vector-store.d.ts.map +1 -0
- package/dist/vector-stores/memory-vector-store.js +94 -0
- package/dist/vector-stores/memory-vector-store.js.map +1 -0
- package/dist/vector-stores/pinecone.store.d.ts +34 -0
- package/dist/vector-stores/pinecone.store.d.ts.map +1 -0
- package/dist/vector-stores/pinecone.store.js +146 -0
- package/dist/vector-stores/pinecone.store.js.map +1 -0
- package/dist/vector-stores/qdrant.store.d.ts +31 -0
- package/dist/vector-stores/qdrant.store.d.ts.map +1 -0
- package/dist/vector-stores/qdrant.store.js +173 -0
- package/dist/vector-stores/qdrant.store.js.map +1 -0
- package/dist/vector-stores/weaviate.store.d.ts +37 -0
- package/dist/vector-stores/weaviate.store.d.ts.map +1 -0
- package/dist/vector-stores/weaviate.store.js +226 -0
- package/dist/vector-stores/weaviate.store.js.map +1 -0
- 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":"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"}
|