@pella-labs/pinakes 0.1.10 → 0.3.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/README.md +20 -20
- package/dist/cli/audit.d.ts +5 -3
- package/dist/cli/audit.d.ts.map +1 -1
- package/dist/cli/audit.js +3 -24
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/contradiction-cli.d.ts +12 -0
- package/dist/cli/contradiction-cli.d.ts.map +1 -0
- package/dist/cli/contradiction-cli.js +35 -0
- package/dist/cli/contradiction-cli.js.map +1 -0
- package/dist/cli/contradiction.d.ts +59 -0
- package/dist/cli/contradiction.d.ts.map +1 -0
- package/dist/cli/contradiction.js +172 -0
- package/dist/cli/contradiction.js.map +1 -0
- package/dist/cli/export.d.ts +1 -1
- package/dist/cli/export.d.ts.map +1 -1
- package/dist/cli/export.js +7 -28
- package/dist/cli/export.js.map +1 -1
- package/dist/cli/import.d.ts +2 -2
- package/dist/cli/import.d.ts.map +1 -1
- package/dist/cli/import.js +5 -26
- package/dist/cli/import.js.map +1 -1
- package/dist/cli/index.js +39 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/purge.d.ts +2 -2
- package/dist/cli/purge.d.ts.map +1 -1
- package/dist/cli/purge.js +2 -23
- package/dist/cli/purge.js.map +1 -1
- package/dist/cli/rebuild.d.ts +8 -6
- package/dist/cli/rebuild.d.ts.map +1 -1
- package/dist/cli/rebuild.js +9 -31
- package/dist/cli/rebuild.js.map +1 -1
- package/dist/cli/serve.d.ts +9 -7
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +71 -41
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/status.d.ts +7 -5
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +10 -29
- package/dist/cli/status.js.map +1 -1
- package/dist/db/client.d.ts +4 -4
- package/dist/db/client.js +3 -3
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrations/migrations/0002_rename_kg_to_pinakes.sql +49 -0
- package/dist/db/migrations/migrations/meta/0002_snapshot.json +504 -0
- package/dist/db/migrations/migrations/meta/_journal.json +7 -0
- package/dist/db/repository.js +5 -5
- package/dist/db/repository.js.map +1 -1
- package/dist/db/schema.d.ts +84 -84
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +49 -49
- package/dist/db/schema.js.map +1 -1
- package/dist/db/types.d.ts +2 -2
- package/dist/db/types.js +1 -1
- package/dist/gaps/detector.d.ts +5 -5
- package/dist/gaps/detector.js +15 -15
- package/dist/gaps/detector.js.map +1 -1
- package/dist/ingest/chokidar.js +1 -1
- package/dist/ingest/ingester.d.ts +9 -4
- package/dist/ingest/ingester.d.ts.map +1 -1
- package/dist/ingest/ingester.js +82 -17
- package/dist/ingest/ingester.js.map +1 -1
- package/dist/ingest/manifest.d.ts +5 -3
- package/dist/ingest/manifest.d.ts.map +1 -1
- package/dist/ingest/manifest.js +23 -14
- package/dist/ingest/manifest.js.map +1 -1
- package/dist/ingest/parse/chunk.js +1 -1
- package/dist/ingest/parse/markdown.d.ts +2 -2
- package/dist/ingest/queue.d.ts +1 -1
- package/dist/ingest/queue.js +1 -1
- package/dist/ingest/source.d.ts +2 -2
- package/dist/ingest/source.d.ts.map +1 -1
- package/dist/ingest/source.js +1 -1
- package/dist/llm/provider.d.ts +70 -0
- package/dist/llm/provider.d.ts.map +1 -0
- package/dist/llm/provider.js +235 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/mcp/envelope.d.ts +1 -1
- package/dist/mcp/tools/execute.d.ts +7 -7
- package/dist/mcp/tools/execute.d.ts.map +1 -1
- package/dist/mcp/tools/execute.js +41 -59
- package/dist/mcp/tools/execute.js.map +1 -1
- package/dist/mcp/tools/search.d.ts +13 -8
- package/dist/mcp/tools/search.d.ts.map +1 -1
- package/dist/mcp/tools/search.js +53 -28
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/observability/audit.d.ts +2 -2
- package/dist/observability/audit.js +3 -3
- package/dist/observability/audit.js.map +1 -1
- package/dist/observability/logger.js +4 -4
- package/dist/observability/logger.js.map +1 -1
- package/dist/observability/metrics.js +1 -1
- package/dist/observability/metrics.js.map +1 -1
- package/dist/paths.d.ts +61 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +106 -0
- package/dist/paths.js.map +1 -0
- package/dist/retrieval/dedup.d.ts +25 -0
- package/dist/retrieval/dedup.d.ts.map +1 -0
- package/dist/retrieval/dedup.js +97 -0
- package/dist/retrieval/dedup.js.map +1 -0
- package/dist/retrieval/embedder.d.ts +9 -9
- package/dist/retrieval/embedder.d.ts.map +1 -1
- package/dist/retrieval/embedder.js +17 -17
- package/dist/retrieval/embedder.js.map +1 -1
- package/dist/retrieval/expand.d.ts +18 -0
- package/dist/retrieval/expand.d.ts.map +1 -0
- package/dist/retrieval/expand.js +89 -0
- package/dist/retrieval/expand.js.map +1 -0
- package/dist/retrieval/fts.d.ts +3 -3
- package/dist/retrieval/fts.js +8 -8
- package/dist/retrieval/graph.d.ts +47 -0
- package/dist/retrieval/graph.d.ts.map +1 -0
- package/dist/retrieval/graph.js +144 -0
- package/dist/retrieval/graph.js.map +1 -0
- package/dist/retrieval/hybrid.d.ts +10 -0
- package/dist/retrieval/hybrid.d.ts.map +1 -1
- package/dist/retrieval/hybrid.js +57 -2
- package/dist/retrieval/hybrid.js.map +1 -1
- package/dist/retrieval/vec.d.ts +2 -2
- package/dist/retrieval/vec.js +3 -3
- package/dist/sandbox/bindings/install.d.ts +5 -5
- package/dist/sandbox/bindings/install.d.ts.map +1 -1
- package/dist/sandbox/bindings/install.js +3 -3
- package/dist/sandbox/bindings/install.js.map +1 -1
- package/dist/sandbox/bindings/kg.d.ts.map +1 -1
- package/dist/sandbox/bindings/kg.js +10 -0
- package/dist/sandbox/bindings/kg.js.map +1 -1
- package/dist/sandbox/bindings/pinakes.d.ts +29 -0
- package/dist/sandbox/bindings/pinakes.d.ts.map +1 -0
- package/dist/sandbox/bindings/pinakes.js +333 -0
- package/dist/sandbox/bindings/pinakes.js.map +1 -0
- package/dist/sandbox/bindings/write.d.ts +1 -1
- package/dist/sandbox/bindings/write.d.ts.map +1 -1
- package/dist/sandbox/bindings/write.js +9 -9
- package/dist/sandbox/bindings/write.js.map +1 -1
- package/dist/sandbox/executor.d.ts +3 -3
- package/dist/sandbox/executor.js +6 -6
- package/dist/sandbox/executor.js.map +1 -1
- package/dist/sandbox/helpers.d.ts +1 -1
- package/dist/sandbox/helpers.d.ts.map +1 -1
- package/dist/sandbox/helpers.js +2 -2
- package/dist/sandbox/vendored-codemode.d.ts +1 -1
- package/dist/sandbox/vendored-codemode.js +1 -1
- package/dist/server.js +15 -6
- package/dist/server.js.map +1 -1
- package/package.json +22 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/retrieval/embedder.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,6FAA6F;AAC7F,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,
|
|
1
|
+
{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/retrieval/embedder.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,6FAA6F;AAC7F,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0FAA0F;IAC1F,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,mEAAmE;IACnE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5C;AAQD;;;;;;;;;;GAUG;AACH,qBAAa,oBAAqB,YAAW,QAAQ;IAKvC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJtC,QAAQ,CAAC,GAAG,OAAiB;IAE7B,OAAO,CAAC,eAAe,CAAmD;gBAE7C,SAAS,GAAE,MAAsB;IAOxD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAclC,WAAW;CAmB1B;AAMD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,QAAQ;IAKnC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,KAAK,SAAK;gBAEmB,KAAK,EAAE,QAAQ;IAItC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKhD,KAAK,IAAI,IAAI;CAGd;AAMD;;;GAGG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAI3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAGF,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EAC9B,GAAG,GAAE,MAAsB;IAKvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAkBjD;AAMD;;;GAGG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAI3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAGF,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAwB,EAChD,GAAG,GAAE,MAAsB;IAKvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAqBjD;AAMD;;;GAGG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAI3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAGF,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAiC,EACzD,GAAG,GAAE,MAAsB;IAKvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAqBjD;AAMD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE5E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,QAAQ,CAyBjE;AAQD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,oBAAoB,CAKzD"}
|
|
@@ -7,15 +7,15 @@ import { logger } from '../observability/logger.js';
|
|
|
7
7
|
* between the ingest path (computing chunk embeddings on insert) and the
|
|
8
8
|
* future query path in Phase 4 (computing query embeddings for vector
|
|
9
9
|
* search). Putting it under `retrieval/` keeps the code-mode bindings'
|
|
10
|
-
* mental model consistent — `
|
|
10
|
+
* mental model consistent — `pinakes.vec()` and ingest both call into the same
|
|
11
11
|
* factory.
|
|
12
12
|
*
|
|
13
13
|
* **Provider strategy** (CLAUDE.md §AI Rules #3): Phase 2 ships only the
|
|
14
14
|
* bundled MiniLM provider. Phase 4 adds the env-driven factory:
|
|
15
|
-
* - `
|
|
16
|
-
* - `
|
|
17
|
-
* - `
|
|
18
|
-
* - `
|
|
15
|
+
* - `PINAKES_EMBED_PROVIDER=transformers` (default, this file)
|
|
16
|
+
* - `PINAKES_EMBED_PROVIDER=ollama` (HTTP, user-controlled)
|
|
17
|
+
* - `PINAKES_EMBED_PROVIDER=voyage` (HTTPS, paid)
|
|
18
|
+
* - `PINAKES_EMBED_PROVIDER=openai` (HTTPS, paid)
|
|
19
19
|
*
|
|
20
20
|
* **Failure mode** (CLAUDE.md §AI Rules #4): if the embedder fails during
|
|
21
21
|
* ingest, the ingester logs a warning and inserts the node + chunks WITHOUT
|
|
@@ -123,7 +123,7 @@ export class CountingEmbedder {
|
|
|
123
123
|
// ----------------------------------------------------------------------------
|
|
124
124
|
/**
|
|
125
125
|
* Ollama embedder via HTTP POST to `/api/embeddings`.
|
|
126
|
-
* Requires `
|
|
126
|
+
* Requires `PINAKES_OLLAMA_URL` and `PINAKES_OLLAMA_MODEL` env vars.
|
|
127
127
|
*/
|
|
128
128
|
export class OllamaEmbedder {
|
|
129
129
|
baseUrl;
|
|
@@ -159,7 +159,7 @@ export class OllamaEmbedder {
|
|
|
159
159
|
// ----------------------------------------------------------------------------
|
|
160
160
|
/**
|
|
161
161
|
* Voyage AI embedder via HTTPS POST to `https://api.voyageai.com/v1/embeddings`.
|
|
162
|
-
* Requires `
|
|
162
|
+
* Requires `PINAKES_VOYAGE_API_KEY` env var.
|
|
163
163
|
*/
|
|
164
164
|
export class VoyageEmbedder {
|
|
165
165
|
apiKey;
|
|
@@ -196,7 +196,7 @@ export class VoyageEmbedder {
|
|
|
196
196
|
// ----------------------------------------------------------------------------
|
|
197
197
|
/**
|
|
198
198
|
* OpenAI embedder via HTTPS POST to `https://api.openai.com/v1/embeddings`.
|
|
199
|
-
* Requires `
|
|
199
|
+
* Requires `PINAKES_OPENAI_API_KEY` env var.
|
|
200
200
|
*/
|
|
201
201
|
export class OpenAIEmbedder {
|
|
202
202
|
apiKey;
|
|
@@ -234,25 +234,25 @@ export class OpenAIEmbedder {
|
|
|
234
234
|
* provider is unrecognized.
|
|
235
235
|
*/
|
|
236
236
|
export function createEmbedder(provider) {
|
|
237
|
-
const p = provider ?? process.env['
|
|
237
|
+
const p = provider ?? process.env['PINAKES_EMBED_PROVIDER'] ?? 'transformers';
|
|
238
238
|
switch (p) {
|
|
239
239
|
case 'ollama': {
|
|
240
|
-
const url = process.env['
|
|
241
|
-
const model = process.env['
|
|
240
|
+
const url = process.env['PINAKES_OLLAMA_URL'] ?? 'http://localhost:11434';
|
|
241
|
+
const model = process.env['PINAKES_OLLAMA_MODEL'] ?? 'nomic-embed-text';
|
|
242
242
|
return new OllamaEmbedder(url, model);
|
|
243
243
|
}
|
|
244
244
|
case 'voyage': {
|
|
245
|
-
const key = process.env['
|
|
245
|
+
const key = process.env['PINAKES_VOYAGE_API_KEY'];
|
|
246
246
|
if (!key)
|
|
247
|
-
throw new Error('
|
|
248
|
-
const model = process.env['
|
|
247
|
+
throw new Error('PINAKES_VOYAGE_API_KEY is required for voyage embedder');
|
|
248
|
+
const model = process.env['PINAKES_EMBED_MODEL'] ?? 'voyage-code-3';
|
|
249
249
|
return new VoyageEmbedder(key, model);
|
|
250
250
|
}
|
|
251
251
|
case 'openai': {
|
|
252
|
-
const key = process.env['
|
|
252
|
+
const key = process.env['PINAKES_OPENAI_API_KEY'];
|
|
253
253
|
if (!key)
|
|
254
|
-
throw new Error('
|
|
255
|
-
const model = process.env['
|
|
254
|
+
throw new Error('PINAKES_OPENAI_API_KEY is required for openai embedder');
|
|
255
|
+
const model = process.env['PINAKES_EMBED_MODEL'] ?? 'text-embedding-3-small';
|
|
256
256
|
return new OpenAIEmbedder(key, model);
|
|
257
257
|
}
|
|
258
258
|
case 'transformers':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/retrieval/embedder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAkC,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,6FAA6F;AAC7F,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAgBjC,+EAA+E;AAC/E,2DAA2D;AAC3D,+EAA+E;AAE/E,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,oBAAoB;IAKF;IAJpB,GAAG,GAAG,aAAa,CAAC;IAErB,eAAe,GAA8C,IAAI,CAAC;IAE1E,YAA6B,YAAoB,aAAa;QAAjC,cAAS,GAAT,SAAS,CAAwB;QAC5D,0EAA0E;QAC1E,8EAA8E;QAC9E,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC5B,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,0EAA0E;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAoB,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,MAAM,mBAAmB,IAAI,CAAC,GAAG,qCAAqC,CACjG,CAAC;QACJ,CAAC;QACD,8DAA8D;QAC9D,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,+BAA+B,CAAC,CAAC;YACxE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAExF,CAAC;YACF,IAAI,CAAC,eAAe;iBACjB,IAAI,CAAC,GAAG,EAAE;gBACT,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,6BAA6B,CAAC,CAAC;YAC7F,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACtB,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,sCAAsC,CAAC,CAAC;gBACrF,8EAA8E;gBAC9E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC9B,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAgB;IAKE;IAJpB,GAAG,CAAS;IACrB,mFAAmF;IACnF,KAAK,GAAG,CAAC,CAAC;IAEV,YAA6B,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;QAC1C,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;CACF;AAED,+EAA+E;AAC/E,iDAAiD;AACjD,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,OAAO,cAAc;IAIN;IACA;IAJV,GAAG,CAAS;IAErB,YACmB,OAAe,EACf,KAAa,EAC9B,MAAc,aAAa;QAFV,YAAO,GAAP,OAAO,CAAQ;QACf,UAAK,GAAL,KAAK,CAAQ;QAG9B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,gEAAgE;IAClE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,iBAAiB,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,mBAAmB,GAAG,CAAC,MAAM,sBAAsB,IAAI,CAAC,GAAG,WAAW,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,+EAA+E;AAC/E,sCAAsC;AACtC,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,OAAO,cAAc;IAIN;IACA;IAJV,GAAG,CAAS;IAErB,YACmB,MAAc,EACd,QAAgB,eAAe,EAChD,MAAc,aAAa;QAFV,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAA0B;QAGhD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,KAAmB,CAAC;IAEhC,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,wCAAwC,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SACzD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA6C,CAAC;QAC5E,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,mBAAmB,GAAG,CAAC,MAAM,sBAAsB,IAAI,CAAC,GAAG,WAAW,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,OAAO,cAAc;IAIN;IACA;IAJV,GAAG,CAAS;IAErB,YACmB,MAAc,EACd,QAAgB,wBAAwB,EACzD,MAAc,aAAa;QAFV,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAmC;QAGzD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,KAAmB,CAAC;IAEhC,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,sCAAsC,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SACzD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA6C,CAAC;QAC5E,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,mBAAmB,GAAG,CAAC,MAAM,sBAAsB,IAAI,CAAC,GAAG,WAAW,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAQD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,QAAwB;IACrD,MAAM,CAAC,GAAG,QAAQ,IAAK,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/retrieval/embedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { LlmProvider } from '../llm/provider.js';
|
|
2
|
+
export interface ExpandResult {
|
|
3
|
+
original: string;
|
|
4
|
+
alternatives: string[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Expand a query into 2 alternative phrasings via an LLM.
|
|
8
|
+
*
|
|
9
|
+
* Returns `{ original, alternatives: [] }` if:
|
|
10
|
+
* - Provider is not available
|
|
11
|
+
* - Query is too short (< 3 words — expansion adds noise for short queries)
|
|
12
|
+
* - LLM call fails (non-fatal)
|
|
13
|
+
* - Response can't be parsed as a JSON array of strings
|
|
14
|
+
*/
|
|
15
|
+
export declare function expandQuery(query: string, provider: LlmProvider): Promise<ExpandResult>;
|
|
16
|
+
/** Clear the cache — test-only. */
|
|
17
|
+
export declare function __clearExpansionCacheForTests(): void;
|
|
18
|
+
//# sourceMappingURL=expand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../src/retrieval/expand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAoBtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC,CAwCvB;AA0BD,mCAAmC;AACnC,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { logger } from '../observability/logger.js';
|
|
2
|
+
/**
|
|
3
|
+
* Multi-query expansion (D38, GBrain-inspired).
|
|
4
|
+
*
|
|
5
|
+
* Uses an LLM to generate 2 alternative phrasings of a search query,
|
|
6
|
+
* improving recall for ambiguous or jargon-heavy queries. Results from
|
|
7
|
+
* all query variants are merged via RRF in the caller.
|
|
8
|
+
*
|
|
9
|
+
* Non-fatal: if the provider is unavailable or the call fails, returns
|
|
10
|
+
* empty alternatives and the caller uses the original query only.
|
|
11
|
+
*/
|
|
12
|
+
const EXPANSION_SYSTEM = `You generate alternative search phrasings. Given a query, produce exactly 2 alternative phrasings that could help find relevant results. Return ONLY a JSON array of exactly 2 strings, no explanation.`;
|
|
13
|
+
/** Module-level cache: query → alternatives. Max 100 entries, no TTL. */
|
|
14
|
+
const cache = new Map();
|
|
15
|
+
const MAX_CACHE = 100;
|
|
16
|
+
/**
|
|
17
|
+
* Expand a query into 2 alternative phrasings via an LLM.
|
|
18
|
+
*
|
|
19
|
+
* Returns `{ original, alternatives: [] }` if:
|
|
20
|
+
* - Provider is not available
|
|
21
|
+
* - Query is too short (< 3 words — expansion adds noise for short queries)
|
|
22
|
+
* - LLM call fails (non-fatal)
|
|
23
|
+
* - Response can't be parsed as a JSON array of strings
|
|
24
|
+
*/
|
|
25
|
+
export async function expandQuery(query, provider) {
|
|
26
|
+
const original = query.trim();
|
|
27
|
+
// Short queries don't benefit from expansion
|
|
28
|
+
if (original.split(/\s+/).length < 3) {
|
|
29
|
+
return { original, alternatives: [] };
|
|
30
|
+
}
|
|
31
|
+
if (!provider.available()) {
|
|
32
|
+
return { original, alternatives: [] };
|
|
33
|
+
}
|
|
34
|
+
// Check cache
|
|
35
|
+
const cached = cache.get(original);
|
|
36
|
+
if (cached) {
|
|
37
|
+
return { original, alternatives: cached };
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const response = await provider.complete({
|
|
41
|
+
system: EXPANSION_SYSTEM,
|
|
42
|
+
prompt: original,
|
|
43
|
+
maxTokens: 100,
|
|
44
|
+
});
|
|
45
|
+
const alternatives = parseAlternatives(response);
|
|
46
|
+
if (alternatives.length > 0) {
|
|
47
|
+
// LRU-ish eviction: delete oldest entry if at capacity
|
|
48
|
+
if (cache.size >= MAX_CACHE) {
|
|
49
|
+
const firstKey = cache.keys().next().value;
|
|
50
|
+
if (firstKey !== undefined)
|
|
51
|
+
cache.delete(firstKey);
|
|
52
|
+
}
|
|
53
|
+
cache.set(original, alternatives);
|
|
54
|
+
}
|
|
55
|
+
return { original, alternatives };
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
logger.warn({ err, query: original }, 'query expansion failed (non-fatal)');
|
|
59
|
+
return { original, alternatives: [] };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parse the LLM response as a JSON array of 2 strings.
|
|
64
|
+
* Returns empty array on any parse failure.
|
|
65
|
+
*/
|
|
66
|
+
function parseAlternatives(response) {
|
|
67
|
+
try {
|
|
68
|
+
// Try to extract JSON array from the response (may have surrounding text)
|
|
69
|
+
const match = response.match(/\[[\s\S]*\]/);
|
|
70
|
+
if (!match)
|
|
71
|
+
return [];
|
|
72
|
+
const parsed = JSON.parse(match[0]);
|
|
73
|
+
if (!Array.isArray(parsed))
|
|
74
|
+
return [];
|
|
75
|
+
const strings = parsed
|
|
76
|
+
.filter((item) => typeof item === 'string' && item.trim().length > 0)
|
|
77
|
+
.map((s) => s.trim())
|
|
78
|
+
.slice(0, 2);
|
|
79
|
+
return strings;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** Clear the cache — test-only. */
|
|
86
|
+
export function __clearExpansionCacheForTests() {
|
|
87
|
+
cache.clear();
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/retrieval/expand.ts"],"names":[],"mappings":"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"}
|
package/dist/retrieval/fts.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import type { Database as BetterSqliteDatabase } from 'better-sqlite3';
|
|
|
2
2
|
/**
|
|
3
3
|
* FTS5 full-text search with BM25 ranking and optional snippet extraction.
|
|
4
4
|
*
|
|
5
|
-
* Extracted from `src/sandbox/bindings/
|
|
6
|
-
* and the `
|
|
5
|
+
* Extracted from `src/sandbox/bindings/pinakes.ts` so both the sandbox bindings
|
|
6
|
+
* and the `pinakes_search` MCP tool can share the same query logic. The binding
|
|
7
7
|
* delegates here; the MCP tool calls `hybridSearch` which calls here.
|
|
8
8
|
*
|
|
9
9
|
* **Tokenizer**: `unicode61 remove_diacritics 2` (set in the migration).
|
|
@@ -27,7 +27,7 @@ export interface FtsResult {
|
|
|
27
27
|
* Run an FTS5 MATCH query with BM25 ranking and snippet extraction.
|
|
28
28
|
*
|
|
29
29
|
* @param reader A read-only `better-sqlite3` connection (from the read pool).
|
|
30
|
-
* @param scope `'project'` or `'personal'` — filters by `
|
|
30
|
+
* @param scope `'project'` or `'personal'` — filters by `pinakes_nodes.scope`.
|
|
31
31
|
* @param query Raw user/LLM query string (will be escaped).
|
|
32
32
|
* @param limit Max results (clamped to 1..100 by callers).
|
|
33
33
|
* @returns Results ranked by BM25 (lower rank = better match).
|
package/dist/retrieval/fts.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Run an FTS5 MATCH query with BM25 ranking and snippet extraction.
|
|
3
3
|
*
|
|
4
4
|
* @param reader A read-only `better-sqlite3` connection (from the read pool).
|
|
5
|
-
* @param scope `'project'` or `'personal'` — filters by `
|
|
5
|
+
* @param scope `'project'` or `'personal'` — filters by `pinakes_nodes.scope`.
|
|
6
6
|
* @param query Raw user/LLM query string (will be escaped).
|
|
7
7
|
* @param limit Max results (clamped to 1..100 by callers).
|
|
8
8
|
* @returns Results ranked by BM25 (lower rank = better match).
|
|
@@ -13,18 +13,18 @@ export function ftsQuery(reader, scope, query, limit) {
|
|
|
13
13
|
return [];
|
|
14
14
|
const rows = reader
|
|
15
15
|
.prepare(`SELECT c.id AS id, c.text AS text,
|
|
16
|
-
snippet(
|
|
16
|
+
snippet(pinakes_chunks_fts, 0, '', '', '…', 64) AS snippet,
|
|
17
17
|
n.source_uri AS source_uri,
|
|
18
|
-
n.id AS node_id, bm25(
|
|
18
|
+
n.id AS node_id, bm25(pinakes_chunks_fts) AS rank,
|
|
19
19
|
n.confidence AS confidence,
|
|
20
20
|
n.title AS title,
|
|
21
21
|
n.section_path AS section_path
|
|
22
|
-
FROM
|
|
23
|
-
JOIN
|
|
24
|
-
JOIN
|
|
22
|
+
FROM pinakes_chunks_fts f
|
|
23
|
+
JOIN pinakes_chunks c ON c.rowid = f.rowid
|
|
24
|
+
JOIN pinakes_nodes n ON c.node_id = n.id
|
|
25
25
|
WHERE n.scope = ?
|
|
26
|
-
AND
|
|
27
|
-
ORDER BY bm25(
|
|
26
|
+
AND pinakes_chunks_fts MATCH ?
|
|
27
|
+
ORDER BY bm25(pinakes_chunks_fts)
|
|
28
28
|
LIMIT ?`)
|
|
29
29
|
.all(scope, escaped, limit);
|
|
30
30
|
return rows;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Database as BetterSqliteDatabase } from 'better-sqlite3';
|
|
2
|
+
/**
|
|
3
|
+
* Graph algorithms over the `pinakes_edges` table (D40).
|
|
4
|
+
*
|
|
5
|
+
* - **PageRank**: iterative power method (d=0.85, 20 iterations).
|
|
6
|
+
* - **Connected components**: BFS on undirected edge interpretation.
|
|
7
|
+
*
|
|
8
|
+
* Both implementations are pure JS over SQL-loaded adjacency data.
|
|
9
|
+
* No new dependencies.
|
|
10
|
+
*/
|
|
11
|
+
export interface PageRankOpts {
|
|
12
|
+
/** Damping factor (default 0.85). */
|
|
13
|
+
damping?: number;
|
|
14
|
+
/** Number of iterations (default 20, max 100). */
|
|
15
|
+
iterations?: number;
|
|
16
|
+
/** Max results to return (default 20, max 100). */
|
|
17
|
+
limit?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface PageRankResult {
|
|
20
|
+
id: string;
|
|
21
|
+
source_uri: string;
|
|
22
|
+
title: string | null;
|
|
23
|
+
score: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Compute PageRank over the knowledge graph for a given scope.
|
|
27
|
+
*
|
|
28
|
+
* Uses the iterative power method:
|
|
29
|
+
* PR(v) = (1-d)/N + d * Σ PR(u)/out(u) for u in in-neighbors(v)
|
|
30
|
+
*
|
|
31
|
+
* Dangling nodes (no outgoing edges) redistribute their rank evenly.
|
|
32
|
+
*/
|
|
33
|
+
export declare function pagerank(reader: BetterSqliteDatabase, scope: string, opts?: PageRankOpts): PageRankResult[];
|
|
34
|
+
export interface ComponentResult {
|
|
35
|
+
component_id: number;
|
|
36
|
+
nodes: Array<{
|
|
37
|
+
id: string;
|
|
38
|
+
source_uri: string;
|
|
39
|
+
title: string | null;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Find connected components in the knowledge graph (undirected).
|
|
44
|
+
* Returns components sorted by size descending.
|
|
45
|
+
*/
|
|
46
|
+
export declare function connectedComponents(reader: BetterSqliteDatabase, scope: string): ComponentResult[];
|
|
47
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/retrieval/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEvE;;;;;;;;GAQG;AAMH,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,YAAY,GAClB,cAAc,EAAE,CA2FlB;AAMD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACxE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,MAAM,GACZ,eAAe,EAAE,CAmEnB"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute PageRank over the knowledge graph for a given scope.
|
|
3
|
+
*
|
|
4
|
+
* Uses the iterative power method:
|
|
5
|
+
* PR(v) = (1-d)/N + d * Σ PR(u)/out(u) for u in in-neighbors(v)
|
|
6
|
+
*
|
|
7
|
+
* Dangling nodes (no outgoing edges) redistribute their rank evenly.
|
|
8
|
+
*/
|
|
9
|
+
export function pagerank(reader, scope, opts) {
|
|
10
|
+
const d = opts?.damping ?? 0.85;
|
|
11
|
+
const iterations = Math.min(Math.max(opts?.iterations ?? 20, 1), 100);
|
|
12
|
+
const limit = Math.min(Math.max(opts?.limit ?? 20, 1), 100);
|
|
13
|
+
// Load all nodes
|
|
14
|
+
const nodes = reader
|
|
15
|
+
.prepare(`SELECT id, source_uri, title FROM pinakes_nodes WHERE scope = ?`)
|
|
16
|
+
.all(scope);
|
|
17
|
+
if (nodes.length === 0)
|
|
18
|
+
return [];
|
|
19
|
+
const N = nodes.length;
|
|
20
|
+
const nodeSet = new Set(nodes.map((n) => n.id));
|
|
21
|
+
// Load edges (only between nodes in this scope)
|
|
22
|
+
const edges = reader
|
|
23
|
+
.prepare(`SELECT e.src_id, e.dst_id FROM pinakes_edges e
|
|
24
|
+
JOIN pinakes_nodes ns ON e.src_id = ns.id
|
|
25
|
+
JOIN pinakes_nodes nd ON e.dst_id = nd.id
|
|
26
|
+
WHERE ns.scope = ? AND nd.scope = ?`)
|
|
27
|
+
.all(scope, scope);
|
|
28
|
+
// Build adjacency: outgoing edges and incoming edges
|
|
29
|
+
const outDegree = new Map();
|
|
30
|
+
const inEdges = new Map();
|
|
31
|
+
for (const nodeId of nodeSet) {
|
|
32
|
+
outDegree.set(nodeId, 0);
|
|
33
|
+
inEdges.set(nodeId, []);
|
|
34
|
+
}
|
|
35
|
+
for (const e of edges) {
|
|
36
|
+
if (!nodeSet.has(e.src_id) || !nodeSet.has(e.dst_id))
|
|
37
|
+
continue;
|
|
38
|
+
outDegree.set(e.src_id, (outDegree.get(e.src_id) ?? 0) + 1);
|
|
39
|
+
inEdges.get(e.dst_id).push(e.src_id);
|
|
40
|
+
}
|
|
41
|
+
// Initialize ranks
|
|
42
|
+
let ranks = new Map();
|
|
43
|
+
for (const nodeId of nodeSet) {
|
|
44
|
+
ranks.set(nodeId, 1 / N);
|
|
45
|
+
}
|
|
46
|
+
// Iterate
|
|
47
|
+
for (let iter = 0; iter < iterations; iter++) {
|
|
48
|
+
const newRanks = new Map();
|
|
49
|
+
// Collect dangling node rank sum
|
|
50
|
+
let danglingSum = 0;
|
|
51
|
+
for (const nodeId of nodeSet) {
|
|
52
|
+
if ((outDegree.get(nodeId) ?? 0) === 0) {
|
|
53
|
+
danglingSum += ranks.get(nodeId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
for (const nodeId of nodeSet) {
|
|
57
|
+
let inSum = 0;
|
|
58
|
+
for (const src of inEdges.get(nodeId)) {
|
|
59
|
+
inSum += ranks.get(src) / (outDegree.get(src) ?? 1);
|
|
60
|
+
}
|
|
61
|
+
// Add dangling redistribution
|
|
62
|
+
const pr = (1 - d) / N + d * (inSum + danglingSum / N);
|
|
63
|
+
newRanks.set(nodeId, pr);
|
|
64
|
+
}
|
|
65
|
+
ranks = newRanks;
|
|
66
|
+
}
|
|
67
|
+
// Build results, sort by descending score
|
|
68
|
+
const nodeMap = new Map(nodes.map((n) => [n.id, n]));
|
|
69
|
+
const results = [];
|
|
70
|
+
for (const [id, score] of ranks) {
|
|
71
|
+
const node = nodeMap.get(id);
|
|
72
|
+
if (node) {
|
|
73
|
+
results.push({
|
|
74
|
+
id: node.id,
|
|
75
|
+
source_uri: node.source_uri,
|
|
76
|
+
title: node.title,
|
|
77
|
+
score,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
results.sort((a, b) => b.score - a.score);
|
|
82
|
+
return results.slice(0, limit);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Find connected components in the knowledge graph (undirected).
|
|
86
|
+
* Returns components sorted by size descending.
|
|
87
|
+
*/
|
|
88
|
+
export function connectedComponents(reader, scope) {
|
|
89
|
+
// Load all nodes
|
|
90
|
+
const nodes = reader
|
|
91
|
+
.prepare(`SELECT id, source_uri, title FROM pinakes_nodes WHERE scope = ?`)
|
|
92
|
+
.all(scope);
|
|
93
|
+
if (nodes.length === 0)
|
|
94
|
+
return [];
|
|
95
|
+
// Load edges (undirected: add both directions)
|
|
96
|
+
const edges = reader
|
|
97
|
+
.prepare(`SELECT e.src_id, e.dst_id FROM pinakes_edges e
|
|
98
|
+
JOIN pinakes_nodes ns ON e.src_id = ns.id
|
|
99
|
+
JOIN pinakes_nodes nd ON e.dst_id = nd.id
|
|
100
|
+
WHERE ns.scope = ? AND nd.scope = ?`)
|
|
101
|
+
.all(scope, scope);
|
|
102
|
+
// Build undirected adjacency list
|
|
103
|
+
const adj = new Map();
|
|
104
|
+
for (const n of nodes) {
|
|
105
|
+
adj.set(n.id, new Set());
|
|
106
|
+
}
|
|
107
|
+
for (const e of edges) {
|
|
108
|
+
adj.get(e.src_id)?.add(e.dst_id);
|
|
109
|
+
adj.get(e.dst_id)?.add(e.src_id);
|
|
110
|
+
}
|
|
111
|
+
// BFS to find components
|
|
112
|
+
const visited = new Set();
|
|
113
|
+
const components = [];
|
|
114
|
+
let componentId = 0;
|
|
115
|
+
for (const node of nodes) {
|
|
116
|
+
if (visited.has(node.id))
|
|
117
|
+
continue;
|
|
118
|
+
const component = [];
|
|
119
|
+
const queue = [node.id];
|
|
120
|
+
visited.add(node.id);
|
|
121
|
+
while (queue.length > 0) {
|
|
122
|
+
const current = queue.shift();
|
|
123
|
+
component.push(current);
|
|
124
|
+
for (const neighbor of adj.get(current) ?? []) {
|
|
125
|
+
if (!visited.has(neighbor)) {
|
|
126
|
+
visited.add(neighbor);
|
|
127
|
+
queue.push(neighbor);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const nodeMap = new Map(nodes.map((n) => [n.id, n]));
|
|
132
|
+
components.push({
|
|
133
|
+
component_id: componentId++,
|
|
134
|
+
nodes: component.map((id) => {
|
|
135
|
+
const n = nodeMap.get(id);
|
|
136
|
+
return { id: n.id, source_uri: n.source_uri, title: n.title };
|
|
137
|
+
}),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
// Sort by component size descending
|
|
141
|
+
components.sort((a, b) => b.nodes.length - a.nodes.length);
|
|
142
|
+
return components;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/retrieval/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@ export interface HybridResult {
|
|
|
16
16
|
export interface HybridSearchOpts {
|
|
17
17
|
limit?: number;
|
|
18
18
|
rrf_k?: number;
|
|
19
|
+
/** Set to false to disable post-RRF dedup (default: true). */
|
|
20
|
+
dedup?: boolean;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Run a hybrid FTS5 + vector search with RRF fusion.
|
|
@@ -40,4 +42,12 @@ export declare function hybridSearch(reader: BetterSqliteDatabase, scope: string
|
|
|
40
42
|
* Exported for direct testing — `hybridSearch` is the normal entry point.
|
|
41
43
|
*/
|
|
42
44
|
export declare function rrfFuse(ftsResults: FtsResult[], vecResults: VecResult[], rrfK: number, limit: number): HybridResult[];
|
|
45
|
+
/**
|
|
46
|
+
* Fuse N lists of HybridResult via RRF (D38, multi-query expansion).
|
|
47
|
+
*
|
|
48
|
+
* Generalizes the 2-list `rrfFuse` to arbitrary N lists. Each list
|
|
49
|
+
* assigns 1-based ranks; scores accumulate across all lists a result
|
|
50
|
+
* appears in.
|
|
51
|
+
*/
|
|
52
|
+
export declare function rrfFuseMulti(lists: HybridResult[][], rrfK: number, limit: number): HybridResult[];
|
|
43
53
|
//# sourceMappingURL=hybrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/retrieval/hybrid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/retrieval/hybrid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAuBrD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC,CAoBzB;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,SAAS,EAAE,EACvB,UAAU,EAAE,SAAS,EAAE,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,YAAY,EAAE,CAiEhB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,EAAE,EAAE,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,YAAY,EAAE,CAyChB"}
|
package/dist/retrieval/hybrid.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { dedupResults } from './dedup.js';
|
|
1
2
|
import { ftsQuery } from './fts.js';
|
|
2
3
|
import { vecSearch } from './vec.js';
|
|
3
4
|
/**
|
|
@@ -35,14 +36,20 @@ const DEFAULT_RRF_K = 60;
|
|
|
35
36
|
export async function hybridSearch(reader, scope, query, embedder, opts) {
|
|
36
37
|
const limit = Math.min(Math.max(opts?.limit ?? 20, 1), 100);
|
|
37
38
|
const rrfK = opts?.rrf_k ?? DEFAULT_RRF_K;
|
|
39
|
+
const shouldDedup = opts?.dedup !== false;
|
|
38
40
|
// Over-fetch from each source so RRF has good coverage.
|
|
39
|
-
|
|
41
|
+
// When dedup is on, fetch extra since dedup will remove some results.
|
|
42
|
+
const dedupOverfetch = shouldDedup ? 3 : 2;
|
|
43
|
+
const fetchLimit = Math.min(limit * dedupOverfetch, 100);
|
|
40
44
|
// Run both queries. Vec is async (embedding), FTS is sync.
|
|
41
45
|
const [ftsResults, vecResults] = await Promise.all([
|
|
42
46
|
Promise.resolve(ftsQuery(reader, scope, query, fetchLimit)),
|
|
43
47
|
vecSearch(reader, scope, query, embedder, fetchLimit),
|
|
44
48
|
]);
|
|
45
|
-
|
|
49
|
+
const fused = rrfFuse(ftsResults, vecResults, rrfK, shouldDedup ? limit * 2 : limit);
|
|
50
|
+
if (!shouldDedup)
|
|
51
|
+
return fused;
|
|
52
|
+
return dedupResults(fused).slice(0, limit);
|
|
46
53
|
}
|
|
47
54
|
/**
|
|
48
55
|
* Fuse FTS and vec results via equal-weight Reciprocal Rank Fusion.
|
|
@@ -117,4 +124,52 @@ export function rrfFuse(ftsResults, vecResults, rrfK, limit) {
|
|
|
117
124
|
section_path: r.section_path,
|
|
118
125
|
}));
|
|
119
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Fuse N lists of HybridResult via RRF (D38, multi-query expansion).
|
|
129
|
+
*
|
|
130
|
+
* Generalizes the 2-list `rrfFuse` to arbitrary N lists. Each list
|
|
131
|
+
* assigns 1-based ranks; scores accumulate across all lists a result
|
|
132
|
+
* appears in.
|
|
133
|
+
*/
|
|
134
|
+
export function rrfFuseMulti(lists, rrfK, limit) {
|
|
135
|
+
const merged = new Map();
|
|
136
|
+
for (const list of lists) {
|
|
137
|
+
for (let i = 0; i < list.length; i++) {
|
|
138
|
+
const r = list[i];
|
|
139
|
+
const rrfScore = 1 / (rrfK + (i + 1));
|
|
140
|
+
const existing = merged.get(r.id);
|
|
141
|
+
if (existing) {
|
|
142
|
+
existing._rrfScore += rrfScore;
|
|
143
|
+
if (r.snippet && !existing.snippet)
|
|
144
|
+
existing.snippet = r.snippet;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
merged.set(r.id, {
|
|
148
|
+
id: r.id,
|
|
149
|
+
text: r.text,
|
|
150
|
+
source_uri: r.source_uri,
|
|
151
|
+
node_id: r.node_id,
|
|
152
|
+
score: 0,
|
|
153
|
+
snippet: r.snippet,
|
|
154
|
+
confidence: r.confidence,
|
|
155
|
+
title: r.title ?? null,
|
|
156
|
+
section_path: r.section_path ?? '',
|
|
157
|
+
_rrfScore: rrfScore,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const sorted = [...merged.values()].sort((a, b) => b._rrfScore - a._rrfScore);
|
|
163
|
+
return sorted.slice(0, limit).map((r) => ({
|
|
164
|
+
id: r.id,
|
|
165
|
+
text: r.text,
|
|
166
|
+
source_uri: r.source_uri,
|
|
167
|
+
node_id: r.node_id,
|
|
168
|
+
score: r._rrfScore,
|
|
169
|
+
snippet: r.snippet,
|
|
170
|
+
confidence: r.confidence,
|
|
171
|
+
title: r.title,
|
|
172
|
+
section_path: r.section_path,
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
120
175
|
//# sourceMappingURL=hybrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid.js","sourceRoot":"","sources":["../../src/retrieval/hybrid.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAkB,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,SAAS,EAAkB,MAAM,UAAU,CAAC;AAErD;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,aAAa,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"hybrid.js","sourceRoot":"","sources":["../../src/retrieval/hybrid.ts"],"names":[],"mappings":"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"}
|