@seanhogg/builderforce-memory 2026.10.28 → 2026.10.29
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/ingest/IngestionPipeline.d.ts +1 -8
- package/dist/ingest/IngestionPipeline.d.ts.map +1 -1
- package/dist/ingest/IngestionPipeline.js +3 -15
- package/dist/ingest/IngestionPipeline.js.map +1 -1
- package/dist/ingest/docsExtract.d.ts +30 -0
- package/dist/ingest/docsExtract.d.ts.map +1 -0
- package/dist/ingest/docsExtract.js +221 -0
- package/dist/ingest/docsExtract.js.map +1 -0
- package/dist/ingest/hash.d.ts +15 -0
- package/dist/ingest/hash.d.ts.map +1 -0
- package/dist/ingest/hash.js +22 -0
- package/dist/ingest/hash.js.map +1 -0
- package/dist/ingest/parsers.d.ts.map +1 -1
- package/dist/ingest/parsers.js +4 -0
- package/dist/ingest/parsers.js.map +1 -1
- package/dist/ingest/types.d.ts +7 -0
- package/dist/ingest/types.d.ts.map +1 -1
- package/dist/ingest/types.js.map +1 -1
- package/dist/knowledge/build.d.ts +24 -0
- package/dist/knowledge/build.d.ts.map +1 -0
- package/dist/knowledge/build.js +263 -0
- package/dist/knowledge/build.js.map +1 -0
- package/dist/knowledge/cards.d.ts +17 -0
- package/dist/knowledge/cards.d.ts.map +1 -0
- package/dist/knowledge/cards.js +118 -0
- package/dist/knowledge/cards.js.map +1 -0
- package/dist/knowledge/findings.d.ts +24 -0
- package/dist/knowledge/findings.d.ts.map +1 -0
- package/dist/knowledge/findings.js +152 -0
- package/dist/knowledge/findings.js.map +1 -0
- package/dist/knowledge/importance.d.ts +21 -0
- package/dist/knowledge/importance.d.ts.map +1 -0
- package/dist/knowledge/importance.js +70 -0
- package/dist/knowledge/importance.js.map +1 -0
- package/dist/knowledge/index.d.ts +31 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +26 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/judge.d.ts +86 -0
- package/dist/knowledge/judge.d.ts.map +1 -0
- package/dist/knowledge/judge.js +213 -0
- package/dist/knowledge/judge.js.map +1 -0
- package/dist/knowledge/model.d.ts +333 -0
- package/dist/knowledge/model.d.ts.map +1 -0
- package/dist/knowledge/model.js +13 -0
- package/dist/knowledge/model.js.map +1 -0
- package/dist/knowledge/packs/docs.d.ts +17 -0
- package/dist/knowledge/packs/docs.d.ts.map +1 -0
- package/dist/knowledge/packs/docs.js +89 -0
- package/dist/knowledge/packs/docs.js.map +1 -0
- package/dist/knowledge/partitions.d.ts +31 -0
- package/dist/knowledge/partitions.d.ts.map +1 -0
- package/dist/knowledge/partitions.js +135 -0
- package/dist/knowledge/partitions.js.map +1 -0
- package/dist/knowledge/plan.d.ts +33 -0
- package/dist/knowledge/plan.d.ts.map +1 -0
- package/dist/knowledge/plan.js +89 -0
- package/dist/knowledge/plan.js.map +1 -0
- package/dist/knowledge/refs.d.ts +40 -0
- package/dist/knowledge/refs.d.ts.map +1 -0
- package/dist/knowledge/refs.js +102 -0
- package/dist/knowledge/refs.js.map +1 -0
- package/dist/knowledge/resolve.d.ts +35 -0
- package/dist/knowledge/resolve.d.ts.map +1 -0
- package/dist/knowledge/resolve.js +67 -0
- package/dist/knowledge/resolve.js.map +1 -0
- package/dist/knowledge/review.d.ts +23 -0
- package/dist/knowledge/review.d.ts.map +1 -0
- package/dist/knowledge/review.js +233 -0
- package/dist/knowledge/review.js.map +1 -0
- package/dist/knowledge/sources.d.ts +47 -0
- package/dist/knowledge/sources.d.ts.map +1 -0
- package/dist/knowledge/sources.js +136 -0
- package/dist/knowledge/sources.js.map +1 -0
- package/dist/knowledge/stores/localSnapshotStore.d.ts +50 -0
- package/dist/knowledge/stores/localSnapshotStore.d.ts.map +1 -0
- package/dist/knowledge/stores/localSnapshotStore.js +125 -0
- package/dist/knowledge/stores/localSnapshotStore.js.map +1 -0
- package/dist/knowledge/trace.d.ts +32 -0
- package/dist/knowledge/trace.d.ts.map +1 -0
- package/dist/knowledge/trace.js +102 -0
- package/dist/knowledge/trace.js.map +1 -0
- package/dist/knowledge/truncate.d.ts +24 -0
- package/dist/knowledge/truncate.d.ts.map +1 -0
- package/dist/knowledge/truncate.js +128 -0
- package/dist/knowledge/truncate.js.map +1 -0
- package/dist/memory/SemanticRecall.d.ts.map +1 -1
- package/dist/memory/SemanticRecall.js +3 -1
- package/dist/memory/SemanticRecall.js.map +1 -1
- package/dist/retrieval/HybridRetriever.d.ts.map +1 -1
- package/dist/retrieval/HybridRetriever.js +3 -1
- package/dist/retrieval/HybridRetriever.js.map +1 -1
- package/dist/retrieval/bm25.d.ts +3 -2
- package/dist/retrieval/bm25.d.ts.map +1 -1
- package/dist/retrieval/bm25.js +5 -3
- package/dist/retrieval/bm25.js.map +1 -1
- package/dist/retrieval/fusion.d.ts +2 -1
- package/dist/retrieval/fusion.d.ts.map +1 -1
- package/dist/retrieval/fusion.js +4 -2
- package/dist/retrieval/fusion.js.map +1 -1
- package/dist/retrieval/hnsw.d.ts +49 -11
- package/dist/retrieval/hnsw.d.ts.map +1 -1
- package/dist/retrieval/hnsw.js +57 -29
- package/dist/retrieval/hnsw.js.map +1 -1
- package/dist/retrieval/index.d.ts +7 -3
- package/dist/retrieval/index.d.ts.map +1 -1
- package/dist/retrieval/index.js +5 -2
- package/dist/retrieval/index.js.map +1 -1
- package/dist/retrieval/knowledge-index/bytes.d.ts +43 -0
- package/dist/retrieval/knowledge-index/bytes.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/bytes.js +151 -0
- package/dist/retrieval/knowledge-index/bytes.js.map +1 -0
- package/dist/retrieval/knowledge-index/cascade.d.ts +37 -0
- package/dist/retrieval/knowledge-index/cascade.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/cascade.js +111 -0
- package/dist/retrieval/knowledge-index/cascade.js.map +1 -0
- package/dist/retrieval/knowledge-index/compact.d.ts +18 -0
- package/dist/retrieval/knowledge-index/compact.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/compact.js +64 -0
- package/dist/retrieval/knowledge-index/compact.js.map +1 -0
- package/dist/retrieval/knowledge-index/csr.d.ts +41 -0
- package/dist/retrieval/knowledge-index/csr.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/csr.js +76 -0
- package/dist/retrieval/knowledge-index/csr.js.map +1 -0
- package/dist/retrieval/knowledge-index/digest.d.ts +21 -0
- package/dist/retrieval/knowledge-index/digest.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/digest.js +50 -0
- package/dist/retrieval/knowledge-index/digest.js.map +1 -0
- package/dist/retrieval/knowledge-index/embeddings.d.ts +32 -0
- package/dist/retrieval/knowledge-index/embeddings.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/embeddings.js +78 -0
- package/dist/retrieval/knowledge-index/embeddings.js.map +1 -0
- package/dist/retrieval/knowledge-index/expand.d.ts +19 -0
- package/dist/retrieval/knowledge-index/expand.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/expand.js +49 -0
- package/dist/retrieval/knowledge-index/expand.js.map +1 -0
- package/dist/retrieval/knowledge-index/index.d.ts +40 -0
- package/dist/retrieval/knowledge-index/index.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/index.js +134 -0
- package/dist/retrieval/knowledge-index/index.js.map +1 -0
- package/dist/retrieval/knowledge-index/lexical.d.ts +26 -0
- package/dist/retrieval/knowledge-index/lexical.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/lexical.js +76 -0
- package/dist/retrieval/knowledge-index/lexical.js.map +1 -0
- package/dist/retrieval/knowledge-index/pairs.d.ts +22 -0
- package/dist/retrieval/knowledge-index/pairs.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/pairs.js +51 -0
- package/dist/retrieval/knowledge-index/pairs.js.map +1 -0
- package/dist/retrieval/knowledge-index/prune.d.ts +21 -0
- package/dist/retrieval/knowledge-index/prune.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/prune.js +43 -0
- package/dist/retrieval/knowledge-index/prune.js.map +1 -0
- package/dist/retrieval/knowledge-index/quantize.d.ts +37 -0
- package/dist/retrieval/knowledge-index/quantize.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/quantize.js +77 -0
- package/dist/retrieval/knowledge-index/quantize.js.map +1 -0
- package/dist/retrieval/knowledge-index/serialize.d.ts +18 -0
- package/dist/retrieval/knowledge-index/serialize.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/serialize.js +123 -0
- package/dist/retrieval/knowledge-index/serialize.js.map +1 -0
- package/dist/retrieval/knowledge-index/sha256.d.ts +30 -0
- package/dist/retrieval/knowledge-index/sha256.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/sha256.js +130 -0
- package/dist/retrieval/knowledge-index/sha256.js.map +1 -0
- package/dist/retrieval/knowledge-index/state.d.ts +55 -0
- package/dist/retrieval/knowledge-index/state.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/state.js +67 -0
- package/dist/retrieval/knowledge-index/state.js.map +1 -0
- package/dist/retrieval/knowledge-index/tokenize.d.ts +20 -0
- package/dist/retrieval/knowledge-index/tokenize.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/tokenize.js +42 -0
- package/dist/retrieval/knowledge-index/tokenize.js.map +1 -0
- package/dist/retrieval/knowledge-index/traverse.d.ts +26 -0
- package/dist/retrieval/knowledge-index/traverse.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/traverse.js +90 -0
- package/dist/retrieval/knowledge-index/traverse.js.map +1 -0
- package/dist/retrieval/knowledge-index/types.d.ts +85 -0
- package/dist/retrieval/knowledge-index/types.d.ts.map +1 -0
- package/dist/retrieval/knowledge-index/types.js +9 -0
- package/dist/retrieval/knowledge-index/types.js.map +1 -0
- package/dist/retrieval/mmr.d.ts +11 -4
- package/dist/retrieval/mmr.d.ts.map +1 -1
- package/dist/retrieval/mmr.js +28 -8
- package/dist/retrieval/mmr.js.map +1 -1
- package/dist/retrieval/order.d.ts +41 -0
- package/dist/retrieval/order.d.ts.map +1 -0
- package/dist/retrieval/order.js +54 -0
- package/dist/retrieval/order.js.map +1 -0
- package/dist/retrieval/weightedFusion.d.ts +2 -1
- package/dist/retrieval/weightedFusion.d.ts.map +1 -1
- package/dist/retrieval/weightedFusion.js +7 -5
- package/dist/retrieval/weightedFusion.js.map +1 -1
- package/dist/vectorstore/MemoryVectorStore.d.ts.map +1 -1
- package/dist/vectorstore/MemoryVectorStore.js +2 -1
- package/dist/vectorstore/MemoryVectorStore.js.map +1 -1
- package/package.json +8 -3
- package/src/ingest/IngestionPipeline.ts +3 -15
- package/src/ingest/docsExtract.ts +219 -0
- package/src/ingest/hash.ts +22 -0
- package/src/ingest/parsers.ts +4 -0
- package/src/ingest/types.ts +7 -0
- package/src/knowledge/build.test.ts +150 -0
- package/src/knowledge/build.ts +266 -0
- package/src/knowledge/cards.ts +130 -0
- package/src/knowledge/docs.test.ts +118 -0
- package/src/knowledge/findings.ts +159 -0
- package/src/knowledge/importance.ts +72 -0
- package/src/knowledge/index.ts +53 -0
- package/src/knowledge/judge.ts +231 -0
- package/src/knowledge/model.ts +312 -0
- package/src/knowledge/packs/docs.ts +91 -0
- package/src/knowledge/partitions.test.ts +98 -0
- package/src/knowledge/partitions.ts +119 -0
- package/src/knowledge/plan.ts +115 -0
- package/src/knowledge/refs.ts +108 -0
- package/src/knowledge/resolve.ts +78 -0
- package/src/knowledge/review.test.ts +180 -0
- package/src/knowledge/review.ts +235 -0
- package/src/knowledge/sources.ts +146 -0
- package/src/knowledge/stores/localSnapshotStore.test.ts +82 -0
- package/src/knowledge/stores/localSnapshotStore.ts +159 -0
- package/src/knowledge/testkit.test-util.ts +92 -0
- package/src/knowledge/trace.test.ts +91 -0
- package/src/knowledge/trace.ts +111 -0
- package/src/knowledge/truncate.ts +118 -0
- package/src/memory/SemanticRecall.ts +3 -1
- package/src/retrieval/HybridRetriever.ts +3 -1
- package/src/retrieval/bm25.ts +5 -3
- package/src/retrieval/fusion.ts +5 -2
- package/src/retrieval/hnsw.ts +82 -35
- package/src/retrieval/index.ts +17 -3
- package/src/retrieval/knowledge-index/bytes.ts +166 -0
- package/src/retrieval/knowledge-index/cascade.ts +125 -0
- package/src/retrieval/knowledge-index/compact.ts +68 -0
- package/src/retrieval/knowledge-index/csr.ts +102 -0
- package/src/retrieval/knowledge-index/digest.ts +54 -0
- package/src/retrieval/knowledge-index/embeddings.ts +85 -0
- package/src/retrieval/knowledge-index/expand.ts +55 -0
- package/src/retrieval/knowledge-index/index.ts +162 -0
- package/src/retrieval/knowledge-index/lexical.ts +78 -0
- package/src/retrieval/knowledge-index/pairs.ts +57 -0
- package/src/retrieval/knowledge-index/prune.ts +48 -0
- package/src/retrieval/knowledge-index/quantize.ts +78 -0
- package/src/retrieval/knowledge-index/serialize.ts +124 -0
- package/src/retrieval/knowledge-index/sha256.ts +122 -0
- package/src/retrieval/knowledge-index/state.ts +108 -0
- package/src/retrieval/knowledge-index/tokenize.ts +41 -0
- package/src/retrieval/knowledge-index/traverse.ts +95 -0
- package/src/retrieval/knowledge-index/types.ts +78 -0
- package/src/retrieval/mmr.ts +35 -10
- package/src/retrieval/order.ts +68 -0
- package/src/retrieval/weightedFusion.ts +8 -5
- package/src/vectorstore/MemoryVectorStore.ts +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../../src/retrieval/knowledge-index/traverse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The knowledge index contract — a deterministic, LEANN-style index over knowledge-graph
|
|
3
|
+
* cards (design: Builderforce.ai/docs/design/deterministic-knowledge-index.md).
|
|
4
|
+
*
|
|
5
|
+
* Every result is a pure function of `(digest, query, opts)`: one total order
|
|
6
|
+
* (`compareHits`), an insertion-order-free graph, integer (int8) traversal similarity.
|
|
7
|
+
*/
|
|
8
|
+
/** One card. `id` is stable (a knowledge-graph NodeRef); `hash` defaults to a hash of `text`. */
|
|
9
|
+
export interface IndexDoc {
|
|
10
|
+
id: string;
|
|
11
|
+
text: string;
|
|
12
|
+
/** Exact-match keys (path, basename, symbol, heading slug, entity name) — case-folded on insert. */
|
|
13
|
+
keys?: string[];
|
|
14
|
+
hash?: string;
|
|
15
|
+
}
|
|
16
|
+
/** The embedder seam. Vectors from two fingerprints are never compared. */
|
|
17
|
+
export interface EmbedderPort {
|
|
18
|
+
/** model id + version + dims. */
|
|
19
|
+
fingerprint: string;
|
|
20
|
+
dims: number;
|
|
21
|
+
embed(texts: string[]): Promise<Float32Array[]>;
|
|
22
|
+
}
|
|
23
|
+
export type IndexTier = 'exact' | 'lexical' | 'dense';
|
|
24
|
+
export interface IndexHit {
|
|
25
|
+
id: string;
|
|
26
|
+
score: number;
|
|
27
|
+
tier: IndexTier;
|
|
28
|
+
}
|
|
29
|
+
/** Neighbours of a node, supplied by the knowledge graph for recall expansion. */
|
|
30
|
+
export interface GraphNeighbours {
|
|
31
|
+
neighbours(id: string, edgeKinds?: readonly string[]): ReadonlyArray<{
|
|
32
|
+
id: string;
|
|
33
|
+
kind: string;
|
|
34
|
+
weight: number;
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
export interface IndexParams {
|
|
38
|
+
/** HNSW max neighbours for hubs (non-hubs keep m/2 after pruning). Default 16. */
|
|
39
|
+
m: number;
|
|
40
|
+
efConstruction: number;
|
|
41
|
+
efSearch: number;
|
|
42
|
+
/** Share of nodes (by in-degree) that keep full degree. Default 0.02. */
|
|
43
|
+
hubShare: number;
|
|
44
|
+
/** Dense candidates = k * rerankFactor, recomputed in float and reranked. Default 4. */
|
|
45
|
+
rerankFactor: number;
|
|
46
|
+
/** Drop int8 codes of non-hub nodes and recompute on the search path. Default false. */
|
|
47
|
+
lean: boolean;
|
|
48
|
+
/** RRF constant. Default 60. */
|
|
49
|
+
rrfK: number;
|
|
50
|
+
}
|
|
51
|
+
export interface SimilarPair {
|
|
52
|
+
a: string;
|
|
53
|
+
b: string;
|
|
54
|
+
similarity: number;
|
|
55
|
+
}
|
|
56
|
+
export interface KnowledgeIndex {
|
|
57
|
+
/** Inserts or replaces; skips docs whose hash is unchanged. */
|
|
58
|
+
upsert(docs: IndexDoc[]): Promise<void>;
|
|
59
|
+
remove(ids: string[]): void;
|
|
60
|
+
/** Cascade: exact → lexical → dense (when an embedder of the stored fingerprint is present) → RRF → compareHits. */
|
|
61
|
+
search(q: string, opts?: {
|
|
62
|
+
k?: number;
|
|
63
|
+
tiers?: IndexTier[];
|
|
64
|
+
}): Promise<IndexHit[]>;
|
|
65
|
+
/** Adds graph neighbours (score × weight × 0.5 per hop), re-ordered by compareHits. */
|
|
66
|
+
expand(hits: IndexHit[], graph: GraphNeighbours, opts?: {
|
|
67
|
+
hops?: 1 | 2;
|
|
68
|
+
edgeKinds?: string[];
|
|
69
|
+
}): IndexHit[];
|
|
70
|
+
/** Deterministic near-duplicate pairs over int8 codes; `idPrefix` filters (e.g. `src:`). */
|
|
71
|
+
similarPairs(opts: {
|
|
72
|
+
minSimilarity: number;
|
|
73
|
+
maxPairs: number;
|
|
74
|
+
idPrefix?: string;
|
|
75
|
+
}): SimilarPair[];
|
|
76
|
+
/** Canonical rebuild (ids sorted) — the same doc set + fingerprint ⇒ the same bytes. */
|
|
77
|
+
compact(): Promise<void>;
|
|
78
|
+
/** sha-256 hex over the canonical state. */
|
|
79
|
+
digest(): string;
|
|
80
|
+
/** Tiers available right now (dense only with a matching embedder). */
|
|
81
|
+
tiers(): IndexTier[];
|
|
82
|
+
size(): number;
|
|
83
|
+
serialize(): Uint8Array;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/retrieval/knowledge-index/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iGAAiG;AACjG,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IACzB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC5B,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtH;AAED,MAAM,WAAW,WAAW;IACxB,kFAAkF;IAClF,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,IAAI,EAAE,OAAO,CAAC;IACd,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,+DAA+D;IAC/D,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,oHAAoH;IACpH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnF,uFAAuF;IACvF,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,QAAQ,EAAE,CAAC;IAC5G,4FAA4F;IAC5F,YAAY,CAAC,IAAI,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW,EAAE,CAAC;IAClG,wFAAwF;IACxF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,4CAA4C;IAC5C,MAAM,IAAI,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,IAAI,SAAS,EAAE,CAAC;IACrB,IAAI,IAAI,MAAM,CAAC;IACf,SAAS,IAAI,UAAU,CAAC;CAC3B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The knowledge index contract — a deterministic, LEANN-style index over knowledge-graph
|
|
3
|
+
* cards (design: Builderforce.ai/docs/design/deterministic-knowledge-index.md).
|
|
4
|
+
*
|
|
5
|
+
* Every result is a pure function of `(digest, query, opts)`: one total order
|
|
6
|
+
* (`compareHits`), an insertion-order-free graph, integer (int8) traversal similarity.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/retrieval/knowledge-index/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/dist/retrieval/mmr.d.ts
CHANGED
|
@@ -26,10 +26,17 @@ export interface MmrSelectOptions<T> {
|
|
|
26
26
|
/** Stop after this many picks. Default: every candidate. */
|
|
27
27
|
topK?: number;
|
|
28
28
|
/**
|
|
29
|
-
* Breaks an
|
|
30
|
-
*
|
|
29
|
+
* Breaks an MMR tie in favour of the higher value. Ties are judged on the MMR
|
|
30
|
+
* score quantized to {@link quantum}.
|
|
31
31
|
*/
|
|
32
32
|
tieScore?: (item: T) => number;
|
|
33
|
+
/**
|
|
34
|
+
* The candidate's id — the last tie-break, ascending. Without it the explicit
|
|
35
|
+
* id is the candidate's index in `items`, so the earlier candidate wins.
|
|
36
|
+
*/
|
|
37
|
+
idOf?: (item: T) => string;
|
|
38
|
+
/** Quantum the MMR score is compared at. Default 1e-4 (cosine noise). */
|
|
39
|
+
quantum?: number;
|
|
33
40
|
}
|
|
34
41
|
/** Greedy MMR selection. Returns the picked candidates in pick order. */
|
|
35
42
|
export declare function mmrSelect<T>(items: readonly T[], opts: MmrSelectOptions<T>): T[];
|
|
@@ -53,8 +60,8 @@ export interface TextMmrItem {
|
|
|
53
60
|
/**
|
|
54
61
|
* Text MMR. Reorders every item, judging diversity by Jaccard similarity of word
|
|
55
62
|
* tokens, and relevance by the item's `score` min-max normalised onto [0,1] (all
|
|
56
|
-
* equal → 1).
|
|
57
|
-
* [0,1]; at 1 this is a plain
|
|
63
|
+
* equal → 1). A tie goes to the higher raw score, then the lower id. `lambda` is
|
|
64
|
+
* clamped to [0,1]; at 1 this is a plain {@link compareHits} sort.
|
|
58
65
|
*/
|
|
59
66
|
export declare function textMaximalMarginalRelevance<T extends TextMmrItem>(items: readonly T[], lambda?: number): T[];
|
|
60
67
|
//# sourceMappingURL=mmr.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mmr.d.ts","sourceRoot":"","sources":["../../src/retrieval/mmr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"mmr.d.ts","sourceRoot":"","sources":["../../src/retrieval/mmr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IAC/B,2EAA2E;IAC3E,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B,oCAAoC;IACpC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;IACnC,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC3B,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CA2ChF;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,YAAY,EAAE,EAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,SAAM,GACb,MAAM,EAAE,CAQV;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,SAAM,GAAG,CAAC,EAAE,CAoB1G"}
|
package/dist/retrieval/mmr.js
CHANGED
|
@@ -17,14 +17,35 @@
|
|
|
17
17
|
* Pure and zero-dependency.
|
|
18
18
|
*/
|
|
19
19
|
import { cosineSimilarity, jaccardSimilarity, tokenize } from '../similarity/index.js';
|
|
20
|
+
import { compareHits, compareIds, quantizeScore, DENSE_SCORE_QUANTUM } from './order.js';
|
|
20
21
|
/** Greedy MMR selection. Returns the picked candidates in pick order. */
|
|
21
22
|
export function mmrSelect(items, opts) {
|
|
22
23
|
const lambda = opts.lambda ?? 0.7;
|
|
24
|
+
const quantum = opts.quantum ?? DENSE_SCORE_QUANTUM;
|
|
23
25
|
const limit = Math.min(opts.topK ?? items.length, items.length);
|
|
24
26
|
const remaining = [...items];
|
|
25
27
|
const relevance = new Map();
|
|
26
|
-
|
|
28
|
+
const position = new Map();
|
|
29
|
+
items.forEach((item, i) => {
|
|
27
30
|
relevance.set(item, opts.relevance(item));
|
|
31
|
+
if (!position.has(item))
|
|
32
|
+
position.set(item, i);
|
|
33
|
+
});
|
|
34
|
+
const idOf = (item) => (opts.idOf ? opts.idOf(item) : position.get(item));
|
|
35
|
+
// Higher quantized MMR score, then higher tieScore, then lower id.
|
|
36
|
+
const beats = (a, aScore, b, bScore) => {
|
|
37
|
+
const qa = quantizeScore(aScore, quantum);
|
|
38
|
+
const qb = quantizeScore(bScore, quantum);
|
|
39
|
+
if (qa !== qb)
|
|
40
|
+
return qa > qb;
|
|
41
|
+
if (opts.tieScore) {
|
|
42
|
+
const ta = opts.tieScore(a);
|
|
43
|
+
const tb = opts.tieScore(b);
|
|
44
|
+
if (ta !== tb)
|
|
45
|
+
return ta > tb;
|
|
46
|
+
}
|
|
47
|
+
return compareIds(idOf(a), idOf(b)) < 0;
|
|
48
|
+
};
|
|
28
49
|
const selected = [];
|
|
29
50
|
while (selected.length < limit && remaining.length > 0) {
|
|
30
51
|
let bestIdx = -1;
|
|
@@ -38,10 +59,7 @@ export function mmrSelect(items, opts) {
|
|
|
38
59
|
maxSimToSelected = sim;
|
|
39
60
|
}
|
|
40
61
|
const score = lambda * relevance.get(candidate) - (1 - lambda) * maxSimToSelected;
|
|
41
|
-
|
|
42
|
-
|| (score === bestScore && bestIdx >= 0 && opts.tieScore !== undefined
|
|
43
|
-
&& opts.tieScore(candidate) > opts.tieScore(remaining[bestIdx]));
|
|
44
|
-
if (wins) {
|
|
62
|
+
if (bestIdx < 0 || beats(candidate, score, remaining[bestIdx], bestScore)) {
|
|
45
63
|
bestScore = score;
|
|
46
64
|
bestIdx = i;
|
|
47
65
|
}
|
|
@@ -63,20 +81,21 @@ export function maximalMarginalRelevance(queryVec, candidates, topK, lambda = 0.
|
|
|
63
81
|
similarity: (a, b) => cosineSimilarity(a.vector, b.vector),
|
|
64
82
|
lambda,
|
|
65
83
|
topK,
|
|
84
|
+
idOf: (c) => c.id,
|
|
66
85
|
}).map((c) => c.id);
|
|
67
86
|
}
|
|
68
87
|
/**
|
|
69
88
|
* Text MMR. Reorders every item, judging diversity by Jaccard similarity of word
|
|
70
89
|
* tokens, and relevance by the item's `score` min-max normalised onto [0,1] (all
|
|
71
|
-
* equal → 1).
|
|
72
|
-
* [0,1]; at 1 this is a plain
|
|
90
|
+
* equal → 1). A tie goes to the higher raw score, then the lower id. `lambda` is
|
|
91
|
+
* clamped to [0,1]; at 1 this is a plain {@link compareHits} sort.
|
|
73
92
|
*/
|
|
74
93
|
export function textMaximalMarginalRelevance(items, lambda = 0.7) {
|
|
75
94
|
if (items.length <= 1)
|
|
76
95
|
return [...items];
|
|
77
96
|
const l = Math.max(0, Math.min(1, lambda));
|
|
78
97
|
if (l === 1)
|
|
79
|
-
return [...items].sort(
|
|
98
|
+
return [...items].sort(compareHits);
|
|
80
99
|
const tokens = new Map();
|
|
81
100
|
for (const item of items)
|
|
82
101
|
tokens.set(item.id, new Set(tokenize(item.content)));
|
|
@@ -89,6 +108,7 @@ export function textMaximalMarginalRelevance(items, lambda = 0.7) {
|
|
|
89
108
|
similarity: (a, b) => jaccardSimilarity(tokensOf(a), tokensOf(b)),
|
|
90
109
|
lambda: l,
|
|
91
110
|
tieScore: (item) => item.score,
|
|
111
|
+
idOf: (item) => item.id,
|
|
92
112
|
});
|
|
93
113
|
}
|
|
94
114
|
//# sourceMappingURL=mmr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mmr.js","sourceRoot":"","sources":["../../src/retrieval/mmr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"mmr.js","sourceRoot":"","sources":["../../src/retrieval/mmr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* order.ts — the ONE total order every ranker in this package returns.
|
|
3
|
+
*
|
|
4
|
+
* Score descending, then id ascending. Scores are quantized before they are
|
|
5
|
+
* compared, so float noise in the last bits (a CPU vs a WebGPU embedding, a
|
|
6
|
+
* different summation order) cannot flip a near-tie: two scores in the same
|
|
7
|
+
* quantum ARE tied, and the id decides. Without this, ties fell back to input
|
|
8
|
+
* order, and input order is not part of any index's state.
|
|
9
|
+
*
|
|
10
|
+
* Quanta: dense (cosine) scores to 1e-4, BM25 / RRF and other exact-arithmetic
|
|
11
|
+
* scores to 1e-6. Ids compare by UTF-16 code unit (`<`), never `localeCompare`,
|
|
12
|
+
* which depends on the host's ICU data.
|
|
13
|
+
*
|
|
14
|
+
* Pure and zero-dependency.
|
|
15
|
+
*/
|
|
16
|
+
/** Quantum for cosine / dot-product scores — absorbs cross-platform float noise. */
|
|
17
|
+
export declare const DENSE_SCORE_QUANTUM = 0.0001;
|
|
18
|
+
/** Quantum for BM25, RRF and other scores computed in exact-enough arithmetic. */
|
|
19
|
+
export declare const LEXICAL_SCORE_QUANTUM = 0.000001;
|
|
20
|
+
/** The quantized bucket of `score`. NaN sorts last; ±Infinity keep their place. */
|
|
21
|
+
export declare function quantizeScore(score: number, quantum?: number): number;
|
|
22
|
+
/** Ascending id order by code unit. Numeric ids (a doc index) compare numerically. */
|
|
23
|
+
export declare function compareIds(a: string | number, b: string | number): number;
|
|
24
|
+
/**
|
|
25
|
+
* The primitive behind {@link compareHits}, for callers whose items keep score and
|
|
26
|
+
* id apart (a node index → id lookup inside a graph walk) — no object per compare.
|
|
27
|
+
*/
|
|
28
|
+
export declare function compareScoreThenId(scoreA: number, idA: string | number, scoreB: number, idB: string | number, quantum?: number): number;
|
|
29
|
+
/** A ranked item: anything with an id and a score. */
|
|
30
|
+
export interface ScoredId {
|
|
31
|
+
id: string | number;
|
|
32
|
+
score: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Score descending (quantized), then id ascending. Usable directly as an
|
|
36
|
+
* `Array.prototype.sort` comparator (the quantum then defaults to 1e-6).
|
|
37
|
+
*/
|
|
38
|
+
export declare function compareHits(a: ScoredId, b: ScoredId, quantum?: number): number;
|
|
39
|
+
/** {@link compareHits} at the dense quantum (1e-4) — for cosine-scored lists. */
|
|
40
|
+
export declare function compareDenseHits(a: ScoredId, b: ScoredId): number;
|
|
41
|
+
//# sourceMappingURL=order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/retrieval/order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,oFAAoF;AACpF,eAAO,MAAM,mBAAmB,SAAO,CAAC;AACxC,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,WAAO,CAAC;AAE1C,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAA8B,GAAG,MAAM,CAI5F;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,OAAO,GAAE,MAA8B,GACxC,MAAM,CAKR;AAED,sDAAsD;AACtD,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAE,MAA8B,GAAG,MAAM,CAErG;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* order.ts — the ONE total order every ranker in this package returns.
|
|
3
|
+
*
|
|
4
|
+
* Score descending, then id ascending. Scores are quantized before they are
|
|
5
|
+
* compared, so float noise in the last bits (a CPU vs a WebGPU embedding, a
|
|
6
|
+
* different summation order) cannot flip a near-tie: two scores in the same
|
|
7
|
+
* quantum ARE tied, and the id decides. Without this, ties fell back to input
|
|
8
|
+
* order, and input order is not part of any index's state.
|
|
9
|
+
*
|
|
10
|
+
* Quanta: dense (cosine) scores to 1e-4, BM25 / RRF and other exact-arithmetic
|
|
11
|
+
* scores to 1e-6. Ids compare by UTF-16 code unit (`<`), never `localeCompare`,
|
|
12
|
+
* which depends on the host's ICU data.
|
|
13
|
+
*
|
|
14
|
+
* Pure and zero-dependency.
|
|
15
|
+
*/
|
|
16
|
+
/** Quantum for cosine / dot-product scores — absorbs cross-platform float noise. */
|
|
17
|
+
export const DENSE_SCORE_QUANTUM = 1e-4;
|
|
18
|
+
/** Quantum for BM25, RRF and other scores computed in exact-enough arithmetic. */
|
|
19
|
+
export const LEXICAL_SCORE_QUANTUM = 1e-6;
|
|
20
|
+
/** The quantized bucket of `score`. NaN sorts last; ±Infinity keep their place. */
|
|
21
|
+
export function quantizeScore(score, quantum = LEXICAL_SCORE_QUANTUM) {
|
|
22
|
+
if (Number.isNaN(score))
|
|
23
|
+
return -Infinity;
|
|
24
|
+
if (!Number.isFinite(score))
|
|
25
|
+
return score;
|
|
26
|
+
return Math.round(score / quantum);
|
|
27
|
+
}
|
|
28
|
+
/** Ascending id order by code unit. Numeric ids (a doc index) compare numerically. */
|
|
29
|
+
export function compareIds(a, b) {
|
|
30
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The primitive behind {@link compareHits}, for callers whose items keep score and
|
|
34
|
+
* id apart (a node index → id lookup inside a graph walk) — no object per compare.
|
|
35
|
+
*/
|
|
36
|
+
export function compareScoreThenId(scoreA, idA, scoreB, idB, quantum = LEXICAL_SCORE_QUANTUM) {
|
|
37
|
+
const qa = quantizeScore(scoreA, quantum);
|
|
38
|
+
const qb = quantizeScore(scoreB, quantum);
|
|
39
|
+
if (qa !== qb)
|
|
40
|
+
return qb > qa ? 1 : -1;
|
|
41
|
+
return compareIds(idA, idB);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Score descending (quantized), then id ascending. Usable directly as an
|
|
45
|
+
* `Array.prototype.sort` comparator (the quantum then defaults to 1e-6).
|
|
46
|
+
*/
|
|
47
|
+
export function compareHits(a, b, quantum = LEXICAL_SCORE_QUANTUM) {
|
|
48
|
+
return compareScoreThenId(a.score, a.id, b.score, b.id, quantum);
|
|
49
|
+
}
|
|
50
|
+
/** {@link compareHits} at the dense quantum (1e-4) — for cosine-scored lists. */
|
|
51
|
+
export function compareDenseHits(a, b) {
|
|
52
|
+
return compareScoreThenId(a.score, a.id, b.score, b.id, DENSE_SCORE_QUANTUM);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/retrieval/order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,kFAAkF;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,UAAkB,qBAAqB;IAChF,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,QAAQ,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,UAAU,CAAC,CAAkB,EAAE,CAAkB;IAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAC9B,MAAc,EACd,GAAoB,EACpB,MAAc,EACd,GAAoB,EACpB,UAAkB,qBAAqB;IAEvC,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAQD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAW,EAAE,CAAW,EAAE,UAAkB,qBAAqB;IACzF,OAAO,kBAAkB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,CAAW,EAAE,CAAW;IACrD,OAAO,kBAAkB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -46,7 +46,8 @@ export declare function hybridScore(scores: HybridArmScores, weights: HybridWeig
|
|
|
46
46
|
export declare function bm25RankToScore(rank: number): number;
|
|
47
47
|
/**
|
|
48
48
|
* Fuse two arms keyed by a caller-supplied id and return the candidates ordered
|
|
49
|
-
* best-first
|
|
49
|
+
* best-first: fused score (quantized at the dense quantum — the vector arm carries
|
|
50
|
+
* float noise) descending, then id ascending. `merge` builds the output row from the winning payload of each id;
|
|
50
51
|
* later duplicates of the same id keep the first payload seen (arm order decides).
|
|
51
52
|
*/
|
|
52
53
|
export declare function fuseHybridArms<TVector extends {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weightedFusion.d.ts","sourceRoot":"","sources":["../../src/retrieval/weightedFusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"weightedFusion.d.ts","sourceRoot":"","sources":["../../src/retrieval/weightedFusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,4DAA4D;AAC5D,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,2DAA2D;AAC3D,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAUhG;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAInF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACvG,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC;IACvB,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACpC,GAAG,IAAI,EAAE,CAkBT"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* Pure and zero-dependency.
|
|
15
15
|
*/
|
|
16
|
+
import { compareScoreThenId, DENSE_SCORE_QUANTUM } from './order.js';
|
|
16
17
|
/** Weight on the semantic arm when a caller states none. */
|
|
17
18
|
export const DEFAULT_HYBRID_VECTOR_WEIGHT = 0.7;
|
|
18
19
|
/** Weight on the lexical arm when a caller states none. */
|
|
@@ -53,7 +54,8 @@ export function bm25RankToScore(rank) {
|
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
56
|
* Fuse two arms keyed by a caller-supplied id and return the candidates ordered
|
|
56
|
-
* best-first
|
|
57
|
+
* best-first: fused score (quantized at the dense quantum — the vector arm carries
|
|
58
|
+
* float noise) descending, then id ascending. `merge` builds the output row from the winning payload of each id;
|
|
57
59
|
* later duplicates of the same id keep the first payload seen (arm order decides).
|
|
58
60
|
*/
|
|
59
61
|
export function fuseHybridArms(params) {
|
|
@@ -69,12 +71,12 @@ export function fuseHybridArms(params) {
|
|
|
69
71
|
else
|
|
70
72
|
byId.set(row.id, { row, scores: { vectorScore: 0, textScore: params.textScoreOf(row) } });
|
|
71
73
|
}
|
|
72
|
-
return [...byId.
|
|
73
|
-
.map((entry) => {
|
|
74
|
+
return [...byId.entries()]
|
|
75
|
+
.map(([id, entry]) => {
|
|
74
76
|
const score = hybridScore(entry.scores, weights);
|
|
75
|
-
return { out: params.merge(entry.row, score), score };
|
|
77
|
+
return { id, out: params.merge(entry.row, score), score };
|
|
76
78
|
})
|
|
77
|
-
.sort((a, b) =>
|
|
79
|
+
.sort((a, b) => compareScoreThenId(a.score, a.id, b.score, b.id, DENSE_SCORE_QUANTUM))
|
|
78
80
|
.map((entry) => entry.out);
|
|
79
81
|
}
|
|
80
82
|
//# sourceMappingURL=weightedFusion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weightedFusion.js","sourceRoot":"","sources":["../../src/retrieval/weightedFusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAO9C;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,YAAqB,EAAE,UAAmB;IAC7E,MAAM,KAAK,GAAG,CAAC,CAAqB,EAAE,QAAgB,EAAU,EAAE,CAC9D,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5E,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,4BAA4B,CAAC,CAAC;IAC5D,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAE,UAAU,EAAE,0BAA0B,EAAE,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,CAAC,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAC1D,CAAC;AAQD,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,MAAuB,EAAE,OAAsB;IACvE,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,WAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,SAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAChC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"weightedFusion.js","sourceRoot":"","sources":["../../src/retrieval/weightedFusion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryVectorStore.d.ts","sourceRoot":"","sources":["../../src/vectorstore/MemoryVectorStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryVectorStore.d.ts","sourceRoot":"","sources":["../../src/vectorstore/MemoryVectorStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAInE,OAAO,KAAK,EACR,WAAW,EACX,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,wBAAwB;IACrC,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,qBAAa,iBAAkB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,OAAO,CAAC,MAAM,CAAwB;IACtC,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;gBAErC,IAAI,GAAE,wBAA6B;IAQ/C,IAAI,IAAI,IAAI,MAAM,CAA+B;IAE3C,MAAM,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAuB/D,KAAK,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAStD,MAAM,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAW/C,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ5E,KAAK,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpE,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAoBvD;;;;OAIG;IACG,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAoB/D,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;CAOxB"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { bm25Search } from '../retrieval/bm25.js';
|
|
21
21
|
import { HnswIndex } from '../retrieval/hnsw.js';
|
|
22
|
+
import { compareScoreThenId, DENSE_SCORE_QUANTUM } from '../retrieval/order.js';
|
|
22
23
|
import { cosineSimilarity } from '../similarity/index.js';
|
|
23
24
|
import { combineFilters, matchesFilter } from './filter.js';
|
|
24
25
|
export class MemoryVectorStore {
|
|
@@ -145,7 +146,7 @@ export class MemoryVectorStore {
|
|
|
145
146
|
const exactScan = () => embedded
|
|
146
147
|
.filter((r) => matchesFilter(r.metadata, filter))
|
|
147
148
|
.map((r) => ({ record: r, score: cosineSimilarity(vector, r.vector) }))
|
|
148
|
-
.sort((a, b) =>
|
|
149
|
+
.sort((a, b) => compareScoreThenId(a.score, a.record.id, b.score, b.record.id, DENSE_SCORE_QUANTUM));
|
|
149
150
|
if (embedded.length < this._annThreshold)
|
|
150
151
|
return exactScan();
|
|
151
152
|
this._ensureIndex(embedded);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryVectorStore.js","sourceRoot":"","sources":["../../src/vectorstore/MemoryVectorStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MemoryVectorStore.js","sourceRoot":"","sources":["../../src/vectorstore/MemoryVectorStore.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seanhogg/builderforce-memory",
|
|
3
|
-
"version": "2026.10.
|
|
3
|
+
"version": "2026.10.29",
|
|
4
4
|
"description": "BuilderForce Agent Memory — runtime layer. SSM execution, Transformer orchestration, online distillation, enterprise RAG (ingestion pipelines, vector-store adapters, tenant/ACL-scoped hybrid retrieval), multi-agent graph orchestration, LLM telemetry and cost accounting, persistent agent memory, and token-saving agent-run memory (code maps, a prompt-cache-safe working memory, chunked transcript windowing) for BuilderForce.ai agents.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
"types": "./dist/retrieval/index.d.ts",
|
|
15
15
|
"import": "./dist/retrieval/index.js"
|
|
16
16
|
},
|
|
17
|
+
"./knowledge": {
|
|
18
|
+
"types": "./dist/knowledge/index.d.ts",
|
|
19
|
+
"import": "./dist/knowledge/index.js"
|
|
20
|
+
},
|
|
17
21
|
"./wire": {
|
|
18
22
|
"types": "./dist/wire/index.d.ts",
|
|
19
23
|
"import": "./dist/wire/index.js"
|
|
@@ -109,7 +113,7 @@
|
|
|
109
113
|
},
|
|
110
114
|
"homepage": "https://github.com/SeanHogg/builderforce-memory/tree/main/packages/memory#readme",
|
|
111
115
|
"peerDependencies": {
|
|
112
|
-
"@seanhogg/builderforce-memory-engine": "^2026.10.
|
|
116
|
+
"@seanhogg/builderforce-memory-engine": "^2026.10.29"
|
|
113
117
|
},
|
|
114
118
|
"devDependencies": {
|
|
115
119
|
"@jest/globals": "^29.7.0",
|
|
@@ -123,7 +127,7 @@
|
|
|
123
127
|
"ts-jest": "^29.2.0",
|
|
124
128
|
"typescript": "^6.0.3",
|
|
125
129
|
"@typescript/native-preview": "7.0.0-dev.20260627.2",
|
|
126
|
-
"@seanhogg/builderforce-memory-engine": "2026.10.
|
|
130
|
+
"@seanhogg/builderforce-memory-engine": "2026.10.29"
|
|
127
131
|
},
|
|
128
132
|
"jest": {
|
|
129
133
|
"preset": "ts-jest/presets/default-esm",
|
|
@@ -159,6 +163,7 @@
|
|
|
159
163
|
"src/**/*.ts",
|
|
160
164
|
"!src/**/index.ts",
|
|
161
165
|
"!src/**/*.test.ts",
|
|
166
|
+
"!src/**/*.test-util.ts",
|
|
162
167
|
"!src/session/**",
|
|
163
168
|
"!src/limbic/LimbicSession.ts"
|
|
164
169
|
],
|
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
type VectorRecord,
|
|
34
34
|
type VectorStore,
|
|
35
35
|
} from '../vectorstore/types.js';
|
|
36
|
+
import { hashText } from './hash.js';
|
|
36
37
|
import { ParserRegistry } from './parsers.js';
|
|
37
38
|
import {
|
|
38
39
|
CHUNK_INDEX_FIELD,
|
|
@@ -345,21 +346,8 @@ export class InMemoryIngestManifest implements IngestManifest {
|
|
|
345
346
|
get size(): number { return this._entries.size; }
|
|
346
347
|
}
|
|
347
348
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
*
|
|
351
|
-
* A content hash here answers "did this chunk change", not "was this chunk
|
|
352
|
-
* tampered with", so a fast non-cryptographic hash is the right tool — and it is
|
|
353
|
-
* synchronous, unlike WebCrypto, which keeps chunking a pure function.
|
|
354
|
-
*/
|
|
355
|
-
export function hashText(text: string): string {
|
|
356
|
-
let hash = 0x811c9dc5;
|
|
357
|
-
for (let i = 0; i < text.length; i++) {
|
|
358
|
-
hash ^= text.charCodeAt(i);
|
|
359
|
-
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
360
|
-
}
|
|
361
|
-
return hash.toString(16).padStart(8, '0');
|
|
362
|
-
}
|
|
349
|
+
// hashText moved to ./hash.ts (shared with the knowledge graph); re-exported for callers.
|
|
350
|
+
export { hashText } from './hash.js';
|
|
363
351
|
|
|
364
352
|
/** Bounded-concurrency map — the reason a large corpus does not become a 429. */
|
|
365
353
|
export async function mapWithConcurrency<T>(
|