@mcp-abap-adt/llm-agent 7.0.0 → 8.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/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/smart-agent/agent.d.ts +18 -2
- package/dist/smart-agent/agent.d.ts.map +1 -1
- package/dist/smart-agent/agent.js +58 -21
- package/dist/smart-agent/agent.js.map +1 -1
- package/dist/smart-agent/builder.d.ts.map +1 -1
- package/dist/smart-agent/builder.js +4 -0
- package/dist/smart-agent/builder.js.map +1 -1
- package/dist/smart-agent/config.d.ts +1 -1
- package/dist/smart-agent/config.d.ts.map +1 -1
- package/dist/smart-agent/config.js +1 -1
- package/dist/smart-agent/pipeline/default-pipeline.js +1 -1
- package/dist/smart-agent/pipeline/default-pipeline.js.map +1 -1
- package/dist/smart-agent/pipeline/handlers/classify.d.ts.map +1 -1
- package/dist/smart-agent/pipeline/handlers/classify.js +10 -1
- package/dist/smart-agent/pipeline/handlers/classify.js.map +1 -1
- package/dist/smart-agent/pipeline/handlers/tool-loop.js +1 -1
- package/dist/smart-agent/pipeline/handlers/tool-loop.js.map +1 -1
- package/dist/smart-agent/pipeline/handlers/tool-select.js +1 -1
- package/dist/smart-agent/pipeline/handlers/tool-select.js.map +1 -1
- package/dist/smart-agent/providers.d.ts +8 -0
- package/dist/smart-agent/providers.d.ts.map +1 -1
- package/dist/smart-agent/providers.js +17 -1
- package/dist/smart-agent/providers.js.map +1 -1
- package/dist/smart-agent/rag/in-memory-rag.d.ts +7 -0
- package/dist/smart-agent/rag/in-memory-rag.d.ts.map +1 -1
- package/dist/smart-agent/rag/in-memory-rag.js +21 -5
- package/dist/smart-agent/rag/in-memory-rag.js.map +1 -1
- package/dist/smart-agent/rag/index.d.ts +4 -0
- package/dist/smart-agent/rag/index.d.ts.map +1 -1
- package/dist/smart-agent/rag/index.js +2 -0
- package/dist/smart-agent/rag/index.js.map +1 -1
- package/dist/smart-agent/rag/preprocessor.d.ts +82 -0
- package/dist/smart-agent/rag/preprocessor.d.ts.map +1 -0
- package/dist/smart-agent/rag/preprocessor.js +203 -0
- package/dist/smart-agent/rag/preprocessor.js.map +1 -0
- package/dist/smart-agent/rag/search-strategy.d.ts +89 -0
- package/dist/smart-agent/rag/search-strategy.d.ts.map +1 -0
- package/dist/smart-agent/rag/search-strategy.js +200 -0
- package/dist/smart-agent/rag/search-strategy.js.map +1 -0
- package/dist/smart-agent/rag/tool-indexing-strategy.d.ts +58 -0
- package/dist/smart-agent/rag/tool-indexing-strategy.d.ts.map +1 -0
- package/dist/smart-agent/rag/tool-indexing-strategy.js +130 -0
- package/dist/smart-agent/rag/tool-indexing-strategy.js.map +1 -0
- package/dist/smart-agent/rag/vector-rag.d.ts +11 -5
- package/dist/smart-agent/rag/vector-rag.d.ts.map +1 -1
- package/dist/smart-agent/rag/vector-rag.js +55 -46
- package/dist/smart-agent/rag/vector-rag.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/smart-agent/providers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAEL,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAIlE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/smart-agent/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,16 +2,23 @@ import type { IQueryEmbedding } from '../interfaces/query-embedding.js';
|
|
|
2
2
|
import type { IRag } from '../interfaces/rag.js';
|
|
3
3
|
import type { CallOptions, RagMetadata, RagResult, Result } from '../interfaces/types.js';
|
|
4
4
|
import { RagError } from '../interfaces/types.js';
|
|
5
|
+
import type { IDocumentEnricher, IQueryPreprocessor } from './preprocessor.js';
|
|
5
6
|
export interface InMemoryRagConfig {
|
|
6
7
|
/** Cosine similarity above which upsert updates existing record. Default: 0.92 */
|
|
7
8
|
dedupThreshold?: number;
|
|
8
9
|
/** Namespace for this store. Records with different namespace are invisible to query. */
|
|
9
10
|
namespace?: string;
|
|
11
|
+
/** Query preprocessors (translate, expand, etc.). Applied in order before embedding. */
|
|
12
|
+
queryPreprocessors?: IQueryPreprocessor[];
|
|
13
|
+
/** Document enrichers. Applied in order before embedding on upsert. */
|
|
14
|
+
documentEnrichers?: IDocumentEnricher[];
|
|
10
15
|
}
|
|
11
16
|
export declare class InMemoryRag implements IRag {
|
|
12
17
|
private records;
|
|
13
18
|
private readonly dedupThreshold;
|
|
14
19
|
private readonly namespace?;
|
|
20
|
+
private readonly queryPreprocessors;
|
|
21
|
+
private readonly documentEnrichers;
|
|
15
22
|
constructor(config?: InMemoryRagConfig);
|
|
16
23
|
upsert(text: string, metadata: RagMetadata, options?: CallOptions): Promise<Result<void, RagError>>;
|
|
17
24
|
query(embedding: IQueryEmbedding, k: number, options?: CallOptions): Promise<Result<RagResult[], RagError>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-rag.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/rag/in-memory-rag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,MAAM,EACP,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"in-memory-rag.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/rag/in-memory-rag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,MAAM,EACP,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAwC/E,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC1C,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACzC;AAiBD,qBAAa,WAAY,YAAW,IAAI;IACtC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAuB;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;gBAE5C,MAAM,CAAC,EAAE,iBAAiB;IAOhC,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAiE5B,KAAK,CACT,SAAS,EAAE,eAAe,EAC1B,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;IAwCnC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAIpD,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -38,15 +38,25 @@ export class InMemoryRag {
|
|
|
38
38
|
records = [];
|
|
39
39
|
dedupThreshold;
|
|
40
40
|
namespace;
|
|
41
|
+
queryPreprocessors;
|
|
42
|
+
documentEnrichers;
|
|
41
43
|
constructor(config) {
|
|
42
44
|
this.dedupThreshold = config?.dedupThreshold ?? 0.92;
|
|
43
45
|
this.namespace = config?.namespace;
|
|
46
|
+
this.queryPreprocessors = config?.queryPreprocessors ?? [];
|
|
47
|
+
this.documentEnrichers = config?.documentEnrichers ?? [];
|
|
44
48
|
}
|
|
45
49
|
async upsert(text, metadata, options) {
|
|
46
50
|
if (options?.signal?.aborted) {
|
|
47
51
|
return { ok: false, error: new RagError('Aborted', 'ABORTED') };
|
|
48
52
|
}
|
|
49
|
-
|
|
53
|
+
let enrichedText = text;
|
|
54
|
+
for (const enricher of this.documentEnrichers) {
|
|
55
|
+
const eResult = await enricher.enrich(enrichedText, options);
|
|
56
|
+
if (eResult.ok)
|
|
57
|
+
enrichedText = eResult.value;
|
|
58
|
+
}
|
|
59
|
+
const embedding = embed(enrichedText);
|
|
50
60
|
const effectiveNamespace = metadata.namespace ?? this.namespace;
|
|
51
61
|
const resolvedMetadata = {
|
|
52
62
|
...metadata,
|
|
@@ -56,7 +66,7 @@ export class InMemoryRag {
|
|
|
56
66
|
if (metadata.id) {
|
|
57
67
|
const idx = this.records.findIndex((r) => r.metadata.id === metadata.id);
|
|
58
68
|
if (idx !== -1) {
|
|
59
|
-
this.records[idx].text =
|
|
69
|
+
this.records[idx].text = enrichedText;
|
|
60
70
|
this.records[idx].embedding = embedding;
|
|
61
71
|
this.records[idx].metadata = {
|
|
62
72
|
...this.records[idx].metadata,
|
|
@@ -79,7 +89,7 @@ export class InMemoryRag {
|
|
|
79
89
|
}
|
|
80
90
|
if (dupRecord !== undefined) {
|
|
81
91
|
// Update existing record
|
|
82
|
-
dupRecord.text =
|
|
92
|
+
dupRecord.text = enrichedText;
|
|
83
93
|
dupRecord.embedding = embedding;
|
|
84
94
|
dupRecord.metadata = { ...dupRecord.metadata, ...resolvedMetadata };
|
|
85
95
|
}
|
|
@@ -87,7 +97,7 @@ export class InMemoryRag {
|
|
|
87
97
|
// Push new record
|
|
88
98
|
this.records.push({
|
|
89
99
|
id: randomUUID(),
|
|
90
|
-
text,
|
|
100
|
+
text: enrichedText,
|
|
91
101
|
embedding,
|
|
92
102
|
metadata: resolvedMetadata,
|
|
93
103
|
});
|
|
@@ -99,7 +109,13 @@ export class InMemoryRag {
|
|
|
99
109
|
return { ok: false, error: new RagError('Aborted', 'ABORTED') };
|
|
100
110
|
}
|
|
101
111
|
const text = embedding.text;
|
|
102
|
-
|
|
112
|
+
let searchText = text;
|
|
113
|
+
for (const pp of this.queryPreprocessors) {
|
|
114
|
+
const ppResult = await pp.process(searchText, options);
|
|
115
|
+
if (ppResult.ok)
|
|
116
|
+
searchText = ppResult.value;
|
|
117
|
+
}
|
|
118
|
+
const queryEmbedding = embed(searchText);
|
|
103
119
|
const nowSecs = Date.now() / 1000;
|
|
104
120
|
// Filter: namespace match + TTL not expired
|
|
105
121
|
const candidates = this.records.filter((r) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-rag.js","sourceRoot":"","sources":["../../../src/smart-agent/rag/in-memory-rag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"in-memory-rag.js","sourceRoot":"","sources":["../../../src/smart-agent/rag/in-memory-rag.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,12 @@ export type { OllamaEmbedderConfig } from './ollama-rag.js';
|
|
|
5
5
|
export { OllamaEmbedder, OllamaRag } from './ollama-rag.js';
|
|
6
6
|
export type { OpenAiEmbedderConfig } from './openai-embedder.js';
|
|
7
7
|
export { OpenAiEmbedder } from './openai-embedder.js';
|
|
8
|
+
export type { IDocumentEnricher, IQueryPreprocessor } from './preprocessor.js';
|
|
9
|
+
export { ExpandPreprocessor, IntentEnricher, NoopDocumentEnricher, NoopQueryPreprocessor, PreprocessorChain, TranslatePreprocessor, } from './preprocessor.js';
|
|
8
10
|
export type { QdrantRagConfig } from './qdrant-rag.js';
|
|
9
11
|
export { QdrantRag } from './qdrant-rag.js';
|
|
12
|
+
export type { IScoredResult, ISearchCandidate, ISearchContext, ISearchQuery, ISearchStrategy, } from './search-strategy.js';
|
|
13
|
+
export { Bm25OnlyStrategy, CompositeStrategy, type CompositeStrategyEntry, RrfStrategy, VectorOnlyStrategy, WeightedFusionStrategy, } from './search-strategy.js';
|
|
10
14
|
export type { VectorRagConfig } from './vector-rag.js';
|
|
11
15
|
export { VectorRag } from './vector-rag.js';
|
|
12
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,WAAW,EACX,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -2,6 +2,8 @@ export { builtInEmbedderFactories } from './embedder-factories.js';
|
|
|
2
2
|
export { InMemoryRag } from './in-memory-rag.js';
|
|
3
3
|
export { OllamaEmbedder, OllamaRag } from './ollama-rag.js';
|
|
4
4
|
export { OpenAiEmbedder } from './openai-embedder.js';
|
|
5
|
+
export { ExpandPreprocessor, IntentEnricher, NoopDocumentEnricher, NoopQueryPreprocessor, PreprocessorChain, TranslatePreprocessor, } from './preprocessor.js';
|
|
5
6
|
export { QdrantRag } from './qdrant-rag.js';
|
|
7
|
+
export { Bm25OnlyStrategy, CompositeStrategy, RrfStrategy, VectorOnlyStrategy, WeightedFusionStrategy, } from './search-strategy.js';
|
|
6
8
|
export { VectorRag } from './vector-rag.js';
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/smart-agent/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/smart-agent/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAEjB,WAAW,EACX,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { ILlm } from '../interfaces/llm.js';
|
|
2
|
+
import type { IRequestLogger } from '../interfaces/request-logger.js';
|
|
3
|
+
import type { CallOptions, RagError, Result } from '../interfaces/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Transforms query text before RAG search.
|
|
6
|
+
* Used for translation, expansion, normalization, etc.
|
|
7
|
+
* Runs inside IRag.query() before embedding.
|
|
8
|
+
*/
|
|
9
|
+
export interface IQueryPreprocessor {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
process(text: string, options?: CallOptions): Promise<Result<string, RagError>>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Enriches document text before RAG storage.
|
|
15
|
+
* Used for adding translations, synonyms, example queries, etc.
|
|
16
|
+
* Runs inside IRag.upsert() before embedding.
|
|
17
|
+
*/
|
|
18
|
+
export interface IDocumentEnricher {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
enrich(text: string, options?: CallOptions): Promise<Result<string, RagError>>;
|
|
21
|
+
}
|
|
22
|
+
export declare class NoopQueryPreprocessor implements IQueryPreprocessor {
|
|
23
|
+
readonly name = "noop";
|
|
24
|
+
process(text: string): Promise<Result<string, RagError>>;
|
|
25
|
+
}
|
|
26
|
+
export declare class NoopDocumentEnricher implements IDocumentEnricher {
|
|
27
|
+
readonly name = "noop";
|
|
28
|
+
enrich(text: string): Promise<Result<string, RagError>>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Translates non-ASCII queries to English via helper LLM.
|
|
32
|
+
* Passes through ASCII-only text and short text (< 15 chars) without LLM call.
|
|
33
|
+
* Falls back to original text on LLM failure.
|
|
34
|
+
*/
|
|
35
|
+
export declare class TranslatePreprocessor implements IQueryPreprocessor {
|
|
36
|
+
private readonly llm;
|
|
37
|
+
private readonly requestLogger?;
|
|
38
|
+
private readonly systemPrompt?;
|
|
39
|
+
readonly name = "translate";
|
|
40
|
+
constructor(llm: ILlm, requestLogger?: IRequestLogger | undefined, systemPrompt?: string | undefined);
|
|
41
|
+
process(text: string, options?: CallOptions): Promise<Result<string, RagError>>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Expands queries with LLM-generated synonyms and related terms.
|
|
45
|
+
* Concatenates original + expansion for broader recall.
|
|
46
|
+
*/
|
|
47
|
+
export declare class ExpandPreprocessor implements IQueryPreprocessor {
|
|
48
|
+
private readonly llm;
|
|
49
|
+
private readonly requestLogger?;
|
|
50
|
+
private readonly systemPrompt?;
|
|
51
|
+
readonly name = "expand";
|
|
52
|
+
constructor(llm: ILlm, requestLogger?: IRequestLogger | undefined, systemPrompt?: string | undefined);
|
|
53
|
+
process(text: string, options?: CallOptions): Promise<Result<string, RagError>>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Generates concise intent-based descriptions via LLM.
|
|
57
|
+
* Replaces verbose tool descriptions with short keyword phrases
|
|
58
|
+
* that match how users actually search.
|
|
59
|
+
*
|
|
60
|
+
* Output format: "ToolName: original_description\nIntent: keyword1, keyword2, ..."
|
|
61
|
+
* Both original and intent are stored — BM25 matches keywords, vector matches semantics.
|
|
62
|
+
*/
|
|
63
|
+
export declare class IntentEnricher implements IDocumentEnricher {
|
|
64
|
+
private readonly llm;
|
|
65
|
+
private readonly requestLogger?;
|
|
66
|
+
private readonly systemPrompt?;
|
|
67
|
+
readonly name = "intent";
|
|
68
|
+
constructor(llm: ILlm, requestLogger?: IRequestLogger | undefined, systemPrompt?: string | undefined);
|
|
69
|
+
enrich(text: string, options?: CallOptions): Promise<Result<string, RagError>>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Runs multiple preprocessors in sequence.
|
|
73
|
+
* Output of each becomes input of the next.
|
|
74
|
+
* Stops and returns error on first failure.
|
|
75
|
+
*/
|
|
76
|
+
export declare class PreprocessorChain implements IQueryPreprocessor {
|
|
77
|
+
private readonly preprocessors;
|
|
78
|
+
readonly name: string;
|
|
79
|
+
constructor(preprocessors: IQueryPreprocessor[]);
|
|
80
|
+
process(text: string, options?: CallOptions): Promise<Result<string, RagError>>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=preprocessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/rag/preprocessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
export class NoopQueryPreprocessor {
|
|
2
|
+
name = 'noop';
|
|
3
|
+
async process(text) {
|
|
4
|
+
return { ok: true, value: text };
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class NoopDocumentEnricher {
|
|
8
|
+
name = 'noop';
|
|
9
|
+
async enrich(text) {
|
|
10
|
+
return { ok: true, value: text };
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const TRANSLATE_SYSTEM_PROMPT = 'Translate the user request to English for tool search. Focus on the ACTION verb — use specific verbs (search, list, create, read, delete, execute, check) rather than generic ones (find, get, show). Preserve technical terms, object names, and abbreviations. Reply with only the English text, no explanation.';
|
|
14
|
+
/**
|
|
15
|
+
* Translates non-ASCII queries to English via helper LLM.
|
|
16
|
+
* Passes through ASCII-only text and short text (< 15 chars) without LLM call.
|
|
17
|
+
* Falls back to original text on LLM failure.
|
|
18
|
+
*/
|
|
19
|
+
export class TranslatePreprocessor {
|
|
20
|
+
llm;
|
|
21
|
+
requestLogger;
|
|
22
|
+
systemPrompt;
|
|
23
|
+
name = 'translate';
|
|
24
|
+
constructor(llm, requestLogger, systemPrompt) {
|
|
25
|
+
this.llm = llm;
|
|
26
|
+
this.requestLogger = requestLogger;
|
|
27
|
+
this.systemPrompt = systemPrompt;
|
|
28
|
+
}
|
|
29
|
+
async process(text, options) {
|
|
30
|
+
if (/^[\p{ASCII}]+$/u.test(text) || text.length < 15) {
|
|
31
|
+
return { ok: true, value: text };
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const chatStart = Date.now();
|
|
35
|
+
const res = await this.llm.chat([
|
|
36
|
+
{
|
|
37
|
+
role: 'system',
|
|
38
|
+
content: this.systemPrompt ?? TRANSLATE_SYSTEM_PROMPT,
|
|
39
|
+
},
|
|
40
|
+
{ role: 'user', content: text },
|
|
41
|
+
], [], options);
|
|
42
|
+
if (this.requestLogger) {
|
|
43
|
+
this.requestLogger.logLlmCall({
|
|
44
|
+
component: 'translate',
|
|
45
|
+
model: this.llm.model ?? 'unknown',
|
|
46
|
+
promptTokens: res.ok ? (res.value.usage?.promptTokens ?? 0) : 0,
|
|
47
|
+
completionTokens: res.ok
|
|
48
|
+
? (res.value.usage?.completionTokens ?? 0)
|
|
49
|
+
: 0,
|
|
50
|
+
totalTokens: res.ok ? (res.value.usage?.totalTokens ?? 0) : 0,
|
|
51
|
+
durationMs: Date.now() - chatStart,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (!res.ok || !res.value.content.trim()) {
|
|
55
|
+
return { ok: true, value: text };
|
|
56
|
+
}
|
|
57
|
+
return { ok: true, value: res.value.content.trim() };
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return { ok: true, value: text };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const EXPAND_SYSTEM_PROMPT = 'Given the user query, produce expanded search terms with synonyms and related terms. Return ONLY the expanded terms, no explanation.';
|
|
65
|
+
/**
|
|
66
|
+
* Expands queries with LLM-generated synonyms and related terms.
|
|
67
|
+
* Concatenates original + expansion for broader recall.
|
|
68
|
+
*/
|
|
69
|
+
export class ExpandPreprocessor {
|
|
70
|
+
llm;
|
|
71
|
+
requestLogger;
|
|
72
|
+
systemPrompt;
|
|
73
|
+
name = 'expand';
|
|
74
|
+
constructor(llm, requestLogger, systemPrompt) {
|
|
75
|
+
this.llm = llm;
|
|
76
|
+
this.requestLogger = requestLogger;
|
|
77
|
+
this.systemPrompt = systemPrompt;
|
|
78
|
+
}
|
|
79
|
+
async process(text, options) {
|
|
80
|
+
try {
|
|
81
|
+
const chatStart = Date.now();
|
|
82
|
+
const res = await this.llm.chat([
|
|
83
|
+
{
|
|
84
|
+
role: 'system',
|
|
85
|
+
content: this.systemPrompt ?? EXPAND_SYSTEM_PROMPT,
|
|
86
|
+
},
|
|
87
|
+
{ role: 'user', content: text },
|
|
88
|
+
], [], options);
|
|
89
|
+
if (this.requestLogger) {
|
|
90
|
+
this.requestLogger.logLlmCall({
|
|
91
|
+
component: 'query-expander',
|
|
92
|
+
model: this.llm.model ?? 'unknown',
|
|
93
|
+
promptTokens: res.ok ? (res.value.usage?.promptTokens ?? 0) : 0,
|
|
94
|
+
completionTokens: res.ok
|
|
95
|
+
? (res.value.usage?.completionTokens ?? 0)
|
|
96
|
+
: 0,
|
|
97
|
+
totalTokens: res.ok ? (res.value.usage?.totalTokens ?? 0) : 0,
|
|
98
|
+
durationMs: Date.now() - chatStart,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (!res.ok || !res.value.content.trim()) {
|
|
102
|
+
return { ok: true, value: text };
|
|
103
|
+
}
|
|
104
|
+
return { ok: true, value: `${text} ${res.value.content.trim()}` };
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return { ok: true, value: text };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const INTENT_ENRICHER_SYSTEM_PROMPT = `You receive a tool description with its name and parameters.
|
|
112
|
+
Extract the core INTENT in 3-5 short keyword phrases that a user would type when needing this tool.
|
|
113
|
+
Focus on WHAT the tool does, not HOW. Use simple action words.
|
|
114
|
+
|
|
115
|
+
Format: return ONLY the keyword phrases separated by commas, no explanation.
|
|
116
|
+
|
|
117
|
+
Examples:
|
|
118
|
+
- Input: "GetTableContents: Retrieve contents (data preview) of an ABAP database table or CDS view. Returns rows of data like SE16/SE16N."
|
|
119
|
+
Output: table data preview, read table contents, SE16 data, select from table, show table rows
|
|
120
|
+
|
|
121
|
+
- Input: "SearchObject: Find, search, locate, or check if an ABAP repository object exists by name or wildcard pattern."
|
|
122
|
+
Output: search object by name, find ABAP object, locate program class table, does object exist, wildcard search
|
|
123
|
+
|
|
124
|
+
- Input: "GetWhereUsed: Find where-used references for ABAP objects — classes, interfaces, function modules."
|
|
125
|
+
Output: where used references, who uses this object, cross references, find usages, show dependencies`;
|
|
126
|
+
/**
|
|
127
|
+
* Generates concise intent-based descriptions via LLM.
|
|
128
|
+
* Replaces verbose tool descriptions with short keyword phrases
|
|
129
|
+
* that match how users actually search.
|
|
130
|
+
*
|
|
131
|
+
* Output format: "ToolName: original_description\nIntent: keyword1, keyword2, ..."
|
|
132
|
+
* Both original and intent are stored — BM25 matches keywords, vector matches semantics.
|
|
133
|
+
*/
|
|
134
|
+
export class IntentEnricher {
|
|
135
|
+
llm;
|
|
136
|
+
requestLogger;
|
|
137
|
+
systemPrompt;
|
|
138
|
+
name = 'intent';
|
|
139
|
+
constructor(llm, requestLogger, systemPrompt) {
|
|
140
|
+
this.llm = llm;
|
|
141
|
+
this.requestLogger = requestLogger;
|
|
142
|
+
this.systemPrompt = systemPrompt;
|
|
143
|
+
}
|
|
144
|
+
async enrich(text, options) {
|
|
145
|
+
try {
|
|
146
|
+
const chatStart = Date.now();
|
|
147
|
+
const res = await this.llm.chat([
|
|
148
|
+
{
|
|
149
|
+
role: 'system',
|
|
150
|
+
content: this.systemPrompt ?? INTENT_ENRICHER_SYSTEM_PROMPT,
|
|
151
|
+
},
|
|
152
|
+
{ role: 'user', content: text },
|
|
153
|
+
], [], options);
|
|
154
|
+
if (this.requestLogger) {
|
|
155
|
+
this.requestLogger.logLlmCall({
|
|
156
|
+
component: 'helper',
|
|
157
|
+
model: this.llm.model ?? 'unknown',
|
|
158
|
+
promptTokens: res.ok ? (res.value.usage?.promptTokens ?? 0) : 0,
|
|
159
|
+
completionTokens: res.ok
|
|
160
|
+
? (res.value.usage?.completionTokens ?? 0)
|
|
161
|
+
: 0,
|
|
162
|
+
totalTokens: res.ok ? (res.value.usage?.totalTokens ?? 0) : 0,
|
|
163
|
+
durationMs: Date.now() - chatStart,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (!res.ok || !res.value.content.trim()) {
|
|
167
|
+
return { ok: true, value: text };
|
|
168
|
+
}
|
|
169
|
+
// Append intent keywords to original text — both get embedded together
|
|
170
|
+
return {
|
|
171
|
+
ok: true,
|
|
172
|
+
value: `${text}\nIntent: ${res.value.content.trim()}`,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return { ok: true, value: text };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Runs multiple preprocessors in sequence.
|
|
182
|
+
* Output of each becomes input of the next.
|
|
183
|
+
* Stops and returns error on first failure.
|
|
184
|
+
*/
|
|
185
|
+
export class PreprocessorChain {
|
|
186
|
+
preprocessors;
|
|
187
|
+
name;
|
|
188
|
+
constructor(preprocessors) {
|
|
189
|
+
this.preprocessors = preprocessors;
|
|
190
|
+
this.name = preprocessors.map((p) => p.name).join('+') || 'empty';
|
|
191
|
+
}
|
|
192
|
+
async process(text, options) {
|
|
193
|
+
let current = text;
|
|
194
|
+
for (const pp of this.preprocessors) {
|
|
195
|
+
const result = await pp.process(current, options);
|
|
196
|
+
if (!result.ok)
|
|
197
|
+
return result;
|
|
198
|
+
current = result.value;
|
|
199
|
+
}
|
|
200
|
+
return { ok: true, value: current };
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=preprocessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../../../src/smart-agent/rag/preprocessor.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,oBAAoB;IACtB,IAAI,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;CACF;AAED,MAAM,uBAAuB,GAC3B,oTAAoT,CAAC;AAEvT;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAIb;IACA;IACA;IALV,IAAI,GAAG,WAAW,CAAC;IAE5B,YACmB,GAAS,EACT,aAA8B,EAC9B,YAAqB;QAFrB,QAAG,GAAH,GAAG,CAAM;QACT,kBAAa,GAAb,aAAa,CAAiB;QAC9B,iBAAY,GAAZ,YAAY,CAAS;IACrC,CAAC;IAEJ,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,OAAqB;QAErB,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC7B;gBACE;oBACE,IAAI,EAAE,QAAiB;oBACvB,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,uBAAuB;iBACtD;gBACD,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,IAAI,EAAE;aACzC,EACD,EAAE,EACF,OAAO,CACR,CAAC;YACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;oBAC5B,SAAS,EAAE,WAAW;oBACtB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS;oBAClC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,gBAAgB,EAAE,GAAG,CAAC,EAAE;wBACtB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC,CAAC;wBAC1C,CAAC,CAAC,CAAC;oBACL,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACnC,CAAC;YAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAED,MAAM,oBAAoB,GACxB,sIAAsI,CAAC;AAEzI;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAIV;IACA;IACA;IALV,IAAI,GAAG,QAAQ,CAAC;IAEzB,YACmB,GAAS,EACT,aAA8B,EAC9B,YAAqB;QAFrB,QAAG,GAAH,GAAG,CAAM;QACT,kBAAa,GAAb,aAAa,CAAiB;QAC9B,iBAAY,GAAZ,YAAY,CAAS;IACrC,CAAC;IAEJ,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,OAAqB;QAErB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC7B;gBACE;oBACE,IAAI,EAAE,QAAiB;oBACvB,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,oBAAoB;iBACnD;gBACD,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,IAAI,EAAE;aACzC,EACD,EAAE,EACF,OAAO,CACR,CAAC;YACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;oBAC5B,SAAS,EAAE,gBAAgB;oBAC3B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS;oBAClC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,gBAAgB,EAAE,GAAG,CAAC,EAAE;wBACtB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC,CAAC;wBAC1C,CAAC,CAAC,CAAC;oBACL,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACnC,CAAC;YAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAED,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;wGAckE,CAAC;AAEzG;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;IAIN;IACA;IACA;IALV,IAAI,GAAG,QAAQ,CAAC;IAEzB,YACmB,GAAS,EACT,aAA8B,EAC9B,YAAqB;QAFrB,QAAG,GAAH,GAAG,CAAM;QACT,kBAAa,GAAb,aAAa,CAAiB;QAC9B,iBAAY,GAAZ,YAAY,CAAS;IACrC,CAAC;IAEJ,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,OAAqB;QAErB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC7B;gBACE;oBACE,IAAI,EAAE,QAAiB;oBACvB,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,6BAA6B;iBAC5D;gBACD,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,IAAI,EAAE;aACzC,EACD,EAAE,EACF,OAAO,CACR,CAAC;YACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;oBAC5B,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS;oBAClC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,gBAAgB,EAAE,GAAG,CAAC,EAAE;wBACtB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC,CAAC;wBAC1C,CAAC,CAAC,CAAC;oBACL,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACnC,CAAC;YAED,uEAAuE;YACvE,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,GAAG,IAAI,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;aACtD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAGC;IAFpB,IAAI,CAAS;IAEtB,YAA6B,aAAmC;QAAnC,kBAAa,GAAb,aAAa,CAAsB;QAC9D,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,OAAqB;QAErB,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAC;YAC9B,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { RagMetadata } from '../interfaces/types.js';
|
|
2
|
+
import type { InvertedIndex } from './inverted-index.js';
|
|
3
|
+
export interface ISearchCandidate {
|
|
4
|
+
text: string;
|
|
5
|
+
vector: number[];
|
|
6
|
+
metadata: RagMetadata;
|
|
7
|
+
}
|
|
8
|
+
export interface ISearchQuery {
|
|
9
|
+
text: string;
|
|
10
|
+
vector: number[];
|
|
11
|
+
}
|
|
12
|
+
export interface IScoredResult {
|
|
13
|
+
text: string;
|
|
14
|
+
metadata: RagMetadata;
|
|
15
|
+
score: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ISearchContext {
|
|
18
|
+
index: InvertedIndex;
|
|
19
|
+
tokenize: (s: string) => string[];
|
|
20
|
+
}
|
|
21
|
+
export interface ISearchStrategy {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
score(query: ISearchQuery, candidates: ISearchCandidate[], context: ISearchContext): IScoredResult[];
|
|
24
|
+
}
|
|
25
|
+
export declare class WeightedFusionStrategy implements ISearchStrategy {
|
|
26
|
+
readonly name = "weighted-fusion";
|
|
27
|
+
private readonly vectorWeight;
|
|
28
|
+
private readonly keywordWeight;
|
|
29
|
+
constructor(config?: {
|
|
30
|
+
vectorWeight?: number;
|
|
31
|
+
keywordWeight?: number;
|
|
32
|
+
});
|
|
33
|
+
score(query: ISearchQuery, candidates: ISearchCandidate[], context: ISearchContext): IScoredResult[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Reciprocal Rank Fusion: combines vector and BM25 rankings using
|
|
37
|
+
* `score(doc) = 1/(k + rank_vector) + 1/(k + rank_bm25)`.
|
|
38
|
+
*
|
|
39
|
+
* RRF is rank-based — it doesn't depend on raw score magnitudes,
|
|
40
|
+
* which makes it more stable than weighted sum when vector and BM25
|
|
41
|
+
* score distributions differ.
|
|
42
|
+
*/
|
|
43
|
+
export declare class RrfStrategy implements ISearchStrategy {
|
|
44
|
+
readonly name = "rrf";
|
|
45
|
+
private readonly k;
|
|
46
|
+
constructor(config?: {
|
|
47
|
+
k?: number;
|
|
48
|
+
});
|
|
49
|
+
score(query: ISearchQuery, candidates: ISearchCandidate[], context: ISearchContext): IScoredResult[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Pure vector cosine similarity. No keyword component.
|
|
53
|
+
* Useful as a baseline or when BM25 tokenization doesn't match the domain.
|
|
54
|
+
*/
|
|
55
|
+
export declare class VectorOnlyStrategy implements ISearchStrategy {
|
|
56
|
+
readonly name = "vector-only";
|
|
57
|
+
score(query: ISearchQuery, candidates: ISearchCandidate[], _context: ISearchContext): IScoredResult[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Pure BM25 lexical scoring. No vector component.
|
|
61
|
+
* Useful when embedder is unavailable or for exact-match-heavy domains.
|
|
62
|
+
*/
|
|
63
|
+
export declare class Bm25OnlyStrategy implements ISearchStrategy {
|
|
64
|
+
readonly name = "bm25-only";
|
|
65
|
+
score(query: ISearchQuery, candidates: ISearchCandidate[], context: ISearchContext): IScoredResult[];
|
|
66
|
+
}
|
|
67
|
+
export interface CompositeStrategyEntry {
|
|
68
|
+
strategy: ISearchStrategy;
|
|
69
|
+
weight: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Combines multiple strategies via weighted Reciprocal Rank Fusion.
|
|
73
|
+
*
|
|
74
|
+
* Each child strategy scores all candidates independently.
|
|
75
|
+
* Results are merged using: `score(doc) = Σ weight_i / (k + rank_i)`
|
|
76
|
+
*
|
|
77
|
+
* All child strategies run synchronously on the same candidates —
|
|
78
|
+
* no I/O, pure CPU, single event-loop tick.
|
|
79
|
+
*/
|
|
80
|
+
export declare class CompositeStrategy implements ISearchStrategy {
|
|
81
|
+
readonly name: string;
|
|
82
|
+
private readonly entries;
|
|
83
|
+
private readonly k;
|
|
84
|
+
constructor(entries: CompositeStrategyEntry[], config?: {
|
|
85
|
+
k?: number;
|
|
86
|
+
});
|
|
87
|
+
score(query: ISearchQuery, candidates: ISearchCandidate[], context: ISearchContext): IScoredResult[];
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=search-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-strategy.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/rag/search-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,CACH,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,OAAO,EAAE,cAAc,GACtB,aAAa,EAAE,CAAC;CACpB;AA8CD,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,IAAI,qBAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;IAKtE,KAAK,CACH,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,OAAO,EAAE,cAAc,GACtB,aAAa,EAAE;CAYnB;AAMD;;;;;;;GAOG;AACH,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,SAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAS;gBAEf,MAAM,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAInC,KAAK,CACH,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,OAAO,EAAE,cAAc,GACtB,aAAa,EAAE;CAoCnB;AAMD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,QAAQ,CAAC,IAAI,iBAAiB;IAE9B,KAAK,CACH,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,QAAQ,EAAE,cAAc,GACvB,aAAa,EAAE;CASnB;AAMD;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IACtD,QAAQ,CAAC,IAAI,eAAe;IAE5B,KAAK,CACH,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,OAAO,EAAE,cAAc,GACtB,aAAa,EAAE;CAUnB;AAMD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAS;gBAEf,OAAO,EAAE,sBAAsB,EAAE,EAAE,MAAM,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAMtE,KAAK,CACH,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,OAAO,EAAE,cAAc,GACtB,aAAa,EAAE;CA0CnB"}
|