@delali/narsil 0.1.15 → 0.2.1-next.25
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/NOTICE +54 -0
- package/README.md +38 -982
- package/dist/adapters/filesystem.d.ts +23 -1
- package/dist/adapters/filesystem.mjs +1 -1
- package/dist/adapters/indexeddb.d.ts +25 -1
- package/dist/adapters/indexeddb.mjs +1 -1
- package/dist/adapters/memory.d.ts +14 -1
- package/dist/adapters-CVqI5NBt.d.ts +149 -0
- package/dist/{chunk-HMO6OMZ3.mjs → chunk-ASI6AOW2.mjs} +1073 -506
- package/dist/{chunk-HRABJLPB.mjs → chunk-BKAI2WXI.mjs} +1 -0
- package/dist/{chunk-WISGW24C.mjs → chunk-FKK76OR7.mjs} +56 -55
- package/dist/chunk-GHJWC2E5.mjs +9 -0
- package/dist/chunk-KH3YGMVT.mjs +15 -0
- package/dist/chunk-TGP5M5R7.mjs +880 -0
- package/dist/chunk-U2BKYEC7.mjs +254 -0
- package/dist/{chunk-ALB35PRQ.mjs → chunk-UNJZ7ZDB.mjs} +18 -0
- package/dist/{chunk-MEW7HD75.mjs → chunk-WLR5BFL3.mjs} +2557 -1166
- package/dist/config-CAjTHzkH.d.ts +256 -0
- package/dist/direct-executor-3W4QRA4E.mjs +5 -0
- package/dist/distribution/coordinator/etcd.d.ts +44 -3
- package/dist/distribution/coordinator/etcd.mjs +2 -2
- package/dist/distribution/coordinator/in-memory.d.ts +14 -3
- package/dist/distribution.d.ts +318 -45
- package/dist/distribution.mjs +1875 -1772
- package/dist/embeddings/openai.d.ts +28 -1
- package/dist/embeddings/openai.mjs +1 -1
- package/dist/engine-CCrlfLyq.d.ts +431 -0
- package/dist/index.browser.mjs +4571 -1776
- package/dist/index.d.ts +180 -6
- package/dist/index.mjs +6 -5
- package/dist/invalidation/broadcast-channel.d.ts +20 -1
- package/dist/invalidation/filesystem.d.ts +24 -1
- package/dist/invalidation/noop.d.ts +14 -1
- package/dist/language-DB8KG1z5.d.ts +53 -0
- package/dist/languages/albanian.d.ts +15 -0
- package/dist/languages/albanian.mjs +103 -0
- package/dist/languages/amharic.d.ts +15 -0
- package/dist/languages/amharic.mjs +240 -0
- package/dist/languages/arabic.d.ts +10 -1
- package/dist/languages/arabic.mjs +939 -154
- package/dist/languages/armenian.d.ts +10 -1
- package/dist/languages/armenian.mjs +275 -243
- package/dist/languages/azerbaijani.d.ts +15 -0
- package/dist/languages/azerbaijani.mjs +152 -0
- package/dist/languages/bambara.d.ts +15 -0
- package/dist/languages/bambara.mjs +60 -0
- package/dist/languages/basque.d.ts +14 -0
- package/dist/languages/basque.mjs +726 -0
- package/dist/languages/belarusian.d.ts +15 -0
- package/dist/languages/belarusian.mjs +100 -0
- package/dist/languages/bengali.d.ts +15 -0
- package/dist/languages/bengali.mjs +128 -0
- package/dist/languages/bosnian.d.ts +15 -0
- package/dist/languages/bosnian.mjs +197 -0
- package/dist/languages/breton.d.ts +15 -0
- package/dist/languages/breton.mjs +96 -0
- package/dist/languages/bulgarian.d.ts +10 -1
- package/dist/languages/bulgarian.mjs +11 -2
- package/dist/languages/burmese.d.ts +15 -0
- package/dist/languages/burmese.mjs +57 -0
- package/dist/languages/catalan.d.ts +14 -0
- package/dist/languages/catalan.mjs +987 -0
- package/dist/languages/chinese.d.ts +11 -1
- package/dist/languages/chinese.mjs +4 -3
- package/dist/languages/croatian.d.ts +15 -0
- package/dist/languages/croatian.mjs +191 -0
- package/dist/languages/czech.d.ts +14 -0
- package/dist/languages/czech.mjs +628 -0
- package/dist/languages/dagbani.d.ts +11 -1
- package/dist/languages/dagbani.mjs +11 -2
- package/dist/languages/danish.d.ts +10 -1
- package/dist/languages/danish.mjs +215 -110
- package/dist/languages/dutch.d.ts +10 -1
- package/dist/languages/dutch.mjs +1248 -163
- package/dist/languages/english.d.ts +10 -1
- package/dist/languages/english.mjs +2 -1
- package/dist/languages/esperanto.d.ts +14 -0
- package/dist/languages/esperanto.mjs +689 -0
- package/dist/languages/estonian.d.ts +14 -0
- package/dist/languages/estonian.mjs +2160 -0
- package/dist/languages/ewe.d.ts +11 -1
- package/dist/languages/ewe.mjs +11 -2
- package/dist/languages/faroese.d.ts +15 -0
- package/dist/languages/faroese.mjs +93 -0
- package/dist/languages/fijian.d.ts +15 -0
- package/dist/languages/fijian.mjs +55 -0
- package/dist/languages/finnish.d.ts +10 -1
- package/dist/languages/finnish.mjs +528 -263
- package/dist/languages/french.d.ts +10 -1
- package/dist/languages/french.mjs +950 -437
- package/dist/languages/ga.d.ts +11 -1
- package/dist/languages/ga.mjs +2 -1
- package/dist/languages/galician.d.ts +15 -0
- package/dist/languages/galician.mjs +172 -0
- package/dist/languages/georgian.d.ts +15 -0
- package/dist/languages/georgian.mjs +91 -0
- package/dist/languages/german.d.ts +10 -1
- package/dist/languages/german.mjs +432 -162
- package/dist/languages/greek.d.ts +10 -1
- package/dist/languages/greek.mjs +1970 -281
- package/dist/languages/guarani.d.ts +15 -0
- package/dist/languages/guarani.mjs +132 -0
- package/dist/languages/gujarati.d.ts +15 -0
- package/dist/languages/gujarati.mjs +234 -0
- package/dist/languages/haitian-creole.d.ts +15 -0
- package/dist/languages/haitian-creole.mjs +106 -0
- package/dist/languages/hausa.d.ts +11 -1
- package/dist/languages/hausa.mjs +2 -1
- package/dist/languages/hawaiian.d.ts +15 -0
- package/dist/languages/hawaiian.mjs +69 -0
- package/dist/languages/hebrew.d.ts +15 -0
- package/dist/languages/hebrew.mjs +213 -0
- package/dist/languages/hindi.d.ts +10 -1
- package/dist/languages/hindi.mjs +175 -97
- package/dist/languages/hungarian.d.ts +10 -1
- package/dist/languages/hungarian.mjs +412 -326
- package/dist/languages/icelandic.d.ts +15 -0
- package/dist/languages/icelandic.mjs +161 -0
- package/dist/languages/igbo.d.ts +11 -1
- package/dist/languages/igbo.mjs +2 -1
- package/dist/languages/indonesian.d.ts +10 -1
- package/dist/languages/indonesian.mjs +329 -137
- package/dist/languages/irish.d.ts +10 -1
- package/dist/languages/irish.mjs +223 -139
- package/dist/languages/italian.d.ts +10 -1
- package/dist/languages/italian.mjs +703 -406
- package/dist/languages/japanese.d.ts +11 -1
- package/dist/languages/japanese.mjs +5 -108
- package/dist/languages/kannada.d.ts +15 -0
- package/dist/languages/kannada.mjs +94 -0
- package/dist/languages/kazakh.d.ts +15 -0
- package/dist/languages/kazakh.mjs +90 -0
- package/dist/languages/khmer.d.ts +15 -0
- package/dist/languages/khmer.mjs +181 -0
- package/dist/languages/kinyarwanda.d.ts +15 -0
- package/dist/languages/kinyarwanda.mjs +99 -0
- package/dist/languages/kirundi.d.ts +15 -0
- package/dist/languages/kirundi.mjs +92 -0
- package/dist/languages/korean.d.ts +15 -0
- package/dist/languages/korean.mjs +252 -0
- package/dist/languages/kurmanji.d.ts +15 -0
- package/dist/languages/kurmanji.mjs +50 -0
- package/dist/languages/kyrgyz.d.ts +15 -0
- package/dist/languages/kyrgyz.mjs +108 -0
- package/dist/languages/lao.d.ts +15 -0
- package/dist/languages/lao.mjs +63 -0
- package/dist/languages/latin.d.ts +15 -0
- package/dist/languages/latin.mjs +69 -0
- package/dist/languages/latvian.d.ts +15 -0
- package/dist/languages/latvian.mjs +173 -0
- package/dist/languages/lingala.d.ts +15 -0
- package/dist/languages/lingala.mjs +61 -0
- package/dist/languages/lithuanian.d.ts +14 -0
- package/dist/languages/lithuanian.mjs +571 -0
- package/dist/languages/luxembourgish.d.ts +15 -0
- package/dist/languages/luxembourgish.mjs +214 -0
- package/dist/languages/macedonian.d.ts +15 -0
- package/dist/languages/macedonian.mjs +808 -0
- package/dist/languages/malagasy.d.ts +15 -0
- package/dist/languages/malagasy.mjs +67 -0
- package/dist/languages/malay.d.ts +15 -0
- package/dist/languages/malay.mjs +482 -0
- package/dist/languages/malayalam.d.ts +15 -0
- package/dist/languages/malayalam.mjs +122 -0
- package/dist/languages/maltese.d.ts +15 -0
- package/dist/languages/maltese.mjs +139 -0
- package/dist/languages/maori.d.ts +15 -0
- package/dist/languages/maori.mjs +79 -0
- package/dist/languages/marathi.d.ts +15 -0
- package/dist/languages/marathi.mjs +111 -0
- package/dist/languages/nepali.d.ts +10 -1
- package/dist/languages/nepali.mjs +209 -99
- package/dist/languages/norwegian.d.ts +10 -1
- package/dist/languages/norwegian.mjs +218 -85
- package/dist/languages/oromo.d.ts +15 -0
- package/dist/languages/oromo.mjs +78 -0
- package/dist/languages/persian.d.ts +14 -0
- package/dist/languages/persian.mjs +710 -0
- package/dist/languages/polish.d.ts +14 -0
- package/dist/languages/polish.mjs +614 -0
- package/dist/languages/portuguese.d.ts +10 -1
- package/dist/languages/portuguese.mjs +613 -380
- package/dist/languages/punjabi.d.ts +15 -0
- package/dist/languages/punjabi.mjs +197 -0
- package/dist/languages/romanian.d.ts +10 -1
- package/dist/languages/romanian.mjs +561 -382
- package/dist/languages/russian.d.ts +10 -1
- package/dist/languages/russian.mjs +373 -244
- package/dist/languages/samoan.d.ts +15 -0
- package/dist/languages/samoan.mjs +63 -0
- package/dist/languages/sanskrit.d.ts +10 -1
- package/dist/languages/sanskrit.mjs +2 -2
- package/dist/languages/scottish-gaelic.d.ts +15 -0
- package/dist/languages/scottish-gaelic.mjs +370 -0
- package/dist/languages/serbian.d.ts +10 -1
- package/dist/languages/serbian.mjs +3635 -155
- package/dist/languages/shona.d.ts +15 -0
- package/dist/languages/shona.mjs +91 -0
- package/dist/languages/sinhala.d.ts +15 -0
- package/dist/languages/sinhala.mjs +182 -0
- package/dist/languages/slovak.d.ts +15 -0
- package/dist/languages/slovak.mjs +430 -0
- package/dist/languages/slovenian.d.ts +10 -1
- package/dist/languages/slovenian.mjs +11 -2
- package/dist/languages/sorani.d.ts +15 -0
- package/dist/languages/sorani.mjs +156 -0
- package/dist/languages/spanish.d.ts +10 -1
- package/dist/languages/spanish.mjs +676 -374
- package/dist/languages/swahili.d.ts +10 -1
- package/dist/languages/swahili.mjs +2 -1
- package/dist/languages/swedish.d.ts +10 -1
- package/dist/languages/swedish.mjs +237 -95
- package/dist/languages/tagalog.d.ts +15 -0
- package/dist/languages/tagalog.mjs +159 -0
- package/dist/languages/tamil.d.ts +10 -1
- package/dist/languages/tamil.mjs +836 -64
- package/dist/languages/tatar.d.ts +15 -0
- package/dist/languages/tatar.mjs +1017 -0
- package/dist/languages/telugu.d.ts +15 -0
- package/dist/languages/telugu.mjs +62 -0
- package/dist/languages/thai.d.ts +15 -0
- package/dist/languages/thai.mjs +65 -0
- package/dist/languages/tibetan.d.ts +15 -0
- package/dist/languages/tibetan.mjs +119 -0
- package/dist/languages/tigrinya.d.ts +15 -0
- package/dist/languages/tigrinya.mjs +194 -0
- package/dist/languages/tongan.d.ts +15 -0
- package/dist/languages/tongan.mjs +56 -0
- package/dist/languages/turkish.d.ts +10 -1
- package/dist/languages/turkish.mjs +1246 -393
- package/dist/languages/twi.d.ts +11 -1
- package/dist/languages/twi.mjs +13 -2
- package/dist/languages/ukrainian.d.ts +10 -1
- package/dist/languages/ukrainian.mjs +125 -47
- package/dist/languages/urdu.d.ts +15 -0
- package/dist/languages/urdu.mjs +528 -0
- package/dist/languages/vietnamese.d.ts +15 -0
- package/dist/languages/vietnamese.mjs +277 -0
- package/dist/languages/welsh.d.ts +15 -0
- package/dist/languages/welsh.mjs +446 -0
- package/dist/languages/wolof.d.ts +15 -0
- package/dist/languages/wolof.mjs +79 -0
- package/dist/languages/xhosa.d.ts +15 -0
- package/dist/languages/xhosa.mjs +95 -0
- package/dist/languages/yoruba.d.ts +11 -1
- package/dist/languages/yoruba.mjs +1 -0
- package/dist/languages/zulu.d.ts +11 -1
- package/dist/languages/zulu.mjs +2 -1
- package/dist/persistence/durability/checkpoint-worker.d.ts +13 -0
- package/dist/persistence/durability/checkpoint-worker.mjs +6 -5
- package/dist/schema-CE6S_aAr.d.ts +208 -0
- package/dist/search-CgQQIciB.d.ts +786 -0
- package/dist/server.d.ts +214 -12
- package/dist/server.mjs +41 -2
- package/dist/types-BV3nAKTL.d.ts +302 -0
- package/dist/vector/hnsw-build-worker.d.ts +68 -2
- package/dist/vector/hnsw-build-worker.mjs +0 -2
- package/dist/workers/entry.mjs +2 -2
- package/package.json +14 -4
- package/dist/adapters-Bo2JQg8b.d.ts +0 -37
- package/dist/chunk-TW6BXTOL.mjs +0 -338
- package/dist/config-CojEPOgS.d.ts +0 -481
- package/dist/direct-executor-E52FFGDE.mjs +0 -4
- package/dist/language-ONQ3iVDf.d.ts +0 -14
- package/dist/narsil-D-84Nvm4.d.ts +0 -72
- package/dist/schema-DCgkO1j4.d.ts +0 -65
- package/dist/types-DHX6zGeD.d.ts +0 -73
|
@@ -1,8 +1,30 @@
|
|
|
1
|
-
import { b as PersistenceAdapter } from '../adapters-
|
|
1
|
+
import { b as PersistenceAdapter } from '../adapters-CVqI5NBt.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Where {@link createFilesystemPersistence} writes its partitions.
|
|
5
|
+
*
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
3
8
|
interface FilesystemPersistenceConfig {
|
|
9
|
+
/** The adapter writes every partition under this directory. It creates the directory, and it refuses any key that would escape it. */
|
|
4
10
|
directory: string;
|
|
5
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Builds a persistence adapter that writes each partition to its own file, so
|
|
14
|
+
* an index comes back after a restart.
|
|
15
|
+
*
|
|
16
|
+
* The adapter writes each partition to a temporary file, flushes it to the
|
|
17
|
+
* disk, and renames it into place, which is what keeps a crash mid-write from
|
|
18
|
+
* leaving a half-written partition behind. It refuses a key that would escape
|
|
19
|
+
* the configured directory.
|
|
20
|
+
*
|
|
21
|
+
* @param config - The directory this adapter writes partitions under.
|
|
22
|
+
* @returns An adapter you pass as `persistence` when creating an engine.
|
|
23
|
+
* @throws A `NarsilError` with `PERSISTENCE_SAVE_FAILED` when the directory is
|
|
24
|
+
* empty or blank.
|
|
25
|
+
*
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
6
28
|
declare function createFilesystemPersistence(config: FilesystemPersistenceConfig): PersistenceAdapter;
|
|
7
29
|
|
|
8
30
|
export { type FilesystemPersistenceConfig, createFilesystemPersistence };
|
|
@@ -1,9 +1,33 @@
|
|
|
1
|
-
import { b as PersistenceAdapter } from '../adapters-
|
|
1
|
+
import { b as PersistenceAdapter } from '../adapters-CVqI5NBt.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Which IndexedDB database and object store
|
|
5
|
+
* {@link createIndexedDBPersistence} writes to.
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
3
9
|
interface IndexedDBPersistenceConfig {
|
|
10
|
+
/** The adapter opens this database, and opens `narsil` by default. */
|
|
4
11
|
dbName?: string;
|
|
12
|
+
/** The adapter writes partitions to this object store, and to `partitions` by default. */
|
|
5
13
|
storeName?: string;
|
|
6
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Builds a persistence adapter that writes partitions to IndexedDB, so an
|
|
17
|
+
* index in a browser survives a reload.
|
|
18
|
+
*
|
|
19
|
+
* The adapter opens the database on its first call and keeps the handle, so
|
|
20
|
+
* creating it costs nothing until the engine writes.
|
|
21
|
+
*
|
|
22
|
+
* @param config - The database and object store to use. Omit it to accept the
|
|
23
|
+
* defaults.
|
|
24
|
+
* @returns An adapter you pass as `persistence` when creating an engine.
|
|
25
|
+
* @throws A `NarsilError` with `PERSISTENCE_SAVE_FAILED` in a runtime without
|
|
26
|
+
* IndexedDB, where {@link createMemoryPersistence} or
|
|
27
|
+
* {@link createFilesystemPersistence} applies instead.
|
|
28
|
+
*
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
7
31
|
declare function createIndexedDBPersistence(config?: IndexedDBPersistenceConfig): PersistenceAdapter;
|
|
8
32
|
|
|
9
33
|
export { type IndexedDBPersistenceConfig, createIndexedDBPersistence };
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
import { b as PersistenceAdapter } from '../adapters-
|
|
1
|
+
import { b as PersistenceAdapter } from '../adapters-CVqI5NBt.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Builds a persistence adapter that keeps every partition in a map, which is
|
|
5
|
+
* what tests and short-lived processes want.
|
|
6
|
+
*
|
|
7
|
+
* Nothing survives the process, so reach for
|
|
8
|
+
* {@link createFilesystemPersistence} or
|
|
9
|
+
* {@link createIndexedDBPersistence} when an index has to come back after a
|
|
10
|
+
* restart.
|
|
11
|
+
*
|
|
12
|
+
* @returns An adapter you pass as `persistence` when creating an engine.
|
|
13
|
+
*
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
3
16
|
declare function createMemoryPersistence(): PersistenceAdapter;
|
|
4
17
|
|
|
5
18
|
export { createMemoryPersistence };
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the engine writes partitions so that they outlive the process.
|
|
3
|
+
*
|
|
4
|
+
* Every method addresses a partition by an opaque key, so any key-value store
|
|
5
|
+
* works: memory, the filesystem, IndexedDB, or a service you write yourself.
|
|
6
|
+
* The engine never interprets a key beyond the prefix it lists by.
|
|
7
|
+
*
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
interface PersistenceAdapter {
|
|
11
|
+
/**
|
|
12
|
+
* Writes one partition, replacing whatever the key already held.
|
|
13
|
+
*
|
|
14
|
+
* @param key - The key the engine reads this partition back under.
|
|
15
|
+
* @param data - The serialised partition.
|
|
16
|
+
*/
|
|
17
|
+
save(key: string, data: Uint8Array): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Reads one partition back.
|
|
20
|
+
*
|
|
21
|
+
* @param key - The key a matching {@link PersistenceAdapter.save} wrote.
|
|
22
|
+
* @returns The stored bytes, or `null` when the key holds nothing.
|
|
23
|
+
*/
|
|
24
|
+
load(key: string): Promise<Uint8Array | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Removes one partition. A key that holds nothing is not an error.
|
|
27
|
+
*
|
|
28
|
+
* @param key - The key to clear.
|
|
29
|
+
*/
|
|
30
|
+
delete(key: string): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Lists the keys the store holds under a prefix, which is how the engine
|
|
33
|
+
* finds an index's partitions on start-up.
|
|
34
|
+
*
|
|
35
|
+
* @param prefix - Matched against the start of each key.
|
|
36
|
+
* @returns Every matching key, in any order.
|
|
37
|
+
*/
|
|
38
|
+
list(prefix: string): Promise<string[]>;
|
|
39
|
+
/** This adapter writes to this directory, when a filesystem backs it. */
|
|
40
|
+
readonly directory?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Carries partition changes between engine instances that share one store.
|
|
44
|
+
*
|
|
45
|
+
* Two processes reading the same persisted index each hold their own copy in
|
|
46
|
+
* memory, so a write in one has to reach the other. Publish an event on every
|
|
47
|
+
* write and each subscriber reloads the partitions that event names.
|
|
48
|
+
*
|
|
49
|
+
* @public
|
|
50
|
+
*/
|
|
51
|
+
interface InvalidationAdapter {
|
|
52
|
+
/**
|
|
53
|
+
* Broadcasts one change to every other subscriber.
|
|
54
|
+
*
|
|
55
|
+
* @param event - The partitions that changed, or the statistics that moved.
|
|
56
|
+
*/
|
|
57
|
+
publish(event: InvalidationEvent): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Starts delivering the events other instances publish.
|
|
60
|
+
*
|
|
61
|
+
* @param handler - Called once per event.
|
|
62
|
+
*/
|
|
63
|
+
subscribe(handler: (event: InvalidationEvent) => void): Promise<void>;
|
|
64
|
+
/** Closes the channel and releases whatever it held open. */
|
|
65
|
+
shutdown(): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* What one instance tells the others about a change it made.
|
|
69
|
+
*
|
|
70
|
+
* A `partition` event names the partitions a subscriber must reload. A
|
|
71
|
+
* `statistics` event carries the term counts that keep BM25 scores comparable
|
|
72
|
+
* across instances.
|
|
73
|
+
*
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
type InvalidationEvent = {
|
|
77
|
+
/** This marks the event as a set of partitions to reload. */
|
|
78
|
+
type: 'partition';
|
|
79
|
+
/** The partitions belong to this index. */
|
|
80
|
+
indexName: string;
|
|
81
|
+
/** These partition ids changed. */
|
|
82
|
+
partitions: number[];
|
|
83
|
+
/** The publisher stamped the event at this many milliseconds since the epoch, which lets a subscriber drop a late one. */
|
|
84
|
+
timestamp: number;
|
|
85
|
+
/** This instance published the event, so a subscriber can skip its own. */
|
|
86
|
+
sourceInstanceId: string;
|
|
87
|
+
} | {
|
|
88
|
+
/** This marks the event as a statistics update. */
|
|
89
|
+
type: 'statistics';
|
|
90
|
+
/** The statistics describe this index. */
|
|
91
|
+
indexName: string;
|
|
92
|
+
/** The statistics were measured on this instance. */
|
|
93
|
+
instanceId: string;
|
|
94
|
+
/** That instance holds these term counts. */
|
|
95
|
+
stats: PartitionStatistics;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* The term counts one instance holds, which the others fold into their own so
|
|
99
|
+
* that BM25 scores stay comparable across a shared index.
|
|
100
|
+
*
|
|
101
|
+
* @public
|
|
102
|
+
*/
|
|
103
|
+
interface PartitionStatistics {
|
|
104
|
+
/** This instance holds this many documents for the index. */
|
|
105
|
+
totalDocs: number;
|
|
106
|
+
/** Each term appears in this many documents, keyed by term. */
|
|
107
|
+
docFrequencies: Record<string, number>;
|
|
108
|
+
/** Each field holds this many tokens in total, which gives BM25 its average field length. */
|
|
109
|
+
totalFieldLengths: Record<string, number>;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Turns text into vectors, so an index embeds documents as they arrive and
|
|
113
|
+
* embeds a query as it runs.
|
|
114
|
+
*
|
|
115
|
+
* Write one against any model you like. The engine calls it on every write to
|
|
116
|
+
* a field the index maps, and on every vector query that passes `text`.
|
|
117
|
+
*
|
|
118
|
+
* @public
|
|
119
|
+
*/
|
|
120
|
+
interface EmbeddingAdapter {
|
|
121
|
+
/**
|
|
122
|
+
* Embeds one string.
|
|
123
|
+
*
|
|
124
|
+
* @param input - The text to embed.
|
|
125
|
+
* @param purpose - `document` on a write and `query` on a search, which lets
|
|
126
|
+
* an asymmetric model pick the right prompt or prefix.
|
|
127
|
+
* @param signal - Aborts a call the engine no longer needs.
|
|
128
|
+
* @returns The vector, whose length must equal
|
|
129
|
+
* {@link EmbeddingAdapter.dimensions}.
|
|
130
|
+
*/
|
|
131
|
+
embed(input: string, purpose: 'document' | 'query', signal?: AbortSignal): Promise<Float32Array>;
|
|
132
|
+
/**
|
|
133
|
+
* Embeds many strings in one call, which a batch load uses when the adapter
|
|
134
|
+
* offers it. The engine falls back to {@link EmbeddingAdapter.embed} per
|
|
135
|
+
* item when it is absent.
|
|
136
|
+
*
|
|
137
|
+
* @param inputs - The texts to embed.
|
|
138
|
+
* @param purpose - `document` on a write and `query` on a search.
|
|
139
|
+
* @param signal - Aborts a call the engine no longer needs.
|
|
140
|
+
* @returns One vector per input, in the same order.
|
|
141
|
+
*/
|
|
142
|
+
embedBatch?(inputs: string[], purpose: 'document' | 'query', signal?: AbortSignal): Promise<Float32Array[]>;
|
|
143
|
+
/** Every vector this adapter returns is this long, which must match the schema's `vector[N]`. */
|
|
144
|
+
readonly dimensions: number;
|
|
145
|
+
/** Releases whatever the adapter holds open, such as a model or a connection pool. */
|
|
146
|
+
shutdown?(): Promise<void>;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export type { EmbeddingAdapter as E, InvalidationAdapter as I, PartitionStatistics as P, InvalidationEvent as a, PersistenceAdapter as b };
|