vectra 0.12.2 → 0.14.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/LICENSE +1 -1
- package/README.md +92 -100
- package/bin/vectra.js +3 -0
- package/lib/BrowserWebFetcher.d.ts +75 -0
- package/lib/BrowserWebFetcher.d.ts.map +1 -0
- package/lib/BrowserWebFetcher.js +290 -0
- package/lib/BrowserWebFetcher.js.map +1 -0
- package/lib/FileFetcher.d.ts +5 -0
- package/lib/FileFetcher.d.ts.map +1 -0
- package/lib/FileFetcher.js +89 -0
- package/lib/FileFetcher.js.map +1 -0
- package/lib/FileFetcher.spec.d.ts +2 -0
- package/lib/FileFetcher.spec.d.ts.map +1 -0
- package/lib/FileFetcher.spec.js +244 -0
- package/lib/FileFetcher.spec.js.map +1 -0
- package/lib/FolderWatcher.d.ts +91 -0
- package/lib/FolderWatcher.d.ts.map +1 -0
- package/lib/FolderWatcher.js +304 -0
- package/lib/FolderWatcher.js.map +1 -0
- package/lib/FolderWatcher.spec.d.ts +2 -0
- package/lib/FolderWatcher.spec.d.ts.map +1 -0
- package/lib/FolderWatcher.spec.js +308 -0
- package/lib/FolderWatcher.spec.js.map +1 -0
- package/lib/GPT3Tokenizer.d.ts +9 -0
- package/lib/GPT3Tokenizer.spec.d.ts +2 -0
- package/lib/GPT3Tokenizer.spec.d.ts.map +1 -0
- package/lib/GPT3Tokenizer.spec.js +45 -0
- package/lib/GPT3Tokenizer.spec.js.map +1 -0
- package/lib/ItemSelector.d.ts +41 -0
- package/lib/ItemSelector.d.ts.map +1 -0
- package/lib/ItemSelector.js +179 -0
- package/lib/ItemSelector.js.map +1 -0
- package/lib/ItemSelector.spec.d.ts +2 -0
- package/lib/ItemSelector.spec.d.ts.map +1 -0
- package/lib/ItemSelector.spec.js +204 -0
- package/lib/ItemSelector.spec.js.map +1 -0
- package/lib/LocalDocument.d.ts +54 -0
- package/lib/LocalDocument.d.ts.map +1 -1
- package/lib/LocalDocument.js +116 -0
- package/lib/LocalDocument.js.map +1 -0
- package/lib/LocalDocument.spec.d.ts +2 -0
- package/lib/LocalDocument.spec.d.ts.map +1 -0
- package/lib/LocalDocument.spec.js +214 -0
- package/lib/LocalDocument.spec.js.map +1 -0
- package/lib/LocalDocumentIndex.d.ts +152 -0
- package/lib/LocalDocumentIndex.d.ts.map +1 -1
- package/lib/LocalDocumentIndex.js +420 -0
- package/lib/LocalDocumentIndex.js.map +1 -0
- package/lib/LocalDocumentIndex.spec.d.ts +2 -0
- package/lib/LocalDocumentIndex.spec.d.ts.map +1 -0
- package/lib/LocalDocumentIndex.spec.js +494 -0
- package/lib/LocalDocumentIndex.spec.js.map +1 -0
- package/lib/LocalDocumentResult.d.ts +66 -0
- package/lib/LocalDocumentResult.d.ts.map +1 -1
- package/lib/LocalDocumentResult.js +376 -0
- package/lib/LocalDocumentResult.js.map +1 -0
- package/lib/LocalDocumentResult.spec.d.ts +2 -0
- package/lib/LocalDocumentResult.spec.d.ts.map +1 -0
- package/lib/LocalDocumentResult.spec.js +373 -0
- package/lib/LocalDocumentResult.spec.js.map +1 -0
- package/lib/LocalEmbeddings.d.ts +59 -0
- package/lib/LocalEmbeddings.d.ts.map +1 -0
- package/lib/LocalEmbeddings.js +101 -0
- package/lib/LocalEmbeddings.js.map +1 -0
- package/lib/LocalEmbeddings.spec.d.ts +2 -0
- package/lib/LocalEmbeddings.spec.d.ts.map +1 -0
- package/lib/LocalEmbeddings.spec.js +155 -0
- package/lib/LocalEmbeddings.spec.js.map +1 -0
- package/lib/LocalIndex.d.ts +159 -0
- package/lib/LocalIndex.d.ts.map +1 -1
- package/lib/LocalIndex.js +519 -0
- package/lib/LocalIndex.js.map +1 -0
- package/lib/LocalIndex.spec.d.ts +2 -0
- package/lib/LocalIndex.spec.js +611 -9
- package/lib/LocalIndex.spec.js.map +1 -1
- package/lib/OpenAIEmbeddings.d.ts +124 -0
- package/lib/OpenAIEmbeddings.d.ts.map +1 -0
- package/lib/OpenAIEmbeddings.js +166 -0
- package/lib/OpenAIEmbeddings.js.map +1 -0
- package/lib/OpenAIEmbeddings.spec.d.ts +2 -0
- package/lib/OpenAIEmbeddings.spec.d.ts.map +1 -0
- package/lib/OpenAIEmbeddings.spec.js +298 -0
- package/lib/OpenAIEmbeddings.spec.js.map +1 -0
- package/lib/TextSplitter.d.ts +21 -0
- package/lib/TextSplitter.d.ts.map +1 -1
- package/lib/TextSplitter.js +500 -0
- package/lib/TextSplitter.js.map +1 -0
- package/lib/TextSplitter.spec.d.ts +2 -0
- package/lib/TextSplitter.spec.d.ts.map +1 -0
- package/lib/TextSplitter.spec.js +337 -0
- package/lib/TextSplitter.spec.js.map +1 -0
- package/lib/TransformersEmbeddings.d.ts +121 -0
- package/lib/TransformersEmbeddings.d.ts.map +1 -0
- package/lib/TransformersEmbeddings.js +176 -0
- package/lib/TransformersEmbeddings.js.map +1 -0
- package/lib/TransformersEmbeddings.spec.d.ts +2 -0
- package/lib/TransformersEmbeddings.spec.d.ts.map +1 -0
- package/lib/TransformersEmbeddings.spec.js +198 -0
- package/lib/TransformersEmbeddings.spec.js.map +1 -0
- package/lib/TransformersTokenizer.d.ts +33 -0
- package/lib/TransformersTokenizer.d.ts.map +1 -0
- package/lib/TransformersTokenizer.js +44 -0
- package/lib/TransformersTokenizer.js.map +1 -0
- package/lib/TransformersTokenizer.spec.d.ts +2 -0
- package/lib/TransformersTokenizer.spec.d.ts.map +1 -0
- package/lib/TransformersTokenizer.spec.js +112 -0
- package/lib/TransformersTokenizer.spec.js.map +1 -0
- package/lib/WebFetcher.d.ts +14 -0
- package/lib/WebFetcher.d.ts.map +1 -0
- package/lib/WebFetcher.js +238 -0
- package/lib/WebFetcher.js.map +1 -0
- package/lib/WebFetcher.spec.d.ts +2 -0
- package/lib/WebFetcher.spec.d.ts.map +1 -0
- package/lib/WebFetcher.spec.js +263 -0
- package/lib/WebFetcher.spec.js.map +1 -0
- package/lib/browser.d.ts +30 -0
- package/lib/browser.d.ts.map +1 -0
- package/lib/browser.js +52 -0
- package/lib/browser.js.map +1 -0
- package/lib/codecs/IndexCodec.d.ts +37 -0
- package/lib/codecs/IndexCodec.d.ts.map +1 -0
- package/lib/codecs/IndexCodec.js +3 -0
- package/lib/codecs/IndexCodec.js.map +1 -0
- package/lib/codecs/JsonCodec.d.ts +19 -0
- package/lib/codecs/JsonCodec.d.ts.map +1 -0
- package/lib/codecs/JsonCodec.js +35 -0
- package/lib/codecs/JsonCodec.js.map +1 -0
- package/lib/codecs/JsonCodec.spec.d.ts +2 -0
- package/lib/codecs/JsonCodec.spec.d.ts.map +1 -0
- package/lib/codecs/JsonCodec.spec.js +66 -0
- package/lib/codecs/JsonCodec.spec.js.map +1 -0
- package/lib/codecs/LocalIndex.protobuf.spec.d.ts +2 -0
- package/lib/codecs/LocalIndex.protobuf.spec.d.ts.map +1 -0
- package/lib/codecs/LocalIndex.protobuf.spec.js +108 -0
- package/lib/codecs/LocalIndex.protobuf.spec.js.map +1 -0
- package/lib/codecs/ProtobufCodec.d.ts +20 -0
- package/lib/codecs/ProtobufCodec.d.ts.map +1 -0
- package/lib/codecs/ProtobufCodec.js +225 -0
- package/lib/codecs/ProtobufCodec.js.map +1 -0
- package/lib/codecs/ProtobufCodec.spec.d.ts +2 -0
- package/lib/codecs/ProtobufCodec.spec.d.ts.map +1 -0
- package/lib/codecs/ProtobufCodec.spec.js +155 -0
- package/lib/codecs/ProtobufCodec.spec.js.map +1 -0
- package/lib/codecs/index.d.ts +5 -0
- package/lib/codecs/index.d.ts.map +1 -0
- package/lib/codecs/index.js +21 -0
- package/lib/codecs/index.js.map +1 -0
- package/lib/codecs/migrateIndex.d.ts +24 -0
- package/lib/codecs/migrateIndex.d.ts.map +1 -0
- package/lib/codecs/migrateIndex.js +119 -0
- package/lib/codecs/migrateIndex.js.map +1 -0
- package/lib/codecs/migrateIndex.spec.d.ts +2 -0
- package/lib/codecs/migrateIndex.spec.d.ts.map +1 -0
- package/lib/codecs/migrateIndex.spec.js +151 -0
- package/lib/codecs/migrateIndex.spec.js.map +1 -0
- package/lib/codecs/schemas/index.proto +34 -0
- package/lib/index.d.ts +20 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +36 -0
- package/lib/index.js.map +1 -0
- package/lib/internals/Colorize.d.ts +14 -0
- package/lib/internals/Colorize.d.ts.map +1 -0
- package/lib/internals/Colorize.js +69 -0
- package/lib/internals/Colorize.js.map +1 -0
- package/lib/internals/index.d.ts +3 -0
- package/lib/internals/index.d.ts.map +1 -0
- package/lib/internals/index.js +19 -0
- package/lib/internals/index.js.map +1 -0
- package/lib/internals/types.d.ts +43 -0
- package/lib/internals/types.d.ts.map +1 -0
- package/lib/internals/types.js +3 -0
- package/lib/internals/types.js.map +1 -0
- package/lib/server/IndexManager.d.ts +78 -0
- package/lib/server/IndexManager.d.ts.map +1 -0
- package/lib/server/IndexManager.js +259 -0
- package/lib/server/IndexManager.js.map +1 -0
- package/lib/server/VectraServer.d.ts +40 -0
- package/lib/server/VectraServer.d.ts.map +1 -0
- package/lib/server/VectraServer.js +151 -0
- package/lib/server/VectraServer.js.map +1 -0
- package/lib/server/VectraServer.spec.d.ts +2 -0
- package/lib/server/VectraServer.spec.d.ts.map +1 -0
- package/lib/server/VectraServer.spec.js +322 -0
- package/lib/server/VectraServer.spec.js.map +1 -0
- package/lib/server/handlers/documentHandlers.d.ts +15 -0
- package/lib/server/handlers/documentHandlers.d.ts.map +1 -0
- package/lib/server/handlers/documentHandlers.js +95 -0
- package/lib/server/handlers/documentHandlers.js.map +1 -0
- package/lib/server/handlers/helpers.d.ts +23 -0
- package/lib/server/handlers/helpers.d.ts.map +1 -0
- package/lib/server/handlers/helpers.js +138 -0
- package/lib/server/handlers/helpers.js.map +1 -0
- package/lib/server/handlers/index.d.ts +8 -0
- package/lib/server/handlers/index.d.ts.map +1 -0
- package/lib/server/handlers/index.js +22 -0
- package/lib/server/handlers/index.js.map +1 -0
- package/lib/server/handlers/indexHandlers.d.ts +14 -0
- package/lib/server/handlers/indexHandlers.d.ts.map +1 -0
- package/lib/server/handlers/indexHandlers.js +85 -0
- package/lib/server/handlers/indexHandlers.js.map +1 -0
- package/lib/server/handlers/itemHandlers.d.ts +34 -0
- package/lib/server/handlers/itemHandlers.d.ts.map +1 -0
- package/lib/server/handlers/itemHandlers.js +166 -0
- package/lib/server/handlers/itemHandlers.js.map +1 -0
- package/lib/server/handlers/lifecycleHandlers.d.ts +11 -0
- package/lib/server/handlers/lifecycleHandlers.d.ts.map +1 -0
- package/lib/server/handlers/lifecycleHandlers.js +31 -0
- package/lib/server/handlers/lifecycleHandlers.js.map +1 -0
- package/lib/server/handlers/queryHandlers.d.ts +27 -0
- package/lib/server/handlers/queryHandlers.d.ts.map +1 -0
- package/lib/server/handlers/queryHandlers.js +135 -0
- package/lib/server/handlers/queryHandlers.js.map +1 -0
- package/lib/server/handlers/statsHandlers.d.ts +17 -0
- package/lib/server/handlers/statsHandlers.d.ts.map +1 -0
- package/lib/server/handlers/statsHandlers.js +81 -0
- package/lib/server/handlers/statsHandlers.js.map +1 -0
- package/lib/server/index.d.ts +4 -0
- package/lib/server/index.d.ts.map +1 -0
- package/lib/server/index.js +23 -0
- package/lib/server/index.js.map +1 -0
- package/lib/storage/FileStorage.d.ts +92 -0
- package/lib/storage/FileStorage.d.ts.map +1 -0
- package/lib/storage/FileStorage.js +3 -0
- package/lib/storage/FileStorage.js.map +1 -0
- package/lib/storage/FileStorageUtilities.d.ts +36 -0
- package/lib/storage/FileStorageUtilities.d.ts.map +1 -0
- package/lib/storage/FileStorageUtilities.js +91 -0
- package/lib/storage/FileStorageUtilities.js.map +1 -0
- package/lib/storage/FileStorageUtilities.spec.d.ts +2 -0
- package/lib/storage/FileStorageUtilities.spec.d.ts.map +1 -0
- package/lib/storage/FileStorageUtilities.spec.js +98 -0
- package/lib/storage/FileStorageUtilities.spec.js.map +1 -0
- package/lib/storage/FileType.d.ts +29 -0
- package/lib/storage/FileType.d.ts.map +1 -0
- package/lib/storage/FileType.js +38 -0
- package/lib/storage/FileType.js.map +1 -0
- package/lib/storage/IndexedDBStorage.d.ts +47 -0
- package/lib/storage/IndexedDBStorage.d.ts.map +1 -0
- package/lib/storage/IndexedDBStorage.js +347 -0
- package/lib/storage/IndexedDBStorage.js.map +1 -0
- package/lib/storage/LocalFileStorage.browser.d.ts +19 -0
- package/lib/storage/LocalFileStorage.browser.d.ts.map +1 -0
- package/lib/storage/LocalFileStorage.browser.js +43 -0
- package/lib/storage/LocalFileStorage.browser.js.map +1 -0
- package/lib/storage/LocalFileStorage.d.ts +23 -0
- package/lib/storage/LocalFileStorage.d.ts.map +1 -0
- package/lib/storage/LocalFileStorage.js +152 -0
- package/lib/storage/LocalFileStorage.js.map +1 -0
- package/lib/storage/LocalFileStorage.spec.d.ts +2 -0
- package/lib/storage/LocalFileStorage.spec.d.ts.map +1 -0
- package/lib/storage/LocalFileStorage.spec.js +249 -0
- package/lib/storage/LocalFileStorage.spec.js.map +1 -0
- package/lib/storage/VirtualFileStorage.d.ts +18 -0
- package/lib/storage/VirtualFileStorage.d.ts.map +1 -0
- package/lib/storage/VirtualFileStorage.js +178 -0
- package/lib/storage/VirtualFileStorage.js.map +1 -0
- package/lib/storage/VirtualFileStorage.spec.d.ts +2 -0
- package/lib/storage/VirtualFileStorage.spec.d.ts.map +1 -0
- package/lib/storage/VirtualFileStorage.spec.js +302 -0
- package/lib/storage/VirtualFileStorage.spec.js.map +1 -0
- package/lib/storage/index.d.ts +6 -0
- package/lib/storage/index.d.ts.map +1 -0
- package/lib/storage/index.js +22 -0
- package/lib/storage/index.js.map +1 -0
- package/lib/templates/templates/csharp/README.md +48 -0
- package/lib/templates/templates/csharp/VectraClient.cs +234 -0
- package/lib/templates/templates/go/README.md +71 -0
- package/lib/templates/templates/go/vectra_client.go +322 -0
- package/lib/templates/templates/java/README.md +81 -0
- package/lib/templates/templates/java/VectraClient.java +232 -0
- package/lib/templates/templates/python/README.md +37 -0
- package/lib/templates/templates/python/vectra_client.py +279 -0
- package/lib/templates/templates/rust/Cargo.toml +14 -0
- package/lib/templates/templates/rust/README.md +39 -0
- package/lib/templates/templates/rust/build.rs +4 -0
- package/lib/templates/templates/rust/lib.rs +284 -0
- package/lib/templates/templates/typescript/README.md +96 -0
- package/lib/templates/templates/typescript/VectraClient.ts +374 -0
- package/lib/templates/typescript/VectraClient.d.ts +114 -0
- package/lib/templates/typescript/VectraClient.d.ts.map +1 -0
- package/lib/templates/typescript/VectraClient.js +328 -0
- package/lib/templates/typescript/VectraClient.js.map +1 -0
- package/lib/types.d.ts +153 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +18 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/pathUtils.d.ts +40 -0
- package/lib/utils/pathUtils.d.ts.map +1 -0
- package/lib/utils/pathUtils.js +98 -0
- package/lib/utils/pathUtils.js.map +1 -0
- package/lib/vectra-cli.d.ts +2 -0
- package/lib/vectra-cli.d.ts.map +1 -1
- package/lib/vectra-cli.generate.spec.d.ts +2 -0
- package/lib/vectra-cli.generate.spec.d.ts.map +1 -0
- package/lib/vectra-cli.generate.spec.js +112 -0
- package/lib/vectra-cli.generate.spec.js.map +1 -0
- package/lib/vectra-cli.js +760 -0
- package/lib/vectra-cli.js.map +1 -0
- package/lib/vectra-cli.spec.d.ts +1 -0
- package/lib/vectra-cli.spec.d.ts.map +1 -0
- package/lib/vectra-cli.spec.js +2 -0
- package/lib/vectra-cli.spec.js.map +1 -0
- package/package.json +91 -16
- package/proto/vectra_service.proto +276 -0
- package/src/BrowserWebFetcher.ts +345 -0
- package/src/FileFetcher.spec.ts +234 -0
- package/src/FileFetcher.ts +37 -25
- package/src/FolderWatcher.spec.ts +288 -0
- package/src/FolderWatcher.ts +304 -0
- package/src/GPT3Tokenizer.spec.ts +50 -0
- package/src/ItemSelector.spec.ts +252 -0
- package/src/ItemSelector.ts +163 -150
- package/src/LocalDocument.spec.ts +211 -0
- package/src/LocalDocument.ts +88 -94
- package/src/LocalDocumentIndex.spec.ts +481 -0
- package/src/LocalDocumentIndex.ts +39 -40
- package/src/LocalDocumentResult.spec.ts +373 -0
- package/src/LocalDocumentResult.ts +489 -319
- package/src/LocalEmbeddings.spec.ts +138 -0
- package/src/LocalEmbeddings.ts +120 -0
- package/src/LocalIndex.spec.ts +808 -66
- package/src/LocalIndex.ts +479 -429
- package/src/OpenAIEmbeddings.spec.ts +354 -0
- package/src/OpenAIEmbeddings.ts +26 -27
- package/src/TextSplitter.spec.ts +342 -0
- package/src/TextSplitter.ts +517 -532
- package/src/TransformersEmbeddings.spec.ts +188 -0
- package/src/TransformersEmbeddings.ts +232 -0
- package/src/TransformersTokenizer.spec.ts +143 -0
- package/src/TransformersTokenizer.ts +45 -0
- package/src/WebFetcher.spec.ts +288 -0
- package/src/WebFetcher.ts +184 -186
- package/src/browser.ts +69 -0
- package/src/codecs/IndexCodec.ts +40 -0
- package/src/codecs/JsonCodec.spec.ts +70 -0
- package/src/codecs/JsonCodec.ts +37 -0
- package/src/codecs/LocalIndex.protobuf.spec.ts +115 -0
- package/src/codecs/ProtobufCodec.spec.ts +166 -0
- package/src/codecs/ProtobufCodec.ts +193 -0
- package/src/codecs/index.ts +4 -0
- package/src/codecs/migrateIndex.spec.ts +176 -0
- package/src/codecs/migrateIndex.ts +125 -0
- package/src/codecs/schemas/index.proto +34 -0
- package/src/index.ts +9 -1
- package/src/internals/Colorize.ts +19 -16
- package/src/server/IndexManager.ts +243 -0
- package/src/server/VectraServer.spec.ts +303 -0
- package/src/server/VectraServer.ts +156 -0
- package/src/server/handlers/documentHandlers.ts +59 -0
- package/src/server/handlers/helpers.ts +93 -0
- package/src/server/handlers/index.ts +7 -0
- package/src/server/handlers/indexHandlers.ts +44 -0
- package/src/server/handlers/itemHandlers.ts +140 -0
- package/src/server/handlers/lifecycleHandlers.ts +26 -0
- package/src/server/handlers/queryHandlers.ts +96 -0
- package/src/server/handlers/statsHandlers.ts +38 -0
- package/src/server/index.ts +3 -0
- package/src/storage/FileStorage.ts +105 -0
- package/src/storage/FileStorageUtilities.spec.ts +106 -0
- package/src/storage/FileStorageUtilities.ts +77 -0
- package/src/storage/FileType.ts +61 -0
- package/src/storage/IndexedDBStorage.ts +365 -0
- package/src/storage/LocalFileStorage.browser.ts +52 -0
- package/src/storage/LocalFileStorage.spec.ts +292 -0
- package/src/storage/LocalFileStorage.ts +98 -0
- package/src/storage/VirtualFileStorage.spec.ts +307 -0
- package/src/storage/VirtualFileStorage.ts +169 -0
- package/src/storage/index.ts +5 -0
- package/src/templates/csharp/README.md +48 -0
- package/src/templates/csharp/VectraClient.cs +234 -0
- package/src/templates/go/README.md +71 -0
- package/src/templates/go/vectra_client.go +322 -0
- package/src/templates/java/README.md +81 -0
- package/src/templates/java/VectraClient.java +232 -0
- package/src/templates/python/README.md +37 -0
- package/src/templates/python/vectra_client.py +279 -0
- package/src/templates/rust/Cargo.toml +14 -0
- package/src/templates/rust/README.md +39 -0
- package/src/templates/rust/build.rs +4 -0
- package/src/templates/rust/lib.rs +284 -0
- package/src/templates/typescript/README.md +96 -0
- package/src/templates/typescript/VectraClient.ts +374 -0
- package/src/types.ts +131 -123
- package/src/utils/index.ts +1 -0
- package/src/utils/pathUtils.ts +106 -0
- package/src/vectra-cli.generate.spec.ts +72 -0
- package/src/vectra-cli.spec.ts +0 -0
- package/src/vectra-cli.ts +687 -246
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.LocalIndex = void 0;
|
|
16
|
+
const pathUtils_1 = require("./utils/pathUtils");
|
|
17
|
+
const uuid_1 = require("uuid");
|
|
18
|
+
const ItemSelector_1 = require("./ItemSelector");
|
|
19
|
+
const LocalDocument_1 = require("./LocalDocument");
|
|
20
|
+
const wink_bm25_text_search_1 = __importDefault(require("wink-bm25-text-search"));
|
|
21
|
+
const wink_nlp_1 = __importDefault(require("wink-nlp"));
|
|
22
|
+
const wink_eng_lite_web_model_1 = __importDefault(require("wink-eng-lite-web-model"));
|
|
23
|
+
const storage_1 = require("./storage");
|
|
24
|
+
const codecs_1 = require("./codecs");
|
|
25
|
+
/**
|
|
26
|
+
* Local vector index instance.
|
|
27
|
+
* @remarks
|
|
28
|
+
* This class is used to create, update, and query a local vector index.
|
|
29
|
+
* Each index is a folder on disk containing an index.json file and an optional set of metadata files.
|
|
30
|
+
*/
|
|
31
|
+
class LocalIndex {
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new instance of LocalIndex.
|
|
34
|
+
* @param folderPath Path to the index folder.
|
|
35
|
+
* @param indexName Optional index file name. Defaults to 'index' + codec.extension.
|
|
36
|
+
* @param storage Optional file storage instance. Defaults to LocalFileStorage.
|
|
37
|
+
* @param codec Optional codec for serialization. Defaults to JsonCodec.
|
|
38
|
+
* @param options Optional constructor options for dependency injection.
|
|
39
|
+
*/
|
|
40
|
+
constructor(folderPath, indexName, storage, codec, options) {
|
|
41
|
+
this._indexName = 'index.json';
|
|
42
|
+
this._folderPath = folderPath;
|
|
43
|
+
this._codec = codec || new codecs_1.JsonCodec();
|
|
44
|
+
if (indexName) {
|
|
45
|
+
this._indexName = indexName;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this._indexName = `index${this._codec.extension}`;
|
|
49
|
+
}
|
|
50
|
+
this._storage = storage || new storage_1.LocalFileStorage();
|
|
51
|
+
this._bm25Factory = (options === null || options === void 0 ? void 0 : options.bm25Factory) || (() => (0, wink_bm25_text_search_1.default)());
|
|
52
|
+
this._docReader = (options === null || options === void 0 ? void 0 : options.docReader) || ((docId) => __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
const doc = new LocalDocument_1.LocalDocument(this, docId, '');
|
|
54
|
+
return yield doc.loadText();
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
/** Path to the index folder. */
|
|
58
|
+
get folderPath() {
|
|
59
|
+
return this._folderPath;
|
|
60
|
+
}
|
|
61
|
+
/** Name of the index file. */
|
|
62
|
+
get indexName() {
|
|
63
|
+
return this._indexName;
|
|
64
|
+
}
|
|
65
|
+
/** Storage provider used to store the index. */
|
|
66
|
+
get storage() {
|
|
67
|
+
return this._storage;
|
|
68
|
+
}
|
|
69
|
+
/** Codec used for serialization. */
|
|
70
|
+
get codec() {
|
|
71
|
+
return this._codec;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Begins an update to the index.
|
|
75
|
+
* @remarks
|
|
76
|
+
* This method loads the index into memory and prepares it for updates.
|
|
77
|
+
*/
|
|
78
|
+
beginUpdate() {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
if (this._update) {
|
|
81
|
+
throw new Error('Update already in progress');
|
|
82
|
+
}
|
|
83
|
+
yield this.loadIndexData();
|
|
84
|
+
this._update = structuredClone(this._data);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Cancels an update to the index.
|
|
89
|
+
* @remarks
|
|
90
|
+
* This method discards any changes made to the index since the update began.
|
|
91
|
+
*/
|
|
92
|
+
cancelUpdate() {
|
|
93
|
+
this._update = undefined;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Creates a new index.
|
|
97
|
+
* @remarks
|
|
98
|
+
* This method creates a new folder on disk containing an index.json file.
|
|
99
|
+
* @param config Index configuration.
|
|
100
|
+
*/
|
|
101
|
+
createIndex() {
|
|
102
|
+
return __awaiter(this, arguments, void 0, function* (config = { version: 1 }) {
|
|
103
|
+
var _a;
|
|
104
|
+
// Delete if exists
|
|
105
|
+
if (yield this.isIndexCreated()) {
|
|
106
|
+
if (config.deleteIfExists) {
|
|
107
|
+
yield this.deleteIndex();
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
throw new Error('Index already exists');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
// Create folder for index
|
|
115
|
+
yield this.storage.createFolder(this._folderPath);
|
|
116
|
+
// Initialize index.json file
|
|
117
|
+
this._data = {
|
|
118
|
+
version: config.version,
|
|
119
|
+
metadata_config: (_a = config.metadata_config) !== null && _a !== void 0 ? _a : {},
|
|
120
|
+
items: []
|
|
121
|
+
};
|
|
122
|
+
yield this.storage.upsertFile(pathUtils_1.pathUtils.join(this._folderPath, this._indexName), this._codec.serializeIndex(this._data));
|
|
123
|
+
}
|
|
124
|
+
catch (_b) {
|
|
125
|
+
yield this.deleteIndex();
|
|
126
|
+
throw new Error('Error creating index');
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Deletes the index.
|
|
132
|
+
* @remarks
|
|
133
|
+
* This method deletes the index folder from disk.
|
|
134
|
+
*/
|
|
135
|
+
deleteIndex() {
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
this._data = undefined;
|
|
138
|
+
return yield this.storage.deleteFolder(this._folderPath);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Deletes an item from the index.
|
|
143
|
+
* @param id ID of item to delete.
|
|
144
|
+
*/
|
|
145
|
+
deleteItem(id) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
if (this._update) {
|
|
148
|
+
const index = this._update.items.findIndex(i => i.id === id);
|
|
149
|
+
if (index >= 0) {
|
|
150
|
+
this._update.items.splice(index, 1);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
yield this.beginUpdate();
|
|
155
|
+
const index = this._update.items.findIndex(i => i.id === id);
|
|
156
|
+
if (index >= 0) {
|
|
157
|
+
this._update.items.splice(index, 1);
|
|
158
|
+
}
|
|
159
|
+
yield this.endUpdate();
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Ends an update to the index.
|
|
165
|
+
* @remarks
|
|
166
|
+
* This method saves the index to disk.
|
|
167
|
+
*/
|
|
168
|
+
endUpdate() {
|
|
169
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
170
|
+
if (!this._update) {
|
|
171
|
+
throw new Error('No update in progress');
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
// Save index
|
|
175
|
+
yield this.storage.upsertFile(pathUtils_1.pathUtils.join(this._folderPath, this._indexName), this._codec.serializeIndex(this._update));
|
|
176
|
+
this._data = this._update;
|
|
177
|
+
this._update = undefined;
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
throw new Error(`Error saving index: ${err.toString()}`);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Loads an index from disk and returns its stats.
|
|
186
|
+
* @returns Index stats.
|
|
187
|
+
*/
|
|
188
|
+
getIndexStats() {
|
|
189
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
190
|
+
yield this.loadIndexData();
|
|
191
|
+
return {
|
|
192
|
+
version: this._data.version,
|
|
193
|
+
metadata_config: this._data.metadata_config,
|
|
194
|
+
items: this._data.items.length
|
|
195
|
+
};
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Returns an item from the index given its ID.
|
|
200
|
+
* @param id ID of the item to retrieve.
|
|
201
|
+
* @returns Item or undefined if not found.
|
|
202
|
+
*/
|
|
203
|
+
getItem(id) {
|
|
204
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
205
|
+
yield this.loadIndexData();
|
|
206
|
+
return this._data.items.find(i => i.id === id);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Adds an item to the index.
|
|
211
|
+
* @remarks
|
|
212
|
+
* A new update is started if one is not already in progress. If an item with the same ID
|
|
213
|
+
* already exists, an error will be thrown.
|
|
214
|
+
* @param item Item to insert.
|
|
215
|
+
* @returns Inserted item.
|
|
216
|
+
*/
|
|
217
|
+
insertItem(item) {
|
|
218
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
219
|
+
if (this._update) {
|
|
220
|
+
return yield this.addItemToUpdate(item, true);
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
yield this.beginUpdate();
|
|
224
|
+
const newItem = yield this.addItemToUpdate(item, true);
|
|
225
|
+
yield this.endUpdate();
|
|
226
|
+
return newItem;
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Adds a batch of items to the index.
|
|
232
|
+
* @remarks
|
|
233
|
+
* Batch update requires no update to be in progress. This is necessary so that if any one
|
|
234
|
+
* insert operation fails, the entire update can be safely cancelled. This prevents partial
|
|
235
|
+
* updates from being applied to the local index.
|
|
236
|
+
* @param items Items to insert.
|
|
237
|
+
* @returns Inserted items.
|
|
238
|
+
*/
|
|
239
|
+
batchInsertItems(items) {
|
|
240
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
241
|
+
yield this.beginUpdate();
|
|
242
|
+
try {
|
|
243
|
+
const newItems = [];
|
|
244
|
+
for (const item of items) {
|
|
245
|
+
const newItem = yield this.addItemToUpdate(item, true);
|
|
246
|
+
newItems.push(newItem);
|
|
247
|
+
}
|
|
248
|
+
yield this.endUpdate();
|
|
249
|
+
return newItems;
|
|
250
|
+
}
|
|
251
|
+
catch (e) {
|
|
252
|
+
// cancels this update to prevent partial batch updates. allows error to bubble up.
|
|
253
|
+
yield this.cancelUpdate();
|
|
254
|
+
throw e;
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
/** Returns true if the index exists. */
|
|
259
|
+
isIndexCreated() {
|
|
260
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
261
|
+
return yield this.storage.pathExists(pathUtils_1.pathUtils.join(this._folderPath, this._indexName));
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Returns all items in the index.
|
|
266
|
+
* @remarks
|
|
267
|
+
* This method loads the index into memory and returns all its items. A copy of the items
|
|
268
|
+
* array is returned so no modifications should be made to the array.
|
|
269
|
+
* @returns Array of all items in the index.
|
|
270
|
+
*/
|
|
271
|
+
listItems() {
|
|
272
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
273
|
+
yield this.loadIndexData();
|
|
274
|
+
return this._data.items.slice();
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Returns all items in the index matching the filter.
|
|
279
|
+
* @remarks
|
|
280
|
+
* This method loads the index into memory and returns all its items matching the filter.
|
|
281
|
+
* @param filter Filter to apply.
|
|
282
|
+
* @returns Array of items matching the filter.
|
|
283
|
+
*/
|
|
284
|
+
listItemsByMetadata(filter) {
|
|
285
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
286
|
+
yield this.loadIndexData();
|
|
287
|
+
return this._data.items.filter(i => ItemSelector_1.ItemSelector.select(i.metadata, filter));
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Finds the top k items in the index that are most similar to the vector.
|
|
292
|
+
* @remarks
|
|
293
|
+
* This method loads the index into memory and returns the top k items that are most similar.
|
|
294
|
+
* An optional filter can be applied to the metadata of the items.
|
|
295
|
+
* @param vector Vector to query against.
|
|
296
|
+
* @param query Query string (used when isBm25=true).
|
|
297
|
+
* @param topK Number of items to return.
|
|
298
|
+
* @param filter Optional. Filter to apply.
|
|
299
|
+
* @param isBm25 Optional. If true, append BM25 keyword results to semantic results.
|
|
300
|
+
* @returns Similar items to the vector that match the supplied filter.
|
|
301
|
+
*/
|
|
302
|
+
queryItems(vector, query, topK, filter, isBm25) {
|
|
303
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
304
|
+
var _a, _b, _c, _d;
|
|
305
|
+
yield this.loadIndexData();
|
|
306
|
+
// Filter items
|
|
307
|
+
let items = this._data.items;
|
|
308
|
+
if (filter) {
|
|
309
|
+
items = items.filter(i => ItemSelector_1.ItemSelector.select(i.metadata, filter));
|
|
310
|
+
}
|
|
311
|
+
// Calculate distances
|
|
312
|
+
const norm = ItemSelector_1.ItemSelector.normalize(vector);
|
|
313
|
+
const distances = [];
|
|
314
|
+
for (let i = 0; i < items.length; i++) {
|
|
315
|
+
const item = items[i];
|
|
316
|
+
const distance = ItemSelector_1.ItemSelector.normalizedCosineSimilarity(vector, norm, item.vector, item.norm);
|
|
317
|
+
distances.push({ index: i, distance: distance });
|
|
318
|
+
}
|
|
319
|
+
// Sort by distance DESCENDING
|
|
320
|
+
distances.sort((a, b) => b.distance - a.distance);
|
|
321
|
+
// Find top k
|
|
322
|
+
const top = distances.slice(0, topK).map(d => {
|
|
323
|
+
return {
|
|
324
|
+
item: Object.assign({}, items[d.index]),
|
|
325
|
+
score: d.distance
|
|
326
|
+
};
|
|
327
|
+
});
|
|
328
|
+
// Load external metadata
|
|
329
|
+
for (const item of top) {
|
|
330
|
+
if (item.item.metadataFile) {
|
|
331
|
+
const metadataPath = pathUtils_1.pathUtils.join(this._folderPath, item.item.metadataFile);
|
|
332
|
+
const metadataBuffer = yield this.storage.readFile(metadataPath);
|
|
333
|
+
item.item.metadata = this._codec.deserializeMetadata(metadataBuffer);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
// Perform bm25 search only if enabled. Avoid duplicate chunks that are already selected during semantic search.
|
|
337
|
+
if (isBm25) {
|
|
338
|
+
const itemSet = new Set();
|
|
339
|
+
for (const r of top)
|
|
340
|
+
itemSet.add(r.item.id);
|
|
341
|
+
// Set up BM25 engine
|
|
342
|
+
yield this.setupBm25();
|
|
343
|
+
// Add docs if we have necessary metadata; guard everything to avoid crashes
|
|
344
|
+
for (let i = 0; i < items.length; i++) {
|
|
345
|
+
if (!itemSet.has(items[i].id)) {
|
|
346
|
+
const item = items[i];
|
|
347
|
+
const md = item.metadata || {};
|
|
348
|
+
if (md.documentId != undefined && md.startPos != undefined && md.endPos != undefined) {
|
|
349
|
+
try {
|
|
350
|
+
const currDocTxt = yield this._docReader(String(md.documentId));
|
|
351
|
+
const startPos = Number(md.startPos);
|
|
352
|
+
const endPos = Number(md.endPos);
|
|
353
|
+
const chunkText = currDocTxt.substring(startPos, endPos + 1);
|
|
354
|
+
(_b = (_a = this._bm25Engine).addDoc) === null || _b === void 0 ? void 0 : _b.call(_a, { body: chunkText }, i);
|
|
355
|
+
}
|
|
356
|
+
catch (_e) {
|
|
357
|
+
// Ignore load or engine errors for BM25 doc prep
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
(_d = (_c = this._bm25Engine).consolidate) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
363
|
+
const results = yield this.bm25Search(query, items, topK);
|
|
364
|
+
results.forEach((res) => {
|
|
365
|
+
var _a;
|
|
366
|
+
// Support both [index, score] tuples and { item, score } objects
|
|
367
|
+
if (Array.isArray(res)) {
|
|
368
|
+
const idx = res[0];
|
|
369
|
+
const score = res[1];
|
|
370
|
+
if (items[idx]) {
|
|
371
|
+
top.push({
|
|
372
|
+
item: Object.assign({}, Object.assign(Object.assign({}, items[idx]), { metadata: Object.assign(Object.assign({}, items[idx].metadata), { isBm25: true }) })),
|
|
373
|
+
score
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
else if (res && typeof res === 'object' && 'item' in res && 'score' in res) {
|
|
378
|
+
const objItem = Object.assign({}, Object.assign(Object.assign({}, (res.item || {})), { metadata: Object.assign(Object.assign({}, (((_a = res.item) === null || _a === void 0 ? void 0 : _a.metadata) || {})), { isBm25: true }) }));
|
|
379
|
+
top.push({ item: objItem, score: res.score });
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
return top;
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Adds or replaces an item in the index.
|
|
388
|
+
* @remarks
|
|
389
|
+
* A new update is started if one is not already in progress. If an item with the same ID
|
|
390
|
+
* already exists, it will be replaced.
|
|
391
|
+
* @param item Item to insert or replace.
|
|
392
|
+
* @returns Upserted item.
|
|
393
|
+
*/
|
|
394
|
+
upsertItem(item) {
|
|
395
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
396
|
+
if (this._update) {
|
|
397
|
+
return yield this.addItemToUpdate(item, false);
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
yield this.beginUpdate();
|
|
401
|
+
const newItem = yield this.addItemToUpdate(item, false);
|
|
402
|
+
yield this.endUpdate();
|
|
403
|
+
return newItem;
|
|
404
|
+
}
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
/** Ensures that the index has been loaded into memory. */
|
|
408
|
+
loadIndexData() {
|
|
409
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
410
|
+
if (this._data) {
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
if (!(yield this.isIndexCreated())) {
|
|
414
|
+
throw new Error('Index does not exist');
|
|
415
|
+
}
|
|
416
|
+
const data = yield this.storage.readFile(pathUtils_1.pathUtils.join(this._folderPath, this.indexName));
|
|
417
|
+
this._data = this._codec.deserializeIndex(data);
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
addItemToUpdate(item, unique) {
|
|
421
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
422
|
+
var _a, _b;
|
|
423
|
+
// Ensure vector is provided
|
|
424
|
+
if (!item.vector) {
|
|
425
|
+
throw new Error('Vector is required');
|
|
426
|
+
}
|
|
427
|
+
// Ensure unique
|
|
428
|
+
const id = (_a = item.id) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();
|
|
429
|
+
if (unique) {
|
|
430
|
+
const existing = this._update.items.find(i => i.id === id);
|
|
431
|
+
if (existing) {
|
|
432
|
+
throw new Error(`Item with id ${id} already exists`);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
// Check for indexed metadata
|
|
436
|
+
let metadata = {};
|
|
437
|
+
let metadataFile;
|
|
438
|
+
const indexedKeys = (_b = this._update.metadata_config.indexed) !== null && _b !== void 0 ? _b : [];
|
|
439
|
+
if (indexedKeys.length > 0 && item.metadata) {
|
|
440
|
+
// Copy only indexed metadata
|
|
441
|
+
const indexedOnly = {};
|
|
442
|
+
for (const key of indexedKeys) {
|
|
443
|
+
if (Object.prototype.hasOwnProperty.call(item.metadata, key)) {
|
|
444
|
+
indexedOnly[key] = item.metadata[key];
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
// Determine if there are any non-indexed keys
|
|
448
|
+
const hasNonIndexed = Object.keys(item.metadata).some(k => !indexedKeys.includes(k));
|
|
449
|
+
// Always store only indexed keys in the index
|
|
450
|
+
metadata = indexedOnly;
|
|
451
|
+
// Write full metadata externally only if there are non-indexed keys present
|
|
452
|
+
if (hasNonIndexed) {
|
|
453
|
+
metadataFile = `${(0, uuid_1.v4)()}${this._codec.extension}`;
|
|
454
|
+
const metadataPath = pathUtils_1.pathUtils.join(this._folderPath, metadataFile);
|
|
455
|
+
yield this.storage.upsertFile(metadataPath, this._codec.serializeMetadata(item.metadata));
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
else if (item.metadata) {
|
|
459
|
+
metadata = item.metadata;
|
|
460
|
+
}
|
|
461
|
+
// Create new item
|
|
462
|
+
const newItem = {
|
|
463
|
+
id: id,
|
|
464
|
+
metadata: metadata,
|
|
465
|
+
vector: item.vector,
|
|
466
|
+
norm: ItemSelector_1.ItemSelector.normalize(item.vector)
|
|
467
|
+
};
|
|
468
|
+
if (metadataFile) {
|
|
469
|
+
newItem.metadataFile = metadataFile;
|
|
470
|
+
}
|
|
471
|
+
// Add item to index
|
|
472
|
+
if (!unique) {
|
|
473
|
+
const existing = this._update.items.find(i => i.id === id);
|
|
474
|
+
if (existing) {
|
|
475
|
+
existing.metadata = newItem.metadata;
|
|
476
|
+
existing.vector = newItem.vector;
|
|
477
|
+
existing.metadataFile = newItem.metadataFile;
|
|
478
|
+
return existing;
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
this._update.items.push(newItem);
|
|
482
|
+
return newItem;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
else {
|
|
486
|
+
this._update.items.push(newItem);
|
|
487
|
+
return newItem;
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
setupBm25() {
|
|
492
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
493
|
+
this._bm25Engine = this._bm25Factory();
|
|
494
|
+
const nlp = (0, wink_nlp_1.default)(wink_eng_lite_web_model_1.default);
|
|
495
|
+
const its = nlp.its;
|
|
496
|
+
const prepTask = function (text) {
|
|
497
|
+
const tokens = [];
|
|
498
|
+
nlp.readDoc(text)
|
|
499
|
+
.tokens()
|
|
500
|
+
// Use only words ignoring punctuations etc and from them remove stop words
|
|
501
|
+
.filter((t) => (t.out(its.type) === 'word' && !t.out(its.stopWordFlag)))
|
|
502
|
+
// Handle negation and extract stem of the word
|
|
503
|
+
.each((t) => tokens.push((t.out(its.negationFlag)) ? '!' + t.out(its.stem) : t.out(its.stem)));
|
|
504
|
+
return tokens;
|
|
505
|
+
};
|
|
506
|
+
this._bm25Engine.defineConfig({ fldWeights: { body: 1 } });
|
|
507
|
+
// Step II: Define PrepTasks pipe.
|
|
508
|
+
this._bm25Engine.definePrepTasks([prepTask]);
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
bm25Search(searchQuery, _items, topK) {
|
|
512
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
513
|
+
const results = this._bm25Engine.search(searchQuery);
|
|
514
|
+
return results.slice(0, topK);
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
exports.LocalIndex = LocalIndex;
|
|
519
|
+
//# sourceMappingURL=LocalIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalIndex.js","sourceRoot":"","sources":["../src/LocalIndex.ts"],"names":[],"mappings":"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"}
|