@adonis-agora/agent 0.35.0 → 0.37.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 +23 -0
- package/NOTICE +31 -0
- package/README.md +5 -5
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +1 -0
- package/dist/configure.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/rag/index.d.ts +3 -1
- package/dist/src/rag/index.d.ts.map +1 -1
- package/dist/src/rag/index.js +3 -1
- package/dist/src/rag/index.js.map +1 -1
- package/dist/src/rag/lexical-query.d.ts +28 -0
- package/dist/src/rag/lexical-query.d.ts.map +1 -0
- package/dist/src/rag/lexical-query.js +90 -0
- package/dist/src/rag/lexical-query.js.map +1 -0
- package/dist/src/rag/openai-embeddings.d.ts +20 -2
- package/dist/src/rag/openai-embeddings.d.ts.map +1 -1
- package/dist/src/rag/openai-embeddings.js +107 -42
- package/dist/src/rag/openai-embeddings.js.map +1 -1
- package/dist/src/rag/pg-vector-store.d.ts +56 -7
- package/dist/src/rag/pg-vector-store.d.ts.map +1 -1
- package/dist/src/rag/pg-vector-store.js +65 -17
- package/dist/src/rag/pg-vector-store.js.map +1 -1
- package/dist/src/rag/tree/build.d.ts +96 -0
- package/dist/src/rag/tree/build.d.ts.map +1 -0
- package/dist/src/rag/tree/build.js +659 -0
- package/dist/src/rag/tree/build.js.map +1 -0
- package/dist/src/rag/tree/headings.d.ts +29 -0
- package/dist/src/rag/tree/headings.d.ts.map +1 -0
- package/dist/src/rag/tree/headings.js +227 -0
- package/dist/src/rag/tree/headings.js.map +1 -0
- package/dist/src/rag/tree/index-document.d.ts +33 -0
- package/dist/src/rag/tree/index-document.d.ts.map +1 -0
- package/dist/src/rag/tree/index-document.js +36 -0
- package/dist/src/rag/tree/index-document.js.map +1 -0
- package/dist/src/rag/tree/index.d.ts +13 -0
- package/dist/src/rag/tree/index.d.ts.map +1 -0
- package/dist/src/rag/tree/index.js +12 -0
- package/dist/src/rag/tree/index.js.map +1 -0
- package/dist/src/rag/tree/keyword-tree-llm.d.ts +15 -0
- package/dist/src/rag/tree/keyword-tree-llm.d.ts.map +1 -0
- package/dist/src/rag/tree/keyword-tree-llm.js +105 -0
- package/dist/src/rag/tree/keyword-tree-llm.js.map +1 -0
- package/dist/src/rag/tree/llm.d.ts +179 -0
- package/dist/src/rag/tree/llm.d.ts.map +1 -0
- package/dist/src/rag/tree/llm.js +264 -0
- package/dist/src/rag/tree/llm.js.map +1 -0
- package/dist/src/rag/tree/navigate-tool.d.ts +58 -0
- package/dist/src/rag/tree/navigate-tool.d.ts.map +1 -0
- package/dist/src/rag/tree/navigate-tool.js +95 -0
- package/dist/src/rag/tree/navigate-tool.js.map +1 -0
- package/dist/src/rag/tree/navigate.d.ts +137 -0
- package/dist/src/rag/tree/navigate.d.ts.map +1 -0
- package/dist/src/rag/tree/navigate.js +404 -0
- package/dist/src/rag/tree/navigate.js.map +1 -0
- package/dist/src/rag/tree/pg-tree-store.d.ts +45 -0
- package/dist/src/rag/tree/pg-tree-store.d.ts.map +1 -0
- package/dist/src/rag/tree/pg-tree-store.js +205 -0
- package/dist/src/rag/tree/pg-tree-store.js.map +1 -0
- package/dist/src/rag/tree/store.d.ts +57 -0
- package/dist/src/rag/tree/store.d.ts.map +1 -0
- package/dist/src/rag/tree/store.js +66 -0
- package/dist/src/rag/tree/store.js.map +1 -0
- package/dist/src/rag/tree/two-stage.d.ts +54 -0
- package/dist/src/rag/tree/two-stage.d.ts.map +1 -0
- package/dist/src/rag/tree/two-stage.js +92 -0
- package/dist/src/rag/tree/two-stage.js.map +1 -0
- package/dist/src/rag/tree/types.d.ts +135 -0
- package/dist/src/rag/tree/types.d.ts.map +1 -0
- package/dist/src/rag/tree/types.js +21 -0
- package/dist/src/rag/tree/types.js.map +1 -0
- package/dist/stubs/database/migrations/create_agent_rag_trees.stub +40 -0
- package/package.json +3 -2
|
@@ -94,6 +94,33 @@ export declare function toVectorLiteral(embedding: number[]): string;
|
|
|
94
94
|
* `CreateDataProperty` under the hood, which always creates a real own property, `__proto__` included.
|
|
95
95
|
*/
|
|
96
96
|
export declare function stripNulBytes<T>(value: T): T;
|
|
97
|
+
/**
|
|
98
|
+
* Build the metadata `WHERE` fragment for a filter, using Lucid/Knex positional `?` bindings (never
|
|
99
|
+
* string interpolation). Two predicate kinds:
|
|
100
|
+
*
|
|
101
|
+
* - **scalar** filter values collapse into a single jsonb-containment check (`metadata @> ?::jsonb`) —
|
|
102
|
+
* exact-match, byte-for-byte the previous behavior so scalar filters stay backward compatible.
|
|
103
|
+
* - an **array** filter value is a **match-any** (OR / set membership) check: the record matches when
|
|
104
|
+
* its value for that key — scalar or array — shares an element with the filter array. An empty array
|
|
105
|
+
* can never match (the `false` deny primitive).
|
|
106
|
+
*
|
|
107
|
+
* Set membership uses `jsonb_exists_any(jsonb, text[])` — the function form of the `?|` operator, chosen
|
|
108
|
+
* because bare `?|` collides with Knex's `?` binding placeholder. The metadata KEY is itself a `?`
|
|
109
|
+
* binding (`metadata->?`), so a caller-supplied key can never inject SQL; only the (already validated)
|
|
110
|
+
* table/column identifiers are ever spliced in. Returns `{ sql: '', bindings: [] }` when there is no
|
|
111
|
+
* filter, preserving the previous unfiltered query shape.
|
|
112
|
+
*
|
|
113
|
+
* Every binding built here — the key, the scalar containment JSON, each array token — is run through
|
|
114
|
+
* {@link stripNulBytes} first, the same as every write path: a filter key or value can carry a NUL byte
|
|
115
|
+
* just as easily as stored text can, Postgres rejects it here exactly as it would on a write, and
|
|
116
|
+
* stripping it here keeps a filter lookup consistent with the already-stripped data it is matched against.
|
|
117
|
+
*/
|
|
118
|
+
export declare function buildMetadataWhere(filter: Record<string, unknown> | undefined, metadataColumn: string): {
|
|
119
|
+
sql: string;
|
|
120
|
+
bindings: unknown[];
|
|
121
|
+
};
|
|
122
|
+
/** Normalize whatever a Lucid `rawQuery` returns (PG `{rows}`, SQLite array, MySQL `[rows,fields]`). */
|
|
123
|
+
export declare function normalizeRows(raw: unknown): Record<string, unknown>[];
|
|
97
124
|
/**
|
|
98
125
|
* A pgvector-backed {@link VectorStore} — the production RAG adapter, the durable twin of
|
|
99
126
|
* {@link import('./memory-vector-store.js').MemoryVectorStore}. It runs over the structural
|
|
@@ -214,11 +241,21 @@ export interface PgFullTextOptions {
|
|
|
214
241
|
*/
|
|
215
242
|
column?: string;
|
|
216
243
|
/**
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
244
|
+
* Search natural-language questions by their meaningful terms (default `true`): the question's
|
|
245
|
+
* stop words are dropped (see {@link PgFullTextOptions.stopWords}) and rows holding any remaining
|
|
246
|
+
* term (at most 24) are ranked by the sum of the matched terms' IDF among those rows (BM25 without
|
|
247
|
+
* term frequencies), `ts_rank_cd` breaking ties; a question with explicit search syntax (a quoted
|
|
248
|
+
* phrase, `-word`) is first tried as written. `false`: only `websearch_to_tsquery` on the query as
|
|
249
|
+
* written (every word must appear).
|
|
220
250
|
*/
|
|
221
251
|
anyTermFallback?: boolean;
|
|
252
|
+
/**
|
|
253
|
+
* Stop word lists dropped from questions, by language; only the list(s) with the most words in the
|
|
254
|
+
* question apply, so a word that is a stop word in another language stays a term. Default
|
|
255
|
+
* {@link DEFAULT_STOP_WORDS} (English, Portuguese, Spanish: Postgres' Snowball lists). `false` keeps
|
|
256
|
+
* every word. With a language `config` (`english`) Postgres drops that language's stop words too.
|
|
257
|
+
*/
|
|
258
|
+
stopWords?: Readonly<Record<string, ReadonlySet<string>>> | false;
|
|
222
259
|
}
|
|
223
260
|
/**
|
|
224
261
|
* {@link PgVectorStore} plus Postgres full-text search: a {@link LexicalVectorStore}, so a
|
|
@@ -226,8 +263,10 @@ export interface PgFullTextOptions {
|
|
|
226
263
|
* {@link import('./hybrid-retriever.js').HybridRetriever} can fuse the dense and lexical legs over the
|
|
227
264
|
* same rows and ids. `retrievers.pgvector({ fullText: {} })` wires exactly that.
|
|
228
265
|
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
266
|
+
* A question is searched by its meaningful terms: its stop words dropped, rows holding any remaining
|
|
267
|
+
* term ranked by IDF-weighted coverage, `ts_rank_cd` (cover density) breaking ties (see
|
|
268
|
+
* {@link PgFullTextOptions.anyTermFallback}); explicit syntax (quoted phrases, `-exclusions`) goes
|
|
269
|
+
* through `websearch_to_tsquery` first.
|
|
231
270
|
*
|
|
232
271
|
* A separate class rather than a method on {@link PgVectorStore} on purpose: full-text search needs a
|
|
233
272
|
* GIN index, which on a populated table belongs in a migration you run and watch (`CREATE INDEX` in
|
|
@@ -238,16 +277,26 @@ export declare class PgLexicalVectorStore extends PgVectorStore implements Lexic
|
|
|
238
277
|
private readonly tsConfig;
|
|
239
278
|
private readonly tsColumn;
|
|
240
279
|
private readonly anyTermFallback;
|
|
280
|
+
private readonly stopWords;
|
|
241
281
|
constructor(db: LucidRawRunner, options?: PgVectorStoreOptions & {
|
|
242
282
|
fullText?: PgFullTextOptions;
|
|
243
283
|
});
|
|
244
284
|
schemaStatements(): string[];
|
|
245
285
|
/**
|
|
246
|
-
* Full-text search over the chunk text. `score` is
|
|
247
|
-
* the vector leg's scale — so `minScore` is deliberately not applied here.
|
|
286
|
+
* Full-text search over the chunk text. `score` is an IDF / `ts_rank_cd` rank — not a similarity,
|
|
287
|
+
* and not on the vector leg's scale — so `minScore` is deliberately not applied here.
|
|
248
288
|
*/
|
|
249
289
|
searchText(query: string, options: VectorSearchOptions): Promise<Passage[]>;
|
|
290
|
+
/** `websearch_to_tsquery` on the query as written: every word, quoted phrases, `-exclusions`. */
|
|
250
291
|
private runTextSearch;
|
|
292
|
+
/**
|
|
293
|
+
* Rows holding any of `terms`, ranked by the sum of the matched terms' IDF among those rows,
|
|
294
|
+
* `ln(1 + (N - df + 0.5) / (df + 0.5))`, then `ts_rank_cd`. Each (row, term) match is evaluated
|
|
295
|
+
* once, and `ts_rank_cd` only for the rows ranked within `topK` (ties included): a question full of
|
|
296
|
+
* common words can match most of the table. Terms are letter/digit runs: space-joined in one
|
|
297
|
+
* binding (no array binding), each quoted as a literal lexeme.
|
|
298
|
+
*/
|
|
299
|
+
private runRankedTermSearch;
|
|
251
300
|
/** Must be character-for-character the index expression, or the planner won't use the index. */
|
|
252
301
|
private tsvector;
|
|
253
302
|
}
|
|
@@ -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,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"pg-vector-store.d.ts","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EmbeddingRetriever } from './embedding-retriever.js';
|
|
2
|
+
import { anyTermTsquery, DEFAULT_STOP_WORDS, hasSearchSyntax, keywordTerms, } from './lexical-query.js';
|
|
2
3
|
import { assertRemovalFilter, effectivePatchKeys, filterDeniesAll } from './vector-store.js';
|
|
3
4
|
const METRICS = {
|
|
4
5
|
cosine: {
|
|
@@ -102,7 +103,7 @@ export function stripNulBytes(value) {
|
|
|
102
103
|
* just as easily as stored text can, Postgres rejects it here exactly as it would on a write, and
|
|
103
104
|
* stripping it here keeps a filter lookup consistent with the already-stripped data it is matched against.
|
|
104
105
|
*/
|
|
105
|
-
function buildMetadataWhere(filter, metadataColumn) {
|
|
106
|
+
export function buildMetadataWhere(filter, metadataColumn) {
|
|
106
107
|
if (filter === undefined || Object.keys(filter).length === 0) {
|
|
107
108
|
return { sql: '', bindings: [] };
|
|
108
109
|
}
|
|
@@ -138,7 +139,7 @@ function buildMetadataWhere(filter, metadataColumn) {
|
|
|
138
139
|
return { sql: `WHERE ${clauses.join(' AND ')}`, bindings };
|
|
139
140
|
}
|
|
140
141
|
/** Normalize whatever a Lucid `rawQuery` returns (PG `{rows}`, SQLite array, MySQL `[rows,fields]`). */
|
|
141
|
-
function normalizeRows(raw) {
|
|
142
|
+
export function normalizeRows(raw) {
|
|
142
143
|
if (Array.isArray(raw)) {
|
|
143
144
|
if (raw.length > 0 && Array.isArray(raw[0])) {
|
|
144
145
|
return raw[0];
|
|
@@ -524,8 +525,10 @@ export class PgVectorStore {
|
|
|
524
525
|
* {@link import('./hybrid-retriever.js').HybridRetriever} can fuse the dense and lexical legs over the
|
|
525
526
|
* same rows and ids. `retrievers.pgvector({ fullText: {} })` wires exactly that.
|
|
526
527
|
*
|
|
527
|
-
*
|
|
528
|
-
*
|
|
528
|
+
* A question is searched by its meaningful terms: its stop words dropped, rows holding any remaining
|
|
529
|
+
* term ranked by IDF-weighted coverage, `ts_rank_cd` (cover density) breaking ties (see
|
|
530
|
+
* {@link PgFullTextOptions.anyTermFallback}); explicit syntax (quoted phrases, `-exclusions`) goes
|
|
531
|
+
* through `websearch_to_tsquery` first.
|
|
529
532
|
*
|
|
530
533
|
* A separate class rather than a method on {@link PgVectorStore} on purpose: full-text search needs a
|
|
531
534
|
* GIN index, which on a populated table belongs in a migration you run and watch (`CREATE INDEX` in
|
|
@@ -536,6 +539,7 @@ export class PgLexicalVectorStore extends PgVectorStore {
|
|
|
536
539
|
tsConfig;
|
|
537
540
|
tsColumn;
|
|
538
541
|
anyTermFallback;
|
|
542
|
+
stopWords;
|
|
539
543
|
constructor(db, options = {}) {
|
|
540
544
|
super(db, options);
|
|
541
545
|
this.tsConfig = assertIdentifier(options.fullText?.config ?? 'simple', 'text search config');
|
|
@@ -544,6 +548,8 @@ export class PgLexicalVectorStore extends PgVectorStore {
|
|
|
544
548
|
? assertIdentifier(options.fullText.column, 'column')
|
|
545
549
|
: undefined;
|
|
546
550
|
this.anyTermFallback = options.fullText?.anyTermFallback ?? true;
|
|
551
|
+
const stopWords = options.fullText?.stopWords;
|
|
552
|
+
this.stopWords = stopWords === false ? {} : (stopWords ?? DEFAULT_STOP_WORDS);
|
|
547
553
|
}
|
|
548
554
|
schemaStatements() {
|
|
549
555
|
const statements = super.schemaStatements();
|
|
@@ -554,25 +560,24 @@ export class PgLexicalVectorStore extends PgVectorStore {
|
|
|
554
560
|
return statements;
|
|
555
561
|
}
|
|
556
562
|
/**
|
|
557
|
-
* Full-text search over the chunk text. `score` is
|
|
558
|
-
* the vector leg's scale — so `minScore` is deliberately not applied here.
|
|
563
|
+
* Full-text search over the chunk text. `score` is an IDF / `ts_rank_cd` rank — not a similarity,
|
|
564
|
+
* and not on the vector leg's scale — so `minScore` is deliberately not applied here.
|
|
559
565
|
*/
|
|
560
566
|
async searchText(query, options) {
|
|
561
567
|
if ((options.filter !== undefined && filterDeniesAll(options.filter)) || query.trim() === '') {
|
|
562
568
|
return [];
|
|
563
569
|
}
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
if (terms.length < 2) {
|
|
570
|
-
return all;
|
|
570
|
+
if (!this.anyTermFallback || hasSearchSyntax(query)) {
|
|
571
|
+
const strict = await this.runTextSearch(query, options);
|
|
572
|
+
if (strict.length > 0 || !this.anyTermFallback) {
|
|
573
|
+
return strict;
|
|
574
|
+
}
|
|
571
575
|
}
|
|
572
|
-
|
|
573
|
-
return
|
|
576
|
+
const terms = keywordTerms(query, 24, this.stopWords);
|
|
577
|
+
return terms.length === 0 ? [] : this.runRankedTermSearch(terms, options);
|
|
574
578
|
}
|
|
575
|
-
|
|
579
|
+
/** `websearch_to_tsquery` on the query as written: every word, quoted phrases, `-exclusions`. */
|
|
580
|
+
async runTextSearch(query, options) {
|
|
576
581
|
const c = this.col;
|
|
577
582
|
const where = buildMetadataWhere(options.filter, c.metadata);
|
|
578
583
|
// The parsed query is a lateral relation, so the one `?` binding feeds both the match and the rank.
|
|
@@ -582,12 +587,55 @@ export class PgLexicalVectorStore extends PgVectorStore {
|
|
|
582
587
|
}
|
|
583
588
|
const raw = await this.db.rawQuery(`SELECT ${c.id} AS id, ${c.text} AS text, ${c.source} AS source, ${c.metadata} AS metadata,
|
|
584
589
|
ts_rank_cd(${this.tsvector()}, __tsq.q) AS score
|
|
585
|
-
FROM ${this.table},
|
|
590
|
+
FROM ${this.table}, websearch_to_tsquery('${this.tsConfig}', ?) AS __tsq(q)
|
|
586
591
|
WHERE ${clauses.join(' AND ')}
|
|
587
592
|
ORDER BY score DESC, ${c.id}
|
|
588
593
|
LIMIT ?`, [query, ...where.bindings, options.topK]);
|
|
589
594
|
return normalizeRows(raw).map(toPassage);
|
|
590
595
|
}
|
|
596
|
+
/**
|
|
597
|
+
* Rows holding any of `terms`, ranked by the sum of the matched terms' IDF among those rows,
|
|
598
|
+
* `ln(1 + (N - df + 0.5) / (df + 0.5))`, then `ts_rank_cd`. Each (row, term) match is evaluated
|
|
599
|
+
* once, and `ts_rank_cd` only for the rows ranked within `topK` (ties included): a question full of
|
|
600
|
+
* common words can match most of the table. Terms are letter/digit runs: space-joined in one
|
|
601
|
+
* binding (no array binding), each quoted as a literal lexeme.
|
|
602
|
+
*/
|
|
603
|
+
async runRankedTermSearch(terms, options) {
|
|
604
|
+
const c = this.col;
|
|
605
|
+
const cfg = this.tsConfig;
|
|
606
|
+
const where = buildMetadataWhere(options.filter, c.metadata);
|
|
607
|
+
const clauses = [`${this.tsvector()} @@ __any.q`];
|
|
608
|
+
if (where.sql !== '') {
|
|
609
|
+
clauses.push(where.sql.slice('WHERE '.length));
|
|
610
|
+
}
|
|
611
|
+
const raw = await this.db.rawQuery(`SELECT id, text, source, metadata, score FROM (
|
|
612
|
+
WITH __terms AS (
|
|
613
|
+
SELECT DISTINCT to_tsquery('${cfg}', quote_literal(t)) AS q
|
|
614
|
+
FROM regexp_split_to_table(?, ' ') AS t
|
|
615
|
+
), __cand AS MATERIALIZED (
|
|
616
|
+
SELECT ${c.id} AS id, ${c.text} AS text, ${c.source} AS source, ${c.metadata} AS metadata,
|
|
617
|
+
${this.tsvector()} AS __tsv, __any.q AS __q
|
|
618
|
+
FROM ${this.table}, to_tsquery('${cfg}', ?) AS __any(q)
|
|
619
|
+
WHERE ${clauses.join(' AND ')}
|
|
620
|
+
), __hits AS MATERIALIZED (
|
|
621
|
+
SELECT __cand.id AS __id, __terms.q FROM __cand JOIN __terms ON __cand.__tsv @@ __terms.q
|
|
622
|
+
), __idf AS (
|
|
623
|
+
SELECT q, ln(1 + ((SELECT count(*) FROM __cand) - count(*) + 0.5) / (count(*) + 0.5)) AS w
|
|
624
|
+
FROM __hits GROUP BY q
|
|
625
|
+
), __scored AS (
|
|
626
|
+
SELECT __hits.__id, sum(__idf.w) AS s, rank() OVER (ORDER BY sum(__idf.w) DESC) AS r
|
|
627
|
+
FROM __hits JOIN __idf USING (q) GROUP BY __hits.__id
|
|
628
|
+
)
|
|
629
|
+
SELECT __cand.id, __cand.text, __cand.source, __cand.metadata,
|
|
630
|
+
__scored.s AS __s, ts_rank_cd(__cand.__tsv, __cand.__q, 32) AS __tr,
|
|
631
|
+
__scored.s + ts_rank_cd(__cand.__tsv, __cand.__q, 32) AS score
|
|
632
|
+
FROM __scored JOIN __cand ON __cand.id = __scored.__id
|
|
633
|
+
WHERE __scored.r <= ?
|
|
634
|
+
) AS __ranked
|
|
635
|
+
ORDER BY __s DESC, __tr DESC, id
|
|
636
|
+
LIMIT ?`, [terms.join(' '), anyTermTsquery(terms), ...where.bindings, options.topK, options.topK]);
|
|
637
|
+
return normalizeRows(raw).map(toPassage);
|
|
638
|
+
}
|
|
591
639
|
/** Must be character-for-character the index expression, or the planner won't use the index. */
|
|
592
640
|
tsvector() {
|
|
593
641
|
return this.tsColumn ?? `to_tsvector('${this.tsConfig}'::regconfig, ${this.col.text})`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-vector-store.js","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pg-vector-store.js","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { type DetectedHeading } from './headings.js';
|
|
2
|
+
import { type TreeBudget, type TreeLlm } from './llm.js';
|
|
3
|
+
import type { DocumentTree, DocumentTreeInput, TreeUnit } from './types.js';
|
|
4
|
+
export interface BuildDocumentTreeOptions {
|
|
5
|
+
documentId: string;
|
|
6
|
+
/**
|
|
7
|
+
* The model for summaries, the document description, and structuring documents with no usable
|
|
8
|
+
* outline. Omit it and the build is LLM-free: outline/headings or page groups, with the start of
|
|
9
|
+
* each section's text as its summary.
|
|
10
|
+
*/
|
|
11
|
+
llm?: TreeLlm;
|
|
12
|
+
/** Deepest level kept (1 = top-level sections only). Deeper headings become `keyItems`. Default 4. */
|
|
13
|
+
maxDepth?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Hard per-document limits for every LLM call of the build. Defaults: 60 calls, 400k input
|
|
16
|
+
* tokens, 40k output tokens, 5 minutes overall, 60 s per call. Running out is not an error: the
|
|
17
|
+
* structure step falls back to page groups, and remaining summaries use the section's own text.
|
|
18
|
+
*/
|
|
19
|
+
budget?: TreeBudget;
|
|
20
|
+
/** Summarize nodes with the LLM. Default `true` when `llm` is set. */
|
|
21
|
+
summaries?: boolean;
|
|
22
|
+
/** A node whose text is shorter than this is its own summary (no LLM call). Default 600 chars. */
|
|
23
|
+
summaryMinChars?: number;
|
|
24
|
+
/** Text of a node sent to the summarizer, at most. Default 8 000 chars. */
|
|
25
|
+
summaryInputChars?: number;
|
|
26
|
+
/** Concurrent summary calls. Default 4. */
|
|
27
|
+
concurrency?: number;
|
|
28
|
+
/** Write a one-paragraph description of the document. Default `true` when `llm` is set. */
|
|
29
|
+
describe?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Find headings in the text (markdown headers, `PART 52`, `Item 7.`, `3.2 Scope`…) when there is
|
|
32
|
+
* no outline and sections carry no titles. `'markdown'` only trusts markdown headers. Default `true`.
|
|
33
|
+
*/
|
|
34
|
+
detectHeadings?: boolean | 'markdown';
|
|
35
|
+
/** At least this many headings for a detected structure to be used. Default 3. */
|
|
36
|
+
minHeadings?: number;
|
|
37
|
+
/** Ask the LLM for the structure when nothing deterministic worked. Default `true` when `llm` is set. */
|
|
38
|
+
llmStructure?: boolean;
|
|
39
|
+
/** Characters of text per structuring call. Default 24 000. */
|
|
40
|
+
structureWindowChars?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Structuring calls allowed. A document needing more windows than this is not sent at all —
|
|
43
|
+
* it goes straight to page groups instead of spending a budget it cannot finish. Default 12.
|
|
44
|
+
*/
|
|
45
|
+
maxStructureCalls?: number;
|
|
46
|
+
/** Units per page-group node (flat trees, and splitting long leaves). Default 5. */
|
|
47
|
+
groupSize?: number;
|
|
48
|
+
/** A leaf spanning more units than this is split into page groups. Default 10. */
|
|
49
|
+
maxLeafUnits?: number;
|
|
50
|
+
/** Children per level before page groups are grouped again (flat trees). Default 12. */
|
|
51
|
+
maxChildren?: number;
|
|
52
|
+
/** The previous tree of this document: an unchanged input returns it as is; changed nodes are re-summarized, the rest reuse their summaries. */
|
|
53
|
+
previous?: DocumentTree;
|
|
54
|
+
metadata?: Record<string, unknown>;
|
|
55
|
+
source?: string;
|
|
56
|
+
signal?: AbortSignal;
|
|
57
|
+
}
|
|
58
|
+
export interface BuiltDocumentTree {
|
|
59
|
+
tree: DocumentTree;
|
|
60
|
+
/** The units the node ranges index — persist them with the tree ({@link import('./store.js').DocumentTreeStore.put}). */
|
|
61
|
+
units: TreeUnit[];
|
|
62
|
+
/** `true` when `previous` had the same fingerprint and was returned without building. */
|
|
63
|
+
unchanged: boolean;
|
|
64
|
+
}
|
|
65
|
+
/** Turn the input into units (pages or sections) plus any headings it declares. */
|
|
66
|
+
export declare function toUnits(input: DocumentTreeInput): {
|
|
67
|
+
units: TreeUnit[];
|
|
68
|
+
declared: DetectedHeading[] | undefined;
|
|
69
|
+
kind: 'pages' | 'sections';
|
|
70
|
+
};
|
|
71
|
+
/** The text a node spans (children included), joined in reading order. */
|
|
72
|
+
export declare function spanText(units: readonly TreeUnit[], start: number, end: number): string;
|
|
73
|
+
/** Run `work` over `items` with at most `limit` in flight. */
|
|
74
|
+
export declare function mapLimit<T, R>(items: readonly T[], limit: number, work: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Build a document's navigation tree: a hierarchical table of contents whose nodes carry a title,
|
|
77
|
+
* the page (or section) range they span, and a summary.
|
|
78
|
+
*
|
|
79
|
+
* Structure, cheapest first, never looping:
|
|
80
|
+
*
|
|
81
|
+
* 1. the `outline` the input declares (PDF bookmarks);
|
|
82
|
+
* 2. section titles/levels (`sections` input), or headings detected in the text;
|
|
83
|
+
* 3. the LLM, window by window (only when a document has no usable outline, and only if every
|
|
84
|
+
* window fits `maxStructureCalls` and the budget up front);
|
|
85
|
+
* 4. page groups — always works; the fallback for any failure above.
|
|
86
|
+
*
|
|
87
|
+
* Then summaries: top levels first (they matter most for navigation), each node's text sent once,
|
|
88
|
+
* within the budget; what the budget leaves unsummarized gets the start of its own text. With a
|
|
89
|
+
* `previous` tree, an unchanged input is returned as is (zero calls), and nodes whose title and text
|
|
90
|
+
* are unchanged keep their summary.
|
|
91
|
+
*
|
|
92
|
+
* The result is deterministic for a deterministic model: node ids are depth-first positions, and
|
|
93
|
+
* nothing depends on timing except which summaries a timed-out build got to.
|
|
94
|
+
*/
|
|
95
|
+
export declare function buildDocumentTree(input: DocumentTreeInput, options: BuildDocumentTreeOptions): Promise<BuiltDocumentTree>;
|
|
96
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../src/rag/tree/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAgC,MAAM,eAAe,CAAC;AACnF,OAAO,EAIL,KAAK,UAAU,EAEf,KAAK,OAAO,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAGjB,QAAQ,EACT,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kGAAkG;IAClG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACtC,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gJAAgJ;IAChJ,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,yHAAyH;IACzH,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,yFAAyF;IACzF,SAAS,EAAE,OAAO,CAAC;CACpB;AAeD,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG;IACjD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;CAC5B,CAiCA;AAyOD,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvF;AAyID,8DAA8D;AAC9D,wBAAsB,QAAQ,CAAC,CAAC,EAAE,CAAC,EACjC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC,CAAC,EAAE,CAAC,CAWd;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CA2S5B"}
|