@adonis-agora/agent 0.8.0 → 0.10.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/CHANGELOG.md +12 -0
- package/dist/src/agent-loop.d.ts.map +1 -1
- package/dist/src/agent-loop.js +17 -5
- package/dist/src/agent-loop.js.map +1 -1
- package/dist/src/ai-sdk/ai-sdk-model.d.ts +13 -2
- package/dist/src/ai-sdk/ai-sdk-model.d.ts.map +1 -1
- package/dist/src/ai-sdk/ai-sdk-model.js.map +1 -1
- package/dist/src/ai-sdk/attachment-fetch-downloader.d.ts +15 -0
- package/dist/src/ai-sdk/attachment-fetch-downloader.d.ts.map +1 -0
- package/dist/src/ai-sdk/attachment-fetch-downloader.js +28 -0
- package/dist/src/ai-sdk/attachment-fetch-downloader.js.map +1 -0
- package/dist/src/ai-sdk/index.d.ts +1 -0
- package/dist/src/ai-sdk/index.d.ts.map +1 -1
- package/dist/src/ai-sdk/index.js +1 -0
- package/dist/src/ai-sdk/index.js.map +1 -1
- package/dist/src/ai-tool-ref.d.ts +1 -1
- package/dist/src/ai-tool-ref.d.ts.map +1 -1
- package/dist/src/ai-tool-ref.js +4 -1
- package/dist/src/ai-tool-ref.js.map +1 -1
- package/dist/src/base-tool.d.ts +59 -0
- package/dist/src/base-tool.d.ts.map +1 -0
- package/dist/src/base-tool.js +52 -0
- package/dist/src/base-tool.js.map +1 -0
- package/dist/src/diagnostics.d.ts +44 -0
- package/dist/src/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics.js +124 -0
- package/dist/src/diagnostics.js.map +1 -1
- package/dist/src/durable/agent-run-workflow.d.ts +5 -1
- package/dist/src/durable/agent-run-workflow.d.ts.map +1 -1
- package/dist/src/durable/agent-run-workflow.js +5 -1
- package/dist/src/durable/agent-run-workflow.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/rag/filter.d.ts +11 -2
- package/dist/src/rag/filter.d.ts.map +1 -1
- package/dist/src/rag/filter.js +22 -4
- package/dist/src/rag/filter.js.map +1 -1
- package/dist/src/rag/hybrid-retriever.d.ts +23 -0
- package/dist/src/rag/hybrid-retriever.d.ts.map +1 -0
- package/dist/src/rag/hybrid-retriever.js +43 -0
- package/dist/src/rag/hybrid-retriever.js.map +1 -0
- package/dist/src/rag/index.d.ts +3 -0
- package/dist/src/rag/index.d.ts.map +1 -1
- package/dist/src/rag/index.js +3 -0
- package/dist/src/rag/index.js.map +1 -1
- package/dist/src/rag/keyword-retriever.d.ts +28 -0
- package/dist/src/rag/keyword-retriever.d.ts.map +1 -0
- package/dist/src/rag/keyword-retriever.js +91 -0
- package/dist/src/rag/keyword-retriever.js.map +1 -0
- package/dist/src/rag/pg-vector-store.d.ts +3 -2
- package/dist/src/rag/pg-vector-store.d.ts.map +1 -1
- package/dist/src/rag/pg-vector-store.js +56 -16
- package/dist/src/rag/pg-vector-store.js.map +1 -1
- package/dist/src/rag/reranking-retriever.d.ts +21 -0
- package/dist/src/rag/reranking-retriever.d.ts.map +1 -0
- package/dist/src/rag/reranking-retriever.js +25 -0
- package/dist/src/rag/reranking-retriever.js.map +1 -0
- package/dist/src/rag/vector-store.d.ts +5 -1
- package/dist/src/rag/vector-store.d.ts.map +1 -1
- package/dist/src/rag/vector-store.js.map +1 -1
- package/dist/src/runners/inline-agent-runner.d.ts.map +1 -1
- package/dist/src/runners/inline-agent-runner.js +8 -2
- package/dist/src/runners/inline-agent-runner.js.map +1 -1
- package/dist/src/spi/reranker.d.ts +4 -2
- package/dist/src/spi/reranker.d.ts.map +1 -1
- package/dist/src/spi/tool.d.ts +7 -3
- package/dist/src/spi/tool.d.ts.map +1 -1
- package/dist/src/testing/fake-embedding-provider.d.ts +6 -3
- package/dist/src/testing/fake-embedding-provider.d.ts.map +1 -1
- package/dist/src/testing/fake-embedding-provider.js +19 -4
- package/dist/src/testing/fake-embedding-provider.js.map +1 -1
- package/package.json +1 -1
package/dist/src/diagnostics.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* Events land on `agora:agent:<event>`; the payload shapes below are the contract every consumer
|
|
8
8
|
* (dashboard / telescope) reads.
|
|
9
9
|
*/
|
|
10
|
+
import diagnostics_channel from 'node:diagnostics_channel';
|
|
10
11
|
const EMIT_SLOT = Symbol.for('@agora/diagnostics:emit');
|
|
11
12
|
/**
|
|
12
13
|
* Publish an agent event on `agora:agent:<event>` via the structural diagnostics slot. No-op when
|
|
@@ -47,4 +48,127 @@ export function publishAgentRetrieved(payload) {
|
|
|
47
48
|
export function publishAgentToolRetry(payload) {
|
|
48
49
|
publishAgent('tool.retry', payload);
|
|
49
50
|
}
|
|
51
|
+
// ── Run-tracing spans ─────────────────────────────────────────────────────────
|
|
52
|
+
//
|
|
53
|
+
// Point events above tell you WHAT happened; spans tell you the SHAPE of a turn — a start/end pair
|
|
54
|
+
// per genuinely-executed operation, all correlated by `traceId = runId`, so telescope renders one
|
|
55
|
+
// turn as a waterfall. Spans ride the SAME `agora:agent:*` convention as the point events, but on the
|
|
56
|
+
// five span sub-channels `agora:agent:<event>:<phase>` (start / end / asyncStart / asyncEnd / error) —
|
|
57
|
+
// byte-for-byte the wire shape `@adonis-agora/diagnostics`' own `trace()` publishes, so a span-aware
|
|
58
|
+
// bridge reads agent spans with ZERO agent→diagnostics coupling.
|
|
59
|
+
//
|
|
60
|
+
// We publish them directly over Node's builtin `node:diagnostics_channel` (a Node builtin — no
|
|
61
|
+
// diagnostics import, no emit slot needed), exactly as the media-ingestion subscribe path does. Cost
|
|
62
|
+
// is a handful of `hasSubscribers` reads when nothing is listening.
|
|
63
|
+
//
|
|
64
|
+
// REPLAY SAFETY: `spannedAgent` MUST be called from INSIDE a `hooks.step` body (→ `ctx.localStep`).
|
|
65
|
+
// Durable replay skips step bodies and returns the checkpoint, so a replayed run never re-emits a
|
|
66
|
+
// span. The root `turn` span (which spans the whole loop) is therefore a RUNNER concern: the inline
|
|
67
|
+
// runner emits it once around the loop; the durable runner does not emit a body-level root (it would
|
|
68
|
+
// re-emit per replay slice) and relies on the `traceId = runId` grouping to root the trace.
|
|
69
|
+
/** Span envelope schema version — matches `@adonis-agora/diagnostics`' `SPAN_SCHEMA_VERSION`. */
|
|
70
|
+
const SPAN_SCHEMA_VERSION = 1;
|
|
71
|
+
const SPAN_CHANNEL_PREFIX = 'agora';
|
|
72
|
+
const SPAN_LIB = 'agent';
|
|
73
|
+
/** Per-event memo of the resolved span channels — the steady state is a single `Map.get`. */
|
|
74
|
+
const spanChannelCache = new Map();
|
|
75
|
+
function getSpanChannels(event) {
|
|
76
|
+
const cached = spanChannelCache.get(event);
|
|
77
|
+
if (cached !== undefined) {
|
|
78
|
+
return cached;
|
|
79
|
+
}
|
|
80
|
+
const base = `${SPAN_CHANNEL_PREFIX}:${SPAN_LIB}:${event}`;
|
|
81
|
+
const channels = {
|
|
82
|
+
start: diagnostics_channel.channel(`${base}:start`),
|
|
83
|
+
end: diagnostics_channel.channel(`${base}:end`),
|
|
84
|
+
asyncStart: diagnostics_channel.channel(`${base}:asyncStart`),
|
|
85
|
+
asyncEnd: diagnostics_channel.channel(`${base}:asyncEnd`),
|
|
86
|
+
error: diagnostics_channel.channel(`${base}:error`),
|
|
87
|
+
};
|
|
88
|
+
spanChannelCache.set(event, channels);
|
|
89
|
+
return channels;
|
|
90
|
+
}
|
|
91
|
+
/** True when ANY of the five span sub-channels currently has a subscriber. */
|
|
92
|
+
function anySpanSubscribed(channels) {
|
|
93
|
+
return (channels.start.hasSubscribers ||
|
|
94
|
+
channels.end.hasSubscribers ||
|
|
95
|
+
channels.asyncStart.hasSubscribers ||
|
|
96
|
+
channels.asyncEnd.hasSubscribers ||
|
|
97
|
+
channels.error.hasSubscribers);
|
|
98
|
+
}
|
|
99
|
+
let spanCounter = 0;
|
|
100
|
+
/** A cheap, process-unique span id. Allocated only when a span is actually observed. */
|
|
101
|
+
function nextSpanId() {
|
|
102
|
+
spanCounter = (spanCounter + 1) >>> 0;
|
|
103
|
+
return `${Date.now().toString(36)}-${spanCounter.toString(36)}`;
|
|
104
|
+
}
|
|
105
|
+
/** Publish one phase on its sub-channel; never throws back into the agent loop. */
|
|
106
|
+
function publishSpanPhase(channel, phase, event, spanId, traceId, extra) {
|
|
107
|
+
if (!channel.hasSubscribers) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
channel.publish({
|
|
112
|
+
v: SPAN_SCHEMA_VERSION,
|
|
113
|
+
ts: Date.now(),
|
|
114
|
+
lib: SPAN_LIB,
|
|
115
|
+
event,
|
|
116
|
+
phase,
|
|
117
|
+
spanId,
|
|
118
|
+
traceId,
|
|
119
|
+
...extra,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Observability must never break the traced code path.
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Wrap a genuinely-executing async operation in an `agora:agent:<event>` span correlated to its run
|
|
128
|
+
* by `traceId = runId`, WITHOUT letting the operation's raw return value ride the span envelope: only
|
|
129
|
+
* the (redaction-safe) `summarize`d metadata is published as the span `result`, while the real value
|
|
130
|
+
* is handed straight back to the caller. Zero-cost when no span sub-channel has a subscriber (runs
|
|
131
|
+
* `run()` directly). Never throws from the span machinery — only `run()`'s own rejection propagates.
|
|
132
|
+
*
|
|
133
|
+
* Mirrors the async lifecycle of `@adonis-agora/diagnostics`' `trace()`: `start` → `end` (sync
|
|
134
|
+
* portion) → `asyncStart` → `asyncEnd` (with the summary) on success, or `error` on rejection.
|
|
135
|
+
*
|
|
136
|
+
* MUST be called from inside a `hooks.step` body (→ `ctx.localStep`) so durable replay — which skips
|
|
137
|
+
* step bodies — never re-emits the span. See the module header.
|
|
138
|
+
*/
|
|
139
|
+
export async function spannedAgent(event, traceId, payload, run, summarize) {
|
|
140
|
+
const channels = getSpanChannels(event);
|
|
141
|
+
if (!anySpanSubscribed(channels)) {
|
|
142
|
+
return run();
|
|
143
|
+
}
|
|
144
|
+
const spanId = nextSpanId();
|
|
145
|
+
const startedAt = performance.now();
|
|
146
|
+
publishSpanPhase(channels.start, 'start', event, spanId, traceId, { payload });
|
|
147
|
+
publishSpanPhase(channels.end, 'end', event, spanId, traceId, {
|
|
148
|
+
durationMs: performance.now() - startedAt,
|
|
149
|
+
});
|
|
150
|
+
publishSpanPhase(channels.asyncStart, 'asyncStart', event, spanId, traceId, {});
|
|
151
|
+
try {
|
|
152
|
+
const value = await run();
|
|
153
|
+
let result;
|
|
154
|
+
try {
|
|
155
|
+
result = summarize(value);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
result = undefined;
|
|
159
|
+
}
|
|
160
|
+
publishSpanPhase(channels.asyncEnd, 'asyncEnd', event, spanId, traceId, {
|
|
161
|
+
...(result !== undefined ? { result } : {}),
|
|
162
|
+
durationMs: performance.now() - startedAt,
|
|
163
|
+
});
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
publishSpanPhase(channels.error, 'error', event, spanId, traceId, {
|
|
168
|
+
error,
|
|
169
|
+
durationMs: performance.now() - startedAt,
|
|
170
|
+
});
|
|
171
|
+
throw error;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
50
174
|
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AA0ExD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAQ,EACR,OAAmC;IAEnC,MAAM,IAAI,GAAI,UAAsC,CAAC,SAAS,CAAuB,CAAC;IACtF,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAwB;IAC7D,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,OAA0B;IAC5D,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,OAA2B;IAC9D,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,UAAU,yBAAyB,CAAC,OAA2B;IACnE,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AACD,MAAM,UAAU,uBAAuB,CAAC,OAAyB;IAC/D,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,11 @@ export interface DurableAgentRunInput extends AgentRunInput {
|
|
|
19
19
|
* suspend-and-resume:
|
|
20
20
|
* - `step(name, fn)` → `ctx.localStep` — every LLM turn, tool execution, and persist/quota write is a
|
|
21
21
|
* checkpoint, so a replay returns the cached result instead of re-running it (stable ids, no
|
|
22
|
-
* double-write, no re-streamed tokens).
|
|
22
|
+
* double-write, no re-streamed tokens). The run-tracing SPANS (`agora:agent:llm.turn` /
|
|
23
|
+
* `tool.execution` / `retrieval`) are emitted from INSIDE these step bodies, so a replay — which
|
|
24
|
+
* skips the bodies — never re-emits them. Unlike the inline runner, the durable workflow does NOT
|
|
25
|
+
* emit a body-level root `turn` span (the body replays, which would duplicate it); the trace is
|
|
26
|
+
* rooted implicitly by `traceId = runId`, which every child span already carries.
|
|
23
27
|
* - `awaitApproval(call)` → `ctx.waitForSignal('tool:<runId>:<callId>')` — an action tool suspends the
|
|
24
28
|
* run with zero compute until an approve/reject signal arrives (namespaced by run, so one run's
|
|
25
29
|
* decision can never satisfy another's).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run-workflow.d.ts","sourceRoot":"","sources":["../../../src/durable/agent-run-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,KAAK,WAAW,EAEjB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAG3D;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+BD
|
|
1
|
+
{"version":3,"file":"agent-run-workflow.d.ts","sourceRoot":"","sources":["../../../src/durable/agent-run-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,KAAK,WAAW,EAEjB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAG3D;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAgB,QAAQ;;;MAA6C;IAE/D,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAuEpF"}
|
|
@@ -35,7 +35,11 @@ function childSinkWriter(inner) {
|
|
|
35
35
|
* suspend-and-resume:
|
|
36
36
|
* - `step(name, fn)` → `ctx.localStep` — every LLM turn, tool execution, and persist/quota write is a
|
|
37
37
|
* checkpoint, so a replay returns the cached result instead of re-running it (stable ids, no
|
|
38
|
-
* double-write, no re-streamed tokens).
|
|
38
|
+
* double-write, no re-streamed tokens). The run-tracing SPANS (`agora:agent:llm.turn` /
|
|
39
|
+
* `tool.execution` / `retrieval`) are emitted from INSIDE these step bodies, so a replay — which
|
|
40
|
+
* skips the bodies — never re-emits them. Unlike the inline runner, the durable workflow does NOT
|
|
41
|
+
* emit a body-level root `turn` span (the body replays, which would duplicate it); the trace is
|
|
42
|
+
* rooted implicitly by `traceId = runId`, which every child span already carries.
|
|
39
43
|
* - `awaitApproval(call)` → `ctx.waitForSignal('tool:<runId>:<callId>')` — an action tool suspends the
|
|
40
44
|
* run with zero compute until an approve/reject signal arrives (namespaced by run, so one run's
|
|
41
45
|
* decision can never satisfy another's).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run-workflow.js","sourceRoot":"","sources":["../../../src/durable/agent-run-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EAEb,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAuB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAgBhE;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,iBAAiB,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAI,KAAmC,EAAE,IAAI,CAAC;IACxD,OAAO,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,eAAe,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAiB;IACxC,OAAO;QACL,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,GAAG,EAAE,GAAG,EAAE;YACR,kCAAkC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"agent-run-workflow.js","sourceRoot":"","sources":["../../../src/durable/agent-run-workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.10.0";
|
|
2
2
|
export * from './types.js';
|
|
3
3
|
export * from './spi/tool.js';
|
|
4
|
+
export * from './base-tool.js';
|
|
4
5
|
export * from './spi/model-provider.js';
|
|
5
6
|
export * from './spi/token-stream-sink.js';
|
|
6
7
|
export * from './spi/agent-store.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export const VERSION = '0.
|
|
1
|
+
export const VERSION = '0.10.0';
|
|
2
2
|
export * from './types.js';
|
|
3
3
|
export * from './spi/tool.js';
|
|
4
|
+
export * from './base-tool.js';
|
|
4
5
|
export * from './spi/model-provider.js';
|
|
5
6
|
export * from './spi/token-stream-sink.js';
|
|
6
7
|
export * from './spi/agent-store.js';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/rag/filter.d.ts
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Metadata filter, shared by the in-memory {@link import('./memory-vector-store.js').MemoryVectorStore}
|
|
3
|
+
* (and any lexical retriever). Every key must match:
|
|
4
|
+
*
|
|
5
|
+
* - a **scalar** filter value keeps exact-match — the record's value must equal it;
|
|
6
|
+
* - an **array** filter value means **match-any** (OR / set membership) — the record matches when its
|
|
7
|
+
* value for that key is one of them, or (for a multi-valued record) shares at least one element.
|
|
8
|
+
* An empty array matches nothing (no value is a member of the empty set) — the deny primitive.
|
|
9
|
+
*
|
|
10
|
+
* Array-valued filters are how a caller expresses capability-style access control over a shared store
|
|
11
|
+
* (e.g. `{ audience: ['public', 'role:ADMIN', 'base:…'] }`) without the store knowing what a token means.
|
|
12
|
+
* Pure and dependency-free; backward compatible (scalar filters behave exactly as before).
|
|
4
13
|
*/
|
|
5
14
|
export declare function matchesFilter(metadata: Record<string, unknown> | undefined, filter: Record<string, unknown>): boolean;
|
|
6
15
|
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/rag/filter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/rag/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAcT"}
|
package/dist/src/rag/filter.js
CHANGED
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Metadata filter, shared by the in-memory {@link import('./memory-vector-store.js').MemoryVectorStore}
|
|
3
|
+
* (and any lexical retriever). Every key must match:
|
|
4
|
+
*
|
|
5
|
+
* - a **scalar** filter value keeps exact-match — the record's value must equal it;
|
|
6
|
+
* - an **array** filter value means **match-any** (OR / set membership) — the record matches when its
|
|
7
|
+
* value for that key is one of them, or (for a multi-valued record) shares at least one element.
|
|
8
|
+
* An empty array matches nothing (no value is a member of the empty set) — the deny primitive.
|
|
9
|
+
*
|
|
10
|
+
* Array-valued filters are how a caller expresses capability-style access control over a shared store
|
|
11
|
+
* (e.g. `{ audience: ['public', 'role:ADMIN', 'base:…'] }`) without the store knowing what a token means.
|
|
12
|
+
* Pure and dependency-free; backward compatible (scalar filters behave exactly as before).
|
|
4
13
|
*/
|
|
5
14
|
export function matchesFilter(metadata, filter) {
|
|
15
|
+
const entries = Object.entries(filter);
|
|
6
16
|
if (metadata === undefined) {
|
|
7
|
-
return
|
|
17
|
+
return entries.length === 0;
|
|
8
18
|
}
|
|
9
|
-
return
|
|
19
|
+
return entries.every(([key, expected]) => {
|
|
20
|
+
if (Array.isArray(expected)) {
|
|
21
|
+
const actual = metadata[key];
|
|
22
|
+
return Array.isArray(actual)
|
|
23
|
+
? actual.some((value) => expected.includes(value))
|
|
24
|
+
: expected.includes(actual);
|
|
25
|
+
}
|
|
26
|
+
return metadata[key] === expected;
|
|
27
|
+
});
|
|
10
28
|
}
|
|
11
29
|
//# sourceMappingURL=filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/rag/filter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/rag/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAC3B,QAA6C,EAC7C,MAA+B;IAE/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Passage, RetrieveOptions, Retriever } from '../spi/retriever.js';
|
|
2
|
+
export interface HybridRetrieverOptions {
|
|
3
|
+
/** RRF constant — larger flattens the rank weighting. Default 60 (the value from the original paper). */
|
|
4
|
+
k?: number;
|
|
5
|
+
/** Candidates pulled from each retriever before fusion. Default 20. */
|
|
6
|
+
fetchTopK?: number;
|
|
7
|
+
/** Per-retriever multipliers on each RRF contribution (same order as `retrievers`). Default all 1. */
|
|
8
|
+
weights?: number[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Fuses several retrievers with Reciprocal Rank Fusion — the robust way to combine, say, dense vector
|
|
12
|
+
* search with lexical BM25. RRF scores each passage by `Σ weight / (k + rank)` across the lists it
|
|
13
|
+
* appears in, so it needs no score normalization between incompatible scales (cosine vs BM25).
|
|
14
|
+
* Deduplicates by passage id, so aligned chunk ids from the two retrievers reinforce. Itself a
|
|
15
|
+
* {@link Retriever}. Mirrors the reference `HybridRetriever` exactly.
|
|
16
|
+
*/
|
|
17
|
+
export declare class HybridRetriever implements Retriever {
|
|
18
|
+
private readonly retrievers;
|
|
19
|
+
private readonly options;
|
|
20
|
+
constructor(retrievers: Retriever[], options?: HybridRetrieverOptions);
|
|
21
|
+
retrieve(query: string, options?: RetrieveOptions): Promise<Passage[]>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=hybrid-retriever.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybrid-retriever.d.ts","sourceRoot":"","sources":["../../../src/rag/hybrid-retriever.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,yGAAyG;IACzG,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sGAAsG;IACtG,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAE7C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,GAAE,sBAA2B;IAGjD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAgCjF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fuses several retrievers with Reciprocal Rank Fusion — the robust way to combine, say, dense vector
|
|
3
|
+
* search with lexical BM25. RRF scores each passage by `Σ weight / (k + rank)` across the lists it
|
|
4
|
+
* appears in, so it needs no score normalization between incompatible scales (cosine vs BM25).
|
|
5
|
+
* Deduplicates by passage id, so aligned chunk ids from the two retrievers reinforce. Itself a
|
|
6
|
+
* {@link Retriever}. Mirrors the reference `HybridRetriever` exactly.
|
|
7
|
+
*/
|
|
8
|
+
export class HybridRetriever {
|
|
9
|
+
retrievers;
|
|
10
|
+
options;
|
|
11
|
+
constructor(retrievers, options = {}) {
|
|
12
|
+
this.retrievers = retrievers;
|
|
13
|
+
this.options = options;
|
|
14
|
+
}
|
|
15
|
+
async retrieve(query, options = {}) {
|
|
16
|
+
const k = this.options.k ?? 60;
|
|
17
|
+
const fetchTopK = this.options.fetchTopK ?? 20;
|
|
18
|
+
const weights = this.options.weights;
|
|
19
|
+
const lists = await Promise.all(this.retrievers.map((retriever) => retriever.retrieve(query, {
|
|
20
|
+
topK: fetchTopK,
|
|
21
|
+
...(options.filter !== undefined ? { filter: options.filter } : {}),
|
|
22
|
+
})));
|
|
23
|
+
const fused = new Map();
|
|
24
|
+
lists.forEach((list, listIndex) => {
|
|
25
|
+
const weight = weights?.[listIndex] ?? 1;
|
|
26
|
+
list.forEach((passage, rank) => {
|
|
27
|
+
const contribution = weight / (k + rank + 1);
|
|
28
|
+
const existing = fused.get(passage.id);
|
|
29
|
+
if (existing !== undefined) {
|
|
30
|
+
existing.score += contribution;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
fused.set(passage.id, { passage, score: contribution });
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
return [...fused.values()]
|
|
38
|
+
.sort((a, b) => b.score - a.score)
|
|
39
|
+
.slice(0, options.topK ?? 5)
|
|
40
|
+
.map((entry) => ({ ...entry.passage, score: entry.score }));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=hybrid-retriever.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybrid-retriever.js","sourceRoot":"","sources":["../../../src/rag/hybrid-retriever.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IAEP;IACA;IAFnB,YACmB,UAAuB,EACvB,UAAkC,EAAE;QADpC,eAAU,GAAV,UAAU,CAAa;QACvB,YAAO,GAAP,OAAO,CAA6B;IACpD,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,UAA2B,EAAE;QACzD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAChC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE;YACxB,IAAI,EAAE,SAAS;YACf,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE,CAAC,CACH,CACF,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+C,CAAC;QACrE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBAC7B,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;aACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;CACF"}
|
package/dist/src/rag/index.d.ts
CHANGED
|
@@ -3,6 +3,9 @@ export { documentIdOf, type IndexedDocument, type VectorRecord, type VectorSearc
|
|
|
3
3
|
export { matchesFilter } from './filter.js';
|
|
4
4
|
export { MemoryVectorStore, cosineSimilarity } from './memory-vector-store.js';
|
|
5
5
|
export { EmbeddingRetriever } from './embedding-retriever.js';
|
|
6
|
+
export { RerankingRetriever, type RerankingRetrieverOptions, } from './reranking-retriever.js';
|
|
7
|
+
export { KeywordRetriever, type KeywordRetrieverOptions } from './keyword-retriever.js';
|
|
8
|
+
export { HybridRetriever, type HybridRetrieverOptions } from './hybrid-retriever.js';
|
|
6
9
|
export { PgVectorStore, PgVectorRetriever, toVectorLiteral, type PgVectorMetric, type PgVectorColumns, type PgVectorStoreOptions, } from './pg-vector-store.js';
|
|
7
10
|
export { chunkDocuments, ingestChunks, ingestDocuments, type ChunkRecord, type IngestChunksOptions, type IngestDocument, type IngestOptions, } from './ingest.js';
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC"}
|
package/dist/src/rag/index.js
CHANGED
|
@@ -3,6 +3,9 @@ export { documentIdOf, } from './vector-store.js';
|
|
|
3
3
|
export { matchesFilter } from './filter.js';
|
|
4
4
|
export { MemoryVectorStore, cosineSimilarity } from './memory-vector-store.js';
|
|
5
5
|
export { EmbeddingRetriever } from './embedding-retriever.js';
|
|
6
|
+
export { RerankingRetriever, } from './reranking-retriever.js';
|
|
7
|
+
export { KeywordRetriever } from './keyword-retriever.js';
|
|
8
|
+
export { HybridRetriever } from './hybrid-retriever.js';
|
|
6
9
|
export { PgVectorStore, PgVectorRetriever, toVectorLiteral, } from './pg-vector-store.js';
|
|
7
10
|
export { chunkDocuments, ingestChunks, ingestDocuments, } from './ingest.js';
|
|
8
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAC;AAC1D,OAAO,EACL,YAAY,GAKb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,GAIhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,GAKhB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAC;AAC1D,OAAO,EACL,YAAY,GAKb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,kBAAkB,GAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAgC,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,eAAe,EAA+B,MAAM,uBAAuB,CAAC;AACrF,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,GAIhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,GAKhB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Passage, RetrieveOptions, Retriever } from '../spi/retriever.js';
|
|
2
|
+
import type { ChunkRecord } from './ingest.js';
|
|
3
|
+
export interface KeywordRetrieverOptions {
|
|
4
|
+
/** BM25 term-frequency saturation. Default 1.5. */
|
|
5
|
+
k1?: number;
|
|
6
|
+
/** BM25 length normalization, 0 (off) … 1 (full). Default 0.75. */
|
|
7
|
+
b?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* An in-memory BM25 lexical retriever — the keyword half of hybrid search. Feed it the SAME
|
|
11
|
+
* {@link ChunkRecord}s you upsert into the vector store (from `chunkDocuments`) so their chunk ids
|
|
12
|
+
* line up and {@link import('./hybrid-retriever.js').HybridRetriever} can fuse the two rankings. Full
|
|
13
|
+
* BM25: idf, term-frequency saturation (`k1`), and document-length normalization (`b`). Honors the
|
|
14
|
+
* same array-OR metadata {@link matchesFilter} as the vector store. Mirrors the reference exactly.
|
|
15
|
+
*/
|
|
16
|
+
export declare class KeywordRetriever implements Retriever {
|
|
17
|
+
private readonly docs;
|
|
18
|
+
private readonly documentFrequency;
|
|
19
|
+
private totalLength;
|
|
20
|
+
private readonly k1;
|
|
21
|
+
private readonly b;
|
|
22
|
+
constructor(options?: KeywordRetrieverOptions);
|
|
23
|
+
/** Index (or re-index) records. Re-adding an existing id replaces its posting and updates stats. */
|
|
24
|
+
add(records: ChunkRecord[]): void;
|
|
25
|
+
private remove;
|
|
26
|
+
retrieve(query: string, options?: RetrieveOptions): Promise<Passage[]>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=keyword-retriever.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyword-retriever.d.ts","sourceRoot":"","sources":["../../../src/rag/keyword-retriever.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,uBAAuB;IACtC,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AASD;;;;;;GAMG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAC/D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAS;gBAEf,OAAO,GAAE,uBAA4B;IAKjD,oGAAoG;IACpG,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAgBjC,OAAO,CAAC,MAAM;IAiBR,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAoCjF"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { matchesFilter } from './filter.js';
|
|
2
|
+
/**
|
|
3
|
+
* An in-memory BM25 lexical retriever — the keyword half of hybrid search. Feed it the SAME
|
|
4
|
+
* {@link ChunkRecord}s you upsert into the vector store (from `chunkDocuments`) so their chunk ids
|
|
5
|
+
* line up and {@link import('./hybrid-retriever.js').HybridRetriever} can fuse the two rankings. Full
|
|
6
|
+
* BM25: idf, term-frequency saturation (`k1`), and document-length normalization (`b`). Honors the
|
|
7
|
+
* same array-OR metadata {@link matchesFilter} as the vector store. Mirrors the reference exactly.
|
|
8
|
+
*/
|
|
9
|
+
export class KeywordRetriever {
|
|
10
|
+
docs = new Map();
|
|
11
|
+
documentFrequency = new Map();
|
|
12
|
+
totalLength = 0;
|
|
13
|
+
k1;
|
|
14
|
+
b;
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
this.k1 = options.k1 ?? 1.5;
|
|
17
|
+
this.b = options.b ?? 0.75;
|
|
18
|
+
}
|
|
19
|
+
/** Index (or re-index) records. Re-adding an existing id replaces its posting and updates stats. */
|
|
20
|
+
add(records) {
|
|
21
|
+
for (const record of records) {
|
|
22
|
+
this.remove(record.id);
|
|
23
|
+
const tokens = tokenize(record.text);
|
|
24
|
+
const frequencies = new Map();
|
|
25
|
+
for (const token of tokens) {
|
|
26
|
+
frequencies.set(token, (frequencies.get(token) ?? 0) + 1);
|
|
27
|
+
}
|
|
28
|
+
for (const term of frequencies.keys()) {
|
|
29
|
+
this.documentFrequency.set(term, (this.documentFrequency.get(term) ?? 0) + 1);
|
|
30
|
+
}
|
|
31
|
+
this.docs.set(record.id, { record, frequencies, length: tokens.length });
|
|
32
|
+
this.totalLength += tokens.length;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
remove(id) {
|
|
36
|
+
const existing = this.docs.get(id);
|
|
37
|
+
if (existing === undefined) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
for (const term of existing.frequencies.keys()) {
|
|
41
|
+
const next = (this.documentFrequency.get(term) ?? 1) - 1;
|
|
42
|
+
if (next <= 0) {
|
|
43
|
+
this.documentFrequency.delete(term);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.documentFrequency.set(term, next);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
this.totalLength -= existing.length;
|
|
50
|
+
this.docs.delete(id);
|
|
51
|
+
}
|
|
52
|
+
async retrieve(query, options = {}) {
|
|
53
|
+
const total = this.docs.size;
|
|
54
|
+
if (total === 0) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
const averageLength = this.totalLength / total;
|
|
58
|
+
const queryTerms = new Set(tokenize(query));
|
|
59
|
+
const scored = [];
|
|
60
|
+
for (const { record, frequencies, length } of this.docs.values()) {
|
|
61
|
+
if (options.filter !== undefined && !matchesFilter(record.metadata, options.filter)) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
let score = 0;
|
|
65
|
+
for (const term of queryTerms) {
|
|
66
|
+
const termFrequency = frequencies.get(term);
|
|
67
|
+
if (termFrequency === undefined) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const df = this.documentFrequency.get(term) ?? 0;
|
|
71
|
+
const idf = Math.log(1 + (total - df + 0.5) / (df + 0.5));
|
|
72
|
+
const denominator = termFrequency + this.k1 * (1 - this.b + (this.b * length) / averageLength);
|
|
73
|
+
score += idf * ((termFrequency * (this.k1 + 1)) / denominator);
|
|
74
|
+
}
|
|
75
|
+
if (score > 0) {
|
|
76
|
+
scored.push({
|
|
77
|
+
id: record.id,
|
|
78
|
+
text: record.text,
|
|
79
|
+
score,
|
|
80
|
+
...(record.source !== undefined ? { source: record.source } : {}),
|
|
81
|
+
...(record.metadata !== undefined ? { metadata: record.metadata } : {}),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return scored.sort((a, b) => b.score - a.score).slice(0, options.topK ?? 5);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function tokenize(text) {
|
|
89
|
+
return text.toLowerCase().match(/[a-z0-9]+/g) ?? [];
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=keyword-retriever.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyword-retriever.js","sourceRoot":"","sources":["../../../src/rag/keyword-retriever.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,8 +45,9 @@ export declare function toVectorLiteral(embedding: number[]): string;
|
|
|
45
45
|
* {@link LucidDatabaseLike} (so `@adonisjs/lucid` stays an optional peer — this file imports no Lucid
|
|
46
46
|
* types) with raw SQL for the pgvector operators. Similarity ranks via the `<=>`/`<->`/`<#>` operator for
|
|
47
47
|
* the configured {@link PgVectorMetric}; the query embedding is always a `?::vector` positional binding
|
|
48
|
-
* (NEVER string-interpolated)
|
|
49
|
-
*
|
|
48
|
+
* (NEVER string-interpolated). Scalar metadata filters are an `@> ?::jsonb` containment binding; an
|
|
49
|
+
* array filter value is set-membership (`jsonb_exists_any`, the `?|` function form) — the capability-token
|
|
50
|
+
* ACL primitive. Only the (validated) table/column identifiers are ever spliced into a statement.
|
|
50
51
|
*
|
|
51
52
|
* Usually you don't construct this directly: `config/agent.ts` selects it via `retrievers.pgvector({...})`
|
|
52
53
|
* and the provider builds it, lazily importing `@adonisjs/lucid` only when the pgvector retriever is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-vector-store.d.ts","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAsDD,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3D;
|
|
1
|
+
{"version":3,"file":"pg-vector-store.d.ts","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAsDD,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3D;AAyFD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAc,YAAW,WAAW;IAQ7C,OAAO,CAAC,QAAQ,CAAC,EAAE;IAPrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA4B;gBAG7B,EAAE,EAAE,iBAAiB,EACtC,OAAO,GAAE,oBAAyB;IAgBpC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC,uGAAuG;IACvG,gBAAgB,IAAI,MAAM,EAAE;IAgBtB,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9C,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAoB3E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CA6BpF;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB;gBAE3C,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa;CAG9D"}
|