lazlo-ai 1.0.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.
- package/.env.example +9 -0
- package/README.md +278 -0
- package/dist/cache/semantic.d.ts +39 -0
- package/dist/cache/semantic.d.ts.map +1 -0
- package/dist/cache/semantic.js +134 -0
- package/dist/cache/semantic.js.map +1 -0
- package/dist/chains/llmchain.d.ts +65 -0
- package/dist/chains/llmchain.d.ts.map +1 -0
- package/dist/chains/llmchain.js +137 -0
- package/dist/chains/llmchain.js.map +1 -0
- package/dist/chains/rag.d.ts +23 -0
- package/dist/chains/rag.d.ts.map +1 -0
- package/dist/chains/rag.js +47 -0
- package/dist/chains/rag.js.map +1 -0
- package/dist/core/types.d.ts +130 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +8 -0
- package/dist/core/types.js.map +1 -0
- package/dist/document_loaders/index.d.ts +61 -0
- package/dist/document_loaders/index.d.ts.map +1 -0
- package/dist/document_loaders/index.js +183 -0
- package/dist/document_loaders/index.js.map +1 -0
- package/dist/embeddings/google.d.ts +43 -0
- package/dist/embeddings/google.d.ts.map +1 -0
- package/dist/embeddings/google.js +90 -0
- package/dist/embeddings/google.js.map +1 -0
- package/dist/embeddings/local.d.ts +64 -0
- package/dist/embeddings/local.d.ts.map +1 -0
- package/dist/embeddings/local.js +95 -0
- package/dist/embeddings/local.js.map +1 -0
- package/dist/evals/judge.d.ts +22 -0
- package/dist/evals/judge.d.ts.map +1 -0
- package/dist/evals/judge.js +77 -0
- package/dist/evals/judge.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/buffer.d.ts +64 -0
- package/dist/memory/buffer.d.ts.map +1 -0
- package/dist/memory/buffer.js +168 -0
- package/dist/memory/buffer.js.map +1 -0
- package/dist/parsers/output.d.ts +64 -0
- package/dist/parsers/output.d.ts.map +1 -0
- package/dist/parsers/output.js +148 -0
- package/dist/parsers/output.js.map +1 -0
- package/dist/prompts/registry.d.ts +65 -0
- package/dist/prompts/registry.d.ts.map +1 -0
- package/dist/prompts/registry.js +170 -0
- package/dist/prompts/registry.js.map +1 -0
- package/dist/providers/ollama.d.ts +30 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +104 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +46 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +228 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/retrievers/index.d.ts +71 -0
- package/dist/retrievers/index.d.ts.map +1 -0
- package/dist/retrievers/index.js +130 -0
- package/dist/retrievers/index.js.map +1 -0
- package/dist/router/smartrouter.d.ts +36 -0
- package/dist/router/smartrouter.d.ts.map +1 -0
- package/dist/router/smartrouter.js +132 -0
- package/dist/router/smartrouter.js.map +1 -0
- package/dist/text_splitters/index.d.ts +28 -0
- package/dist/text_splitters/index.d.ts.map +1 -0
- package/dist/text_splitters/index.js +109 -0
- package/dist/text_splitters/index.js.map +1 -0
- package/dist/tools/decorator.d.ts +26 -0
- package/dist/tools/decorator.d.ts.map +1 -0
- package/dist/tools/decorator.js +102 -0
- package/dist/tools/decorator.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/keiro.d.ts +20 -0
- package/dist/tools/keiro.d.ts.map +1 -0
- package/dist/tools/keiro.js +67 -0
- package/dist/tools/keiro.js.map +1 -0
- package/dist/tracing/tracer.d.ts +56 -0
- package/dist/tracing/tracer.d.ts.map +1 -0
- package/dist/tracing/tracer.js +125 -0
- package/dist/tracing/tracer.js.map +1 -0
- package/dist/utils/logger.d.ts +25 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +50 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pricing.d.ts +31 -0
- package/dist/utils/pricing.d.ts.map +1 -0
- package/dist/utils/pricing.js +108 -0
- package/dist/utils/pricing.js.map +1 -0
- package/dist/vectorstores/index.d.ts +62 -0
- package/dist/vectorstores/index.d.ts.map +1 -0
- package/dist/vectorstores/index.js +244 -0
- package/dist/vectorstores/index.js.map +1 -0
- package/package.json +48 -0
- package/src/cache/semantic.ts +175 -0
- package/src/chains/llmchain.ts +194 -0
- package/src/chains/rag.ts +65 -0
- package/src/core/types.ts +178 -0
- package/src/document_loaders/index.ts +223 -0
- package/src/embeddings/google.ts +119 -0
- package/src/embeddings/local.ts +118 -0
- package/src/evals/judge.ts +99 -0
- package/src/index.ts +121 -0
- package/src/memory/buffer.ts +222 -0
- package/src/parsers/output.ts +195 -0
- package/src/prompts/registry.ts +205 -0
- package/src/providers/ollama.ts +151 -0
- package/src/providers/openai.ts +320 -0
- package/src/retrievers/index.ts +182 -0
- package/src/router/smartrouter.ts +172 -0
- package/src/text_splitters/index.ts +145 -0
- package/src/tools/decorator.ts +145 -0
- package/src/tools/index.ts +7 -0
- package/src/tools/keiro.ts +92 -0
- package/src/tracing/tracer.ts +178 -0
- package/src/utils/logger.ts +62 -0
- package/src/utils/pricing.ts +133 -0
- package/src/vectorstores/index.ts +338 -0
- package/test-full.mjs +552 -0
- package/test.mjs +74 -0
- package/tsconfig.json +30 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazlo Logger - Simple, structured logging
|
|
3
|
+
*/
|
|
4
|
+
export var LogLevel;
|
|
5
|
+
(function (LogLevel) {
|
|
6
|
+
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
7
|
+
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
8
|
+
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
9
|
+
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
10
|
+
})(LogLevel || (LogLevel = {}));
|
|
11
|
+
const LEVEL_NAMES = ['DEBUG', 'INFO', 'WARN', 'ERROR'];
|
|
12
|
+
class Logger {
|
|
13
|
+
level = LogLevel.INFO;
|
|
14
|
+
prefix = '';
|
|
15
|
+
constructor(prefix = '') {
|
|
16
|
+
this.prefix = prefix;
|
|
17
|
+
}
|
|
18
|
+
setLevel(level) {
|
|
19
|
+
this.level = level;
|
|
20
|
+
}
|
|
21
|
+
setPrefix(prefix) {
|
|
22
|
+
this.prefix = prefix;
|
|
23
|
+
}
|
|
24
|
+
log(level, ...args) {
|
|
25
|
+
if (level < this.level)
|
|
26
|
+
return;
|
|
27
|
+
const timestamp = new Date().toISOString();
|
|
28
|
+
const levelName = LEVEL_NAMES[level];
|
|
29
|
+
const prefix = this.prefix ? `[${this.prefix}] ` : '';
|
|
30
|
+
console.log(`\x1b[90m${timestamp}\x1b[0m ${levelName} ${prefix}`, ...args);
|
|
31
|
+
}
|
|
32
|
+
debug(...args) {
|
|
33
|
+
this.log(LogLevel.DEBUG, ...args);
|
|
34
|
+
}
|
|
35
|
+
info(...args) {
|
|
36
|
+
this.log(LogLevel.INFO, ...args);
|
|
37
|
+
}
|
|
38
|
+
warn(...args) {
|
|
39
|
+
this.log(LogLevel.WARN, ...args);
|
|
40
|
+
}
|
|
41
|
+
error(...args) {
|
|
42
|
+
this.log(LogLevel.ERROR, ...args);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export const logger = new Logger('Lazlo');
|
|
46
|
+
// Factory for child loggers
|
|
47
|
+
export function createLogger(prefix) {
|
|
48
|
+
return new Logger(prefix);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAED,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAEvD,MAAM,MAAM;IACF,KAAK,GAAa,QAAQ,CAAC,IAAI,CAAC;IAChC,MAAM,GAAW,EAAE,CAAC;IAE5B,YAAY,SAAiB,EAAE;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,KAAe;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,GAAG,IAAe;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;YAAE,OAAO;QAE/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,WAAW,SAAS,IAAI,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AAE1C,4BAA4B;AAC5B,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazlo Pricing - Model pricing lookup and cost calculation
|
|
3
|
+
*/
|
|
4
|
+
import { ModelPricing } from '../core/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Get pricing for a model
|
|
7
|
+
*/
|
|
8
|
+
export declare function getPricing(model: string): ModelPricing;
|
|
9
|
+
/**
|
|
10
|
+
* Set custom pricing for a model
|
|
11
|
+
*/
|
|
12
|
+
export declare function setPricing(model: string, input: number, output: number): void;
|
|
13
|
+
/**
|
|
14
|
+
* Calculate cost in USD
|
|
15
|
+
*/
|
|
16
|
+
export declare function calculateCost(model: string, tokensIn: number, tokensOut: number): number;
|
|
17
|
+
/**
|
|
18
|
+
* Estimate tokens from text (rough approximation)
|
|
19
|
+
*/
|
|
20
|
+
export declare function estimateTokens(text: string): number;
|
|
21
|
+
/**
|
|
22
|
+
* Estimate cost from text
|
|
23
|
+
*/
|
|
24
|
+
export declare function estimateCost(model: string, textIn: string, textOut: string): number;
|
|
25
|
+
/**
|
|
26
|
+
* Load pricing from environment variables
|
|
27
|
+
* Call this after setting process.env if needed
|
|
28
|
+
* Format: LAZLO_PRICING_model_name=input,output
|
|
29
|
+
*/
|
|
30
|
+
export declare function loadEnvPricing(env?: Record<string, string | undefined>): void;
|
|
31
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/utils/pricing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAuChD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAqBtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,MAAM,CAIR;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,CAkB7E"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazlo Pricing - Model pricing lookup and cost calculation
|
|
3
|
+
*/
|
|
4
|
+
// Default pricing for common models (per 1M tokens)
|
|
5
|
+
const DEFAULT_PRICING = {
|
|
6
|
+
// OpenAI
|
|
7
|
+
'gpt-4o': { input: 2.50, output: 10.00 },
|
|
8
|
+
'gpt-4o-mini': { input: 0.15, output: 0.60 },
|
|
9
|
+
'gpt-4-turbo': { input: 10.00, output: 30.00 },
|
|
10
|
+
'gpt-3.5-turbo': { input: 0.50, output: 1.50 },
|
|
11
|
+
'gpt-4': { input: 30.00, output: 60.00 },
|
|
12
|
+
// Anthropic
|
|
13
|
+
'claude-3-5-sonnet': { input: 3.00, output: 15.00 },
|
|
14
|
+
'claude-3-5-sonnet-20241022': { input: 3.00, output: 15.00 },
|
|
15
|
+
'claude-3-opus': { input: 15.00, output: 75.00 },
|
|
16
|
+
'claude-3-sonnet': { input: 3.00, output: 15.00 },
|
|
17
|
+
'claude-3-haiku': { input: 0.25, output: 1.25 },
|
|
18
|
+
// Google
|
|
19
|
+
'gemini-1.5-flash': { input: 0.075, output: 0.30 },
|
|
20
|
+
'gemini-1.5-pro': { input: 1.25, output: 5.00 },
|
|
21
|
+
'gemini-2.0-flash': { input: 0.00, output: 0.00 },
|
|
22
|
+
'gemini-2.0-flash-001': { input: 0.00, output: 0.00 },
|
|
23
|
+
'gemini-2.0-pro': { input: 1.25, output: 5.00 },
|
|
24
|
+
// DeepSeek
|
|
25
|
+
'deepseek-chat': { input: 0.14, output: 0.28 },
|
|
26
|
+
'deepseek-coder': { input: 0.14, output: 0.28 },
|
|
27
|
+
// Meta Llama
|
|
28
|
+
'llama-3.1-70b': { input: 0.00, output: 0.00 },
|
|
29
|
+
'llama-3.1-8b': { input: 0.00, output: 0.00 },
|
|
30
|
+
'llama-3-70b': { input: 0.00, output: 0.00 },
|
|
31
|
+
'llama-3-8b': { input: 0.00, output: 0.00 },
|
|
32
|
+
};
|
|
33
|
+
// Custom pricing set by user
|
|
34
|
+
const customPricing = new Map();
|
|
35
|
+
/**
|
|
36
|
+
* Get pricing for a model
|
|
37
|
+
*/
|
|
38
|
+
export function getPricing(model) {
|
|
39
|
+
// Check custom pricing first
|
|
40
|
+
if (customPricing.has(model)) {
|
|
41
|
+
return customPricing.get(model);
|
|
42
|
+
}
|
|
43
|
+
// Try exact match
|
|
44
|
+
if (DEFAULT_PRICING[model]) {
|
|
45
|
+
return DEFAULT_PRICING[model];
|
|
46
|
+
}
|
|
47
|
+
// Try partial match
|
|
48
|
+
const modelLower = model.toLowerCase();
|
|
49
|
+
for (const [key, pricing] of Object.entries(DEFAULT_PRICING)) {
|
|
50
|
+
if (modelLower.includes(key.toLowerCase()) || key.toLowerCase().includes(modelLower)) {
|
|
51
|
+
return pricing;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Return placeholder - user needs to set pricing
|
|
55
|
+
return { input: 0, output: 0 };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Set custom pricing for a model
|
|
59
|
+
*/
|
|
60
|
+
export function setPricing(model, input, output) {
|
|
61
|
+
customPricing.set(model, { input, output });
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Calculate cost in USD
|
|
65
|
+
*/
|
|
66
|
+
export function calculateCost(model, tokensIn, tokensOut) {
|
|
67
|
+
const pricing = getPricing(model);
|
|
68
|
+
return (tokensIn / 1_000_000 * pricing.input) + (tokensOut / 1_000_000 * pricing.output);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Estimate tokens from text (rough approximation)
|
|
72
|
+
*/
|
|
73
|
+
export function estimateTokens(text) {
|
|
74
|
+
// Rough estimate: ~4 characters per token on average
|
|
75
|
+
return Math.max(1, Math.ceil(text.length / 4));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Estimate cost from text
|
|
79
|
+
*/
|
|
80
|
+
export function estimateCost(model, textIn, textOut) {
|
|
81
|
+
const tokensIn = estimateTokens(textIn);
|
|
82
|
+
const tokensOut = estimateTokens(textOut);
|
|
83
|
+
return calculateCost(model, tokensIn, tokensOut);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Load pricing from environment variables
|
|
87
|
+
* Call this after setting process.env if needed
|
|
88
|
+
* Format: LAZLO_PRICING_model_name=input,output
|
|
89
|
+
*/
|
|
90
|
+
export function loadEnvPricing(env) {
|
|
91
|
+
const environment = env ?? (typeof globalThis !== 'undefined' ? globalThis.process?.env : {});
|
|
92
|
+
for (const [key, value] of Object.entries(environment)) {
|
|
93
|
+
if (key.startsWith('LAZLO_PRICING_')) {
|
|
94
|
+
const modelName = key.replace('LAZLO_PRICING_', '').toLowerCase();
|
|
95
|
+
if (typeof value === 'string') {
|
|
96
|
+
const parts = value.split(',');
|
|
97
|
+
if (parts.length === 2) {
|
|
98
|
+
const input = parseFloat(parts[0]);
|
|
99
|
+
const output = parseFloat(parts[1]);
|
|
100
|
+
if (!isNaN(input) && !isNaN(output)) {
|
|
101
|
+
setPricing(modelName, input, output);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/utils/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector Stores
|
|
3
|
+
*
|
|
4
|
+
* In-Memory, Chroma, and SQLite-Vector stores for document retrieval
|
|
5
|
+
*/
|
|
6
|
+
export interface Document {
|
|
7
|
+
pageContent: string;
|
|
8
|
+
metadata: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface BaseEmbeddings {
|
|
11
|
+
embedQuery(text: string): Promise<number[]>;
|
|
12
|
+
embedDocuments(texts: string[]): Promise<number[][]>;
|
|
13
|
+
}
|
|
14
|
+
export declare class InMemoryVectorStore {
|
|
15
|
+
private embeddingModel?;
|
|
16
|
+
private store;
|
|
17
|
+
constructor(embeddingModel?: BaseEmbeddings);
|
|
18
|
+
addDocuments(documents: Document[]): Promise<void>;
|
|
19
|
+
similaritySearch(query: string, k?: number): Promise<Document[]>;
|
|
20
|
+
similaritySearchWithScore(query: string, k?: number): Promise<[Document, number][]>;
|
|
21
|
+
delete(): void;
|
|
22
|
+
}
|
|
23
|
+
export declare class ChromaVectorStore {
|
|
24
|
+
private embeddingModel?;
|
|
25
|
+
private collectionName;
|
|
26
|
+
private documents;
|
|
27
|
+
constructor(options?: {
|
|
28
|
+
embeddingModel?: BaseEmbeddings;
|
|
29
|
+
collectionName?: string;
|
|
30
|
+
});
|
|
31
|
+
addDocuments(documents: Document[]): Promise<string[]>;
|
|
32
|
+
similaritySearch(query: string, k?: number): Promise<Document[]>;
|
|
33
|
+
similaritySearchWithScore(query: string, k?: number): Promise<[Document, number][]>;
|
|
34
|
+
delete(ids: string[]): Promise<void>;
|
|
35
|
+
get(ids: string[]): Promise<Document[]>;
|
|
36
|
+
}
|
|
37
|
+
export declare class SQLiteVectorStore {
|
|
38
|
+
private embeddingModel?;
|
|
39
|
+
private dbPath;
|
|
40
|
+
private documents;
|
|
41
|
+
private db;
|
|
42
|
+
constructor(options?: {
|
|
43
|
+
embeddingModel?: BaseEmbeddings;
|
|
44
|
+
dbPath?: string;
|
|
45
|
+
});
|
|
46
|
+
private initialize;
|
|
47
|
+
addDocuments(documents: Document[]): Promise<string[]>;
|
|
48
|
+
similaritySearch(query: string, k?: number): Promise<Document[]>;
|
|
49
|
+
similaritySearchWithScore(query: string, k?: number): Promise<[Document, number][]>;
|
|
50
|
+
delete(ids: string[]): Promise<void>;
|
|
51
|
+
get(ids: string[]): Promise<Document[]>;
|
|
52
|
+
}
|
|
53
|
+
export declare function createVectorStore(embeddingModel?: BaseEmbeddings): InMemoryVectorStore;
|
|
54
|
+
export declare function createChromaVectorStore(options?: {
|
|
55
|
+
embeddingModel?: BaseEmbeddings;
|
|
56
|
+
collectionName?: string;
|
|
57
|
+
}): ChromaVectorStore;
|
|
58
|
+
export declare function createSQLiteVectorStore(options?: {
|
|
59
|
+
embeddingModel?: BaseEmbeddings;
|
|
60
|
+
dbPath?: string;
|
|
61
|
+
}): SQLiteVectorStore;
|
|
62
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vectorstores/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector Stores
|
|
3
|
+
*
|
|
4
|
+
* In-Memory, Chroma, and SQLite-Vector stores for document retrieval
|
|
5
|
+
*/
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Cosine Similarity
|
|
9
|
+
// ============================================================================
|
|
10
|
+
function cosineSimilarity(a, b) {
|
|
11
|
+
const dot = a.reduce((sum, v, i) => sum + v * b[i], 0);
|
|
12
|
+
const normA = Math.sqrt(a.reduce((sum, v) => sum + v * v, 0));
|
|
13
|
+
const normB = Math.sqrt(b.reduce((sum, v) => sum + v * v, 0));
|
|
14
|
+
if (normA === 0 || normB === 0)
|
|
15
|
+
return 0;
|
|
16
|
+
return dot / (normA * normB);
|
|
17
|
+
}
|
|
18
|
+
export class InMemoryVectorStore {
|
|
19
|
+
embeddingModel;
|
|
20
|
+
store = [];
|
|
21
|
+
constructor(embeddingModel) {
|
|
22
|
+
this.embeddingModel = embeddingModel;
|
|
23
|
+
logger.info('[Lazlo] InMemoryVectorStore ready.');
|
|
24
|
+
}
|
|
25
|
+
async addDocuments(documents) {
|
|
26
|
+
if (!this.embeddingModel) {
|
|
27
|
+
throw new Error('No embedding model provided');
|
|
28
|
+
}
|
|
29
|
+
const texts = documents.map(d => d.pageContent);
|
|
30
|
+
const metadatas = documents.map(d => d.metadata);
|
|
31
|
+
const embeddings = await this.embeddingModel.embedDocuments(texts);
|
|
32
|
+
documents.forEach((doc, i) => {
|
|
33
|
+
this.store.push({
|
|
34
|
+
pageContent: doc.pageContent,
|
|
35
|
+
metadata: doc.metadata,
|
|
36
|
+
embedding: embeddings[i],
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async similaritySearch(query, k = 4) {
|
|
41
|
+
if (!this.embeddingModel) {
|
|
42
|
+
throw new Error('No embedding model provided');
|
|
43
|
+
}
|
|
44
|
+
const queryEmbedding = await this.embeddingModel.embedQuery(query);
|
|
45
|
+
// Score all documents
|
|
46
|
+
const scored = this.store.map(doc => ({
|
|
47
|
+
doc,
|
|
48
|
+
score: cosineSimilarity(queryEmbedding, doc.embedding),
|
|
49
|
+
}));
|
|
50
|
+
// Sort by score descending
|
|
51
|
+
scored.sort((a, b) => b.score - a.score);
|
|
52
|
+
// Return top k
|
|
53
|
+
return scored.slice(0, k).map(s => ({
|
|
54
|
+
pageContent: s.doc.pageContent,
|
|
55
|
+
metadata: s.doc.metadata,
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
async similaritySearchWithScore(query, k = 4) {
|
|
59
|
+
if (!this.embeddingModel) {
|
|
60
|
+
throw new Error('No embedding model provided');
|
|
61
|
+
}
|
|
62
|
+
const queryEmbedding = await this.embeddingModel.embedQuery(query);
|
|
63
|
+
const scored = this.store.map(doc => ({
|
|
64
|
+
doc,
|
|
65
|
+
score: cosineSimilarity(queryEmbedding, doc.embedding),
|
|
66
|
+
}));
|
|
67
|
+
scored.sort((a, b) => b.score - a.score);
|
|
68
|
+
return scored.slice(0, k).map(s => [
|
|
69
|
+
{ pageContent: s.doc.pageContent, metadata: s.doc.metadata },
|
|
70
|
+
s.score,
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
delete() {
|
|
74
|
+
this.store = [];
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// Chroma Vector Store (Client-side implementation)
|
|
79
|
+
// ============================================================================
|
|
80
|
+
export class ChromaVectorStore {
|
|
81
|
+
embeddingModel;
|
|
82
|
+
collectionName;
|
|
83
|
+
documents = new Map();
|
|
84
|
+
constructor(options = {}) {
|
|
85
|
+
this.embeddingModel = options.embeddingModel;
|
|
86
|
+
this.collectionName = options.collectionName || 'lazlo-collection';
|
|
87
|
+
logger.info(`[Lazlo] ChromaVectorStore ready. Collection: ${this.collectionName}`);
|
|
88
|
+
}
|
|
89
|
+
async addDocuments(documents) {
|
|
90
|
+
if (!this.embeddingModel) {
|
|
91
|
+
throw new Error('No embedding model provided');
|
|
92
|
+
}
|
|
93
|
+
const texts = documents.map(d => d.pageContent);
|
|
94
|
+
const embeddings = await this.embeddingModel.embedDocuments(texts);
|
|
95
|
+
const ids = [];
|
|
96
|
+
documents.forEach((doc, i) => {
|
|
97
|
+
const id = crypto.randomUUID();
|
|
98
|
+
this.documents.set(id, {
|
|
99
|
+
pageContent: doc.pageContent,
|
|
100
|
+
metadata: doc.metadata,
|
|
101
|
+
embedding: embeddings[i],
|
|
102
|
+
});
|
|
103
|
+
ids.push(id);
|
|
104
|
+
});
|
|
105
|
+
return ids;
|
|
106
|
+
}
|
|
107
|
+
async similaritySearch(query, k = 4) {
|
|
108
|
+
if (!this.embeddingModel) {
|
|
109
|
+
throw new Error('No embedding model provided');
|
|
110
|
+
}
|
|
111
|
+
const queryEmbedding = await this.embeddingModel.embedQuery(query);
|
|
112
|
+
const scored = Array.from(this.documents.entries()).map(([id, doc]) => ({
|
|
113
|
+
id,
|
|
114
|
+
doc,
|
|
115
|
+
score: cosineSimilarity(queryEmbedding, doc.embedding),
|
|
116
|
+
}));
|
|
117
|
+
scored.sort((a, b) => b.score - a.score);
|
|
118
|
+
return scored.slice(0, k).map(s => ({
|
|
119
|
+
pageContent: s.doc.pageContent,
|
|
120
|
+
metadata: s.doc.metadata,
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
async similaritySearchWithScore(query, k = 4) {
|
|
124
|
+
if (!this.embeddingModel) {
|
|
125
|
+
throw new Error('No embedding model provided');
|
|
126
|
+
}
|
|
127
|
+
const queryEmbedding = await this.embeddingModel.embedQuery(query);
|
|
128
|
+
const scored = Array.from(this.documents.entries()).map(([id, doc]) => ({
|
|
129
|
+
id,
|
|
130
|
+
doc,
|
|
131
|
+
score: cosineSimilarity(queryEmbedding, doc.embedding),
|
|
132
|
+
}));
|
|
133
|
+
scored.sort((a, b) => b.score - a.score);
|
|
134
|
+
return scored.slice(0, k).map(s => [
|
|
135
|
+
{ pageContent: s.doc.pageContent, metadata: s.doc.metadata },
|
|
136
|
+
s.score,
|
|
137
|
+
]);
|
|
138
|
+
}
|
|
139
|
+
async delete(ids) {
|
|
140
|
+
for (const id of ids) {
|
|
141
|
+
this.documents.delete(id);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async get(ids) {
|
|
145
|
+
return ids
|
|
146
|
+
.map(id => this.documents.get(id))
|
|
147
|
+
.filter((d) => d !== undefined)
|
|
148
|
+
.map(d => ({ pageContent: d.pageContent, metadata: d.metadata }));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// ============================================================================
|
|
152
|
+
// SQLite-Vector Store (using better-sqlite3 if available)
|
|
153
|
+
// ============================================================================
|
|
154
|
+
export class SQLiteVectorStore {
|
|
155
|
+
embeddingModel;
|
|
156
|
+
dbPath;
|
|
157
|
+
documents = new Map();
|
|
158
|
+
db = null;
|
|
159
|
+
constructor(options = {}) {
|
|
160
|
+
this.embeddingModel = options.embeddingModel;
|
|
161
|
+
this.dbPath = options.dbPath || ':memory:';
|
|
162
|
+
logger.info(`[Lazlo] SQLiteVectorStore ready. Path: ${this.dbPath}`);
|
|
163
|
+
// Initialize in-memory storage (full SQLite-Vector requires native module)
|
|
164
|
+
this.initialize();
|
|
165
|
+
}
|
|
166
|
+
initialize() {
|
|
167
|
+
// In-memory storage as fallback (actual sqlite-vec requires native module)
|
|
168
|
+
logger.debug('[SQLiteVectorStore] Using in-memory storage (install better-sqlite3 for full SQLite-Vector support)');
|
|
169
|
+
}
|
|
170
|
+
async addDocuments(documents) {
|
|
171
|
+
if (!this.embeddingModel) {
|
|
172
|
+
throw new Error('No embedding model provided');
|
|
173
|
+
}
|
|
174
|
+
const texts = documents.map(d => d.pageContent);
|
|
175
|
+
const embeddings = await this.embeddingModel.embedDocuments(texts);
|
|
176
|
+
const ids = [];
|
|
177
|
+
documents.forEach((doc, i) => {
|
|
178
|
+
const id = crypto.randomUUID();
|
|
179
|
+
this.documents.set(id, {
|
|
180
|
+
pageContent: doc.pageContent,
|
|
181
|
+
metadata: doc.metadata,
|
|
182
|
+
embedding: embeddings[i],
|
|
183
|
+
});
|
|
184
|
+
ids.push(id);
|
|
185
|
+
});
|
|
186
|
+
return ids;
|
|
187
|
+
}
|
|
188
|
+
async similaritySearch(query, k = 4) {
|
|
189
|
+
if (!this.embeddingModel) {
|
|
190
|
+
throw new Error('No embedding model provided');
|
|
191
|
+
}
|
|
192
|
+
const queryEmbedding = await this.embeddingModel.embedQuery(query);
|
|
193
|
+
const scored = Array.from(this.documents.entries()).map(([id, doc]) => ({
|
|
194
|
+
id,
|
|
195
|
+
doc,
|
|
196
|
+
score: cosineSimilarity(queryEmbedding, doc.embedding),
|
|
197
|
+
}));
|
|
198
|
+
scored.sort((a, b) => b.score - a.score);
|
|
199
|
+
return scored.slice(0, k).map(s => ({
|
|
200
|
+
pageContent: s.doc.pageContent,
|
|
201
|
+
metadata: s.doc.metadata,
|
|
202
|
+
}));
|
|
203
|
+
}
|
|
204
|
+
async similaritySearchWithScore(query, k = 4) {
|
|
205
|
+
if (!this.embeddingModel) {
|
|
206
|
+
throw new Error('No embedding model provided');
|
|
207
|
+
}
|
|
208
|
+
const queryEmbedding = await this.embeddingModel.embedQuery(query);
|
|
209
|
+
const scored = Array.from(this.documents.entries()).map(([id, doc]) => ({
|
|
210
|
+
id,
|
|
211
|
+
doc,
|
|
212
|
+
score: cosineSimilarity(queryEmbedding, doc.embedding),
|
|
213
|
+
}));
|
|
214
|
+
scored.sort((a, b) => b.score - a.score);
|
|
215
|
+
return scored.slice(0, k).map(s => [
|
|
216
|
+
{ pageContent: s.doc.pageContent, metadata: s.doc.metadata },
|
|
217
|
+
s.score,
|
|
218
|
+
]);
|
|
219
|
+
}
|
|
220
|
+
async delete(ids) {
|
|
221
|
+
for (const id of ids) {
|
|
222
|
+
this.documents.delete(id);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
async get(ids) {
|
|
226
|
+
return ids
|
|
227
|
+
.map(id => this.documents.get(id))
|
|
228
|
+
.filter((d) => d !== undefined)
|
|
229
|
+
.map(d => ({ pageContent: d.pageContent, metadata: d.metadata }));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// ============================================================================
|
|
233
|
+
// Factory
|
|
234
|
+
// ============================================================================
|
|
235
|
+
export function createVectorStore(embeddingModel) {
|
|
236
|
+
return new InMemoryVectorStore(embeddingModel);
|
|
237
|
+
}
|
|
238
|
+
export function createChromaVectorStore(options) {
|
|
239
|
+
return new ChromaVectorStore(options);
|
|
240
|
+
}
|
|
241
|
+
export function createSQLiteVectorStore(options) {
|
|
242
|
+
return new SQLiteVectorStore(options);
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vectorstores/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "lazlo-ai",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "The Anti-Framework for AI - A production-grade AI framework for JavaScript/TypeScript",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
11
|
+
"start": "node dist/index.js",
|
|
12
|
+
"dashboard": "node dist/observability/dashboard.js"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"ai",
|
|
16
|
+
"llm",
|
|
17
|
+
"openai",
|
|
18
|
+
"langchain",
|
|
19
|
+
"gemini",
|
|
20
|
+
"anthropic",
|
|
21
|
+
"ollama",
|
|
22
|
+
"chatgpt",
|
|
23
|
+
"gpt",
|
|
24
|
+
"claude"
|
|
25
|
+
],
|
|
26
|
+
"author": "Lazlo Team",
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"axios": "^1.6.0",
|
|
30
|
+
"dotenv": "^16.3.1",
|
|
31
|
+
"zod": "^3.22.4",
|
|
32
|
+
"express": "^4.18.2",
|
|
33
|
+
"cors": "^2.8.5",
|
|
34
|
+
"ws": "^8.14.2"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/node": "^20.10.0",
|
|
38
|
+
"@types/express": "^4.17.21",
|
|
39
|
+
"@types/cors": "^2.8.17",
|
|
40
|
+
"@types/ws": "^8.5.10",
|
|
41
|
+
"typescript": "^5.3.2",
|
|
42
|
+
"jest": "^29.7.0",
|
|
43
|
+
"ts-jest": "^29.1.1"
|
|
44
|
+
},
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=18.0.0"
|
|
47
|
+
}
|
|
48
|
+
}
|