vectra 0.1.1 → 0.2.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.
Files changed (78) hide show
  1. package/README.md +3 -3
  2. package/bin/vectra.js +3 -0
  3. package/lib/GPT3Tokenizer.d.ts +9 -0
  4. package/lib/GPT3Tokenizer.d.ts.map +1 -0
  5. package/lib/GPT3Tokenizer.js +17 -0
  6. package/lib/GPT3Tokenizer.js.map +1 -0
  7. package/lib/ItemSelector.d.ts +41 -0
  8. package/lib/ItemSelector.d.ts.map +1 -0
  9. package/lib/ItemSelector.js +156 -0
  10. package/lib/ItemSelector.js.map +1 -0
  11. package/lib/LocalDocument.d.ts +16 -0
  12. package/lib/LocalDocument.d.ts.map +1 -0
  13. package/lib/LocalDocument.js +99 -0
  14. package/lib/LocalDocument.js.map +1 -0
  15. package/lib/LocalDocumentIndex.d.ts +48 -0
  16. package/lib/LocalDocumentIndex.d.ts.map +1 -0
  17. package/lib/LocalDocumentIndex.js +367 -0
  18. package/lib/LocalDocumentIndex.js.map +1 -0
  19. package/lib/LocalDocumentResult.d.ts +12 -0
  20. package/lib/LocalDocumentResult.d.ts.map +1 -0
  21. package/lib/LocalDocumentResult.js +186 -0
  22. package/lib/LocalDocumentResult.js.map +1 -0
  23. package/lib/LocalIndex.d.ts +130 -0
  24. package/lib/LocalIndex.d.ts.map +1 -0
  25. package/lib/LocalIndex.js +405 -0
  26. package/lib/LocalIndex.js.map +1 -0
  27. package/lib/OpenAIEmbeddings.d.ts +98 -0
  28. package/lib/OpenAIEmbeddings.d.ts.map +1 -0
  29. package/lib/OpenAIEmbeddings.js +139 -0
  30. package/lib/OpenAIEmbeddings.js.map +1 -0
  31. package/lib/TextSplitter.d.ts +17 -0
  32. package/lib/TextSplitter.d.ts.map +1 -0
  33. package/lib/TextSplitter.js +460 -0
  34. package/lib/TextSplitter.js.map +1 -0
  35. package/lib/WebFetcher.d.ts +16 -0
  36. package/lib/WebFetcher.d.ts.map +1 -0
  37. package/lib/WebFetcher.js +144 -0
  38. package/lib/WebFetcher.js.map +1 -0
  39. package/lib/index.d.ts +11 -0
  40. package/lib/index.d.ts.map +1 -0
  41. package/lib/index.js +27 -0
  42. package/lib/index.js.map +1 -0
  43. package/lib/internals/Colorize.d.ts +14 -0
  44. package/lib/internals/Colorize.d.ts.map +1 -0
  45. package/lib/internals/Colorize.js +64 -0
  46. package/lib/internals/Colorize.js.map +1 -0
  47. package/lib/internals/index.d.ts +3 -0
  48. package/lib/internals/index.d.ts.map +1 -0
  49. package/lib/internals/index.js +19 -0
  50. package/lib/internals/index.js.map +1 -0
  51. package/lib/internals/types.d.ts +42 -0
  52. package/lib/internals/types.d.ts.map +1 -0
  53. package/lib/internals/types.js +3 -0
  54. package/lib/internals/types.js.map +1 -0
  55. package/lib/types.d.ts +133 -0
  56. package/lib/types.d.ts.map +1 -0
  57. package/lib/types.js +3 -0
  58. package/lib/types.js.map +1 -0
  59. package/lib/vectra-cli.d.ts +2 -0
  60. package/lib/vectra-cli.d.ts.map +1 -0
  61. package/lib/vectra-cli.js +276 -0
  62. package/lib/vectra-cli.js.map +1 -0
  63. package/package.json +21 -3
  64. package/src/GPT3Tokenizer.ts +15 -0
  65. package/src/ItemSelector.ts +9 -9
  66. package/src/LocalDocument.ts +70 -0
  67. package/src/LocalDocumentIndex.ts +355 -0
  68. package/src/LocalDocumentResult.ts +206 -0
  69. package/src/LocalIndex.ts +12 -78
  70. package/src/OpenAIEmbeddings.ts +205 -0
  71. package/src/TextSplitter.ts +480 -0
  72. package/src/WebFetcher.ts +128 -0
  73. package/src/index.ts +8 -0
  74. package/src/internals/Colorize.ts +64 -0
  75. package/src/internals/index.ts +2 -0
  76. package/src/internals/types.ts +46 -0
  77. package/src/types.ts +160 -0
  78. package/src/vectra-cli.ts +238 -0
@@ -0,0 +1,130 @@
1
+ import { IndexItem, IndexStats, MetadataFilter, MetadataTypes, QueryResult } from './types';
2
+ export interface CreateIndexConfig {
3
+ version: number;
4
+ deleteIfExists?: boolean;
5
+ metadata_config?: {
6
+ indexed?: string[];
7
+ };
8
+ }
9
+ /**
10
+ * Local vector index instance.
11
+ * @remarks
12
+ * This class is used to create, update, and query a local vector index.
13
+ * Each index is a folder on disk containing an index.json file and an optional set of metadata files.
14
+ */
15
+ export declare class LocalIndex {
16
+ private readonly _folderPath;
17
+ private _data?;
18
+ private _update?;
19
+ /**
20
+ * Creates a new instance of LocalIndex.
21
+ * @param folderPath - Path to the index folder
22
+ */
23
+ constructor(folderPath: string);
24
+ /**
25
+ * Path to the index folder.
26
+ */
27
+ get folderPath(): string;
28
+ /**
29
+ * Begins an update to the index.
30
+ * @remarks
31
+ * This method loads the index into memory and prepares it for updates.
32
+ */
33
+ beginUpdate(): Promise<void>;
34
+ /**
35
+ * Cancels an update to the index.
36
+ * @remarks
37
+ * This method discards any changes made to the index since the update began.
38
+ */
39
+ cancelUpdate(): void;
40
+ /**
41
+ * Creates a new index.
42
+ * @remarks
43
+ * This method creates a new folder on disk containing an index.json file.
44
+ * @param config - Index configuration
45
+ */
46
+ createIndex(config?: CreateIndexConfig): Promise<void>;
47
+ /**
48
+ * Deletes the index.
49
+ * @remarks
50
+ * This method deletes the index folder from disk.
51
+ */
52
+ deleteIndex(): Promise<void>;
53
+ /**
54
+ * Deletes an item from the index.
55
+ * @param id - Item id
56
+ */
57
+ deleteItem(id: string): Promise<void>;
58
+ /**
59
+ * Ends an update to the index.
60
+ * @remarks
61
+ * This method saves the index to disk.
62
+ */
63
+ endUpdate(): Promise<void>;
64
+ /**
65
+ * Loads an index from disk and returns its stats.
66
+ * @returns Index stats
67
+ */
68
+ getIndexStats(): Promise<IndexStats>;
69
+ /**
70
+ * Returns an item from the index given its ID.
71
+ * @param id Item id
72
+ * @returns Item or undefined if not found
73
+ */
74
+ getItem<TMetadata = Record<string, MetadataTypes>>(id: string): Promise<IndexItem<TMetadata> | undefined>;
75
+ /**
76
+ * Adds an item to the index.
77
+ * @remarks
78
+ * A new update is started if one is not already in progress. If an item with the same ID
79
+ * already exists, an error will be thrown.
80
+ * @param item Item to insert
81
+ * @returns Inserted item
82
+ */
83
+ insertItem<TMetadata = Record<string, MetadataTypes>>(item: Partial<IndexItem<TMetadata>>): Promise<IndexItem<TMetadata>>;
84
+ /**
85
+ * Returns true if the index exists.
86
+ */
87
+ isIndexCreated(): Promise<boolean>;
88
+ /**
89
+ * Returns all items in the index.
90
+ * @remarks
91
+ * This method loads the index into memory and returns all its items. A copy of the items
92
+ * array is returned so no modifications should be made to the array.
93
+ * @returns All items in the index
94
+ */
95
+ listItems<TMetadata = Record<string, MetadataTypes>>(): Promise<IndexItem<TMetadata>[]>;
96
+ /**
97
+ * Returns all items in the index matching the filter.
98
+ * @remarks
99
+ * This method loads the index into memory and returns all its items matching the filter.
100
+ * @param filter Filter to apply
101
+ * @returns Items matching the filter
102
+ */
103
+ listItemsByMetadata<TMetadata = Record<string, MetadataTypes>>(filter: MetadataFilter): Promise<IndexItem<TMetadata>[]>;
104
+ /**
105
+ * Finds the top k items in the index that are most similar to the vector.
106
+ * @remarks
107
+ * This method loads the index into memory and returns the top k items that are most similar.
108
+ * An optional filter can be applied to the metadata of the items.
109
+ * @param vector Vector to query against
110
+ * @param topK Number of items to return
111
+ * @param filter Optional filter to apply
112
+ * @returns Similar items to the vector that matches the filter
113
+ */
114
+ queryItems<TMetadata = Record<string, MetadataTypes>>(vector: number[], topK: number, filter?: MetadataFilter): Promise<QueryResult<TMetadata>[]>;
115
+ /**
116
+ * Adds or replaces an item in the index.
117
+ * @remarks
118
+ * A new update is started if one is not already in progress. If an item with the same ID
119
+ * already exists, it will be replaced.
120
+ * @param item Item to insert or replace
121
+ * @returns Upserted item
122
+ */
123
+ upsertItem<TMetadata = Record<string, MetadataTypes>>(item: Partial<IndexItem<TMetadata>>): Promise<IndexItem<TMetadata>>;
124
+ /**
125
+ * Ensures that the index has been loaded into memory.
126
+ */
127
+ protected loadIndexData(): Promise<void>;
128
+ private addItemToUpdate;
129
+ }
130
+ //# sourceMappingURL=LocalIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalIndex.d.ts","sourceRoot":"","sources":["../src/LocalIndex.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE5F,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACL;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,KAAK,CAAC,CAAY;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAY;IAE5B;;;OAGG;gBACgB,UAAU,EAAE,MAAM;IAIrC;;OAEG;IACH,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED;;;;OAIG;IACU,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IASzC;;;;OAIG;IACI,YAAY,IAAI,IAAI;IAI3B;;;;;OAKG;IACU,WAAW,CAAC,MAAM,GAAE,iBAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjF;;;;OAIG;IACI,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnC;;;OAGG;IACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlD;;;;OAIG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAevC;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IASjD;;;;OAIG;IACU,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAC,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAKrH;;;;;;;OAOG;IACU,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAWrI;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/C;;;;;;OAMG;IACU,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAC,aAAa,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;IAKnG;;;;;;OAMG;IACU,mBAAmB,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAC,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;IAKnI;;;;;;;;;OASG;IACU,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;IAyC7J;;;;;;;OAOG;IACU,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAWrI;;OAEG;cACa,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;YAahC,eAAe;CA8DhC"}
@@ -0,0 +1,405 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.LocalIndex = void 0;
36
+ const fs = __importStar(require("fs/promises"));
37
+ const path = __importStar(require("path"));
38
+ const uuid_1 = require("uuid");
39
+ const ItemSelector_1 = require("./ItemSelector");
40
+ /**
41
+ * Local vector index instance.
42
+ * @remarks
43
+ * This class is used to create, update, and query a local vector index.
44
+ * Each index is a folder on disk containing an index.json file and an optional set of metadata files.
45
+ */
46
+ class LocalIndex {
47
+ /**
48
+ * Creates a new instance of LocalIndex.
49
+ * @param folderPath - Path to the index folder
50
+ */
51
+ constructor(folderPath) {
52
+ this._folderPath = folderPath;
53
+ }
54
+ /**
55
+ * Path to the index folder.
56
+ */
57
+ get folderPath() {
58
+ return this._folderPath;
59
+ }
60
+ /**
61
+ * Begins an update to the index.
62
+ * @remarks
63
+ * This method loads the index into memory and prepares it for updates.
64
+ */
65
+ beginUpdate() {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ if (this._update) {
68
+ throw new Error('Update already in progress');
69
+ }
70
+ yield this.loadIndexData();
71
+ this._update = Object.assign({}, this._data);
72
+ });
73
+ }
74
+ /**
75
+ * Cancels an update to the index.
76
+ * @remarks
77
+ * This method discards any changes made to the index since the update began.
78
+ */
79
+ cancelUpdate() {
80
+ this._update = undefined;
81
+ }
82
+ /**
83
+ * Creates a new index.
84
+ * @remarks
85
+ * This method creates a new folder on disk containing an index.json file.
86
+ * @param config - Index configuration
87
+ */
88
+ createIndex(config = { version: 1 }) {
89
+ var _a;
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ // Delete if exists
92
+ if (yield this.isIndexCreated()) {
93
+ if (config.deleteIfExists) {
94
+ yield this.deleteIndex();
95
+ }
96
+ else {
97
+ throw new Error('Index already exists');
98
+ }
99
+ }
100
+ try {
101
+ // Create folder for index
102
+ yield fs.mkdir(this._folderPath, { recursive: true });
103
+ // Initialize index.json file
104
+ this._data = {
105
+ version: config.version,
106
+ metadata_config: (_a = config.metadata_config) !== null && _a !== void 0 ? _a : {},
107
+ items: []
108
+ };
109
+ yield fs.writeFile(path.join(this._folderPath, 'index.json'), JSON.stringify(this._data));
110
+ }
111
+ catch (err) {
112
+ yield this.deleteIndex();
113
+ throw new Error('Error creating index');
114
+ }
115
+ });
116
+ }
117
+ /**
118
+ * Deletes the index.
119
+ * @remarks
120
+ * This method deletes the index folder from disk.
121
+ */
122
+ deleteIndex() {
123
+ this._data = undefined;
124
+ return fs.rm(this._folderPath, {
125
+ recursive: true,
126
+ maxRetries: 3
127
+ });
128
+ }
129
+ /**
130
+ * Deletes an item from the index.
131
+ * @param id - Item id
132
+ */
133
+ deleteItem(id) {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ if (this._update) {
136
+ const index = this._update.items.findIndex(i => i.id === id);
137
+ if (index >= 0) {
138
+ this._update.items.splice(index, 1);
139
+ }
140
+ }
141
+ else {
142
+ yield this.beginUpdate();
143
+ const index = this._update.items.findIndex(i => i.id === id);
144
+ if (index >= 0) {
145
+ this._update.items.splice(index, 1);
146
+ }
147
+ yield this.endUpdate();
148
+ }
149
+ });
150
+ }
151
+ /**
152
+ * Ends an update to the index.
153
+ * @remarks
154
+ * This method saves the index to disk.
155
+ */
156
+ endUpdate() {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ if (!this._update) {
159
+ throw new Error('No update in progress');
160
+ }
161
+ try {
162
+ // Save index
163
+ yield fs.writeFile(path.join(this._folderPath, 'index.json'), JSON.stringify(this._update));
164
+ this._data = this._update;
165
+ this._update = undefined;
166
+ }
167
+ catch (err) {
168
+ throw new Error(`Error saving index: ${err.toString()}`);
169
+ }
170
+ });
171
+ }
172
+ /**
173
+ * Loads an index from disk and returns its stats.
174
+ * @returns Index stats
175
+ */
176
+ getIndexStats() {
177
+ return __awaiter(this, void 0, void 0, function* () {
178
+ yield this.loadIndexData();
179
+ return {
180
+ version: this._data.version,
181
+ metadata_config: this._data.metadata_config,
182
+ items: this._data.items.length
183
+ };
184
+ });
185
+ }
186
+ /**
187
+ * Returns an item from the index given its ID.
188
+ * @param id Item id
189
+ * @returns Item or undefined if not found
190
+ */
191
+ getItem(id) {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ yield this.loadIndexData();
194
+ return this._data.items.find(i => i.id === id);
195
+ });
196
+ }
197
+ /**
198
+ * Adds an item to the index.
199
+ * @remarks
200
+ * A new update is started if one is not already in progress. If an item with the same ID
201
+ * already exists, an error will be thrown.
202
+ * @param item Item to insert
203
+ * @returns Inserted item
204
+ */
205
+ insertItem(item) {
206
+ return __awaiter(this, void 0, void 0, function* () {
207
+ if (this._update) {
208
+ return yield this.addItemToUpdate(item, true);
209
+ }
210
+ else {
211
+ yield this.beginUpdate();
212
+ const newItem = yield this.addItemToUpdate(item, true);
213
+ yield this.endUpdate();
214
+ return newItem;
215
+ }
216
+ });
217
+ }
218
+ /**
219
+ * Returns true if the index exists.
220
+ */
221
+ isIndexCreated() {
222
+ return __awaiter(this, void 0, void 0, function* () {
223
+ try {
224
+ yield fs.access(path.join(this._folderPath, 'index.json'));
225
+ return true;
226
+ }
227
+ catch (err) {
228
+ return false;
229
+ }
230
+ });
231
+ }
232
+ /**
233
+ * Returns all items in the index.
234
+ * @remarks
235
+ * This method loads the index into memory and returns all its items. A copy of the items
236
+ * array is returned so no modifications should be made to the array.
237
+ * @returns All items in the index
238
+ */
239
+ listItems() {
240
+ return __awaiter(this, void 0, void 0, function* () {
241
+ yield this.loadIndexData();
242
+ return this._data.items.slice();
243
+ });
244
+ }
245
+ /**
246
+ * Returns all items in the index matching the filter.
247
+ * @remarks
248
+ * This method loads the index into memory and returns all its items matching the filter.
249
+ * @param filter Filter to apply
250
+ * @returns Items matching the filter
251
+ */
252
+ listItemsByMetadata(filter) {
253
+ return __awaiter(this, void 0, void 0, function* () {
254
+ yield this.loadIndexData();
255
+ return this._data.items.filter(i => ItemSelector_1.ItemSelector.select(i.metadata, filter));
256
+ });
257
+ }
258
+ /**
259
+ * Finds the top k items in the index that are most similar to the vector.
260
+ * @remarks
261
+ * This method loads the index into memory and returns the top k items that are most similar.
262
+ * An optional filter can be applied to the metadata of the items.
263
+ * @param vector Vector to query against
264
+ * @param topK Number of items to return
265
+ * @param filter Optional filter to apply
266
+ * @returns Similar items to the vector that matches the filter
267
+ */
268
+ queryItems(vector, topK, filter) {
269
+ return __awaiter(this, void 0, void 0, function* () {
270
+ yield this.loadIndexData();
271
+ // Filter items
272
+ let items = this._data.items;
273
+ if (filter) {
274
+ items = items.filter(i => ItemSelector_1.ItemSelector.select(i.metadata, filter));
275
+ }
276
+ // Calculate distances
277
+ const norm = ItemSelector_1.ItemSelector.normalize(vector);
278
+ const distances = [];
279
+ for (let i = 0; i < items.length; i++) {
280
+ const item = items[i];
281
+ const distance = ItemSelector_1.ItemSelector.normalizedCosineSimilarity(vector, norm, item.vector, item.norm);
282
+ distances.push({ index: i, distance: distance });
283
+ }
284
+ // Sort by distance DESCENDING
285
+ distances.sort((a, b) => b.distance - a.distance);
286
+ // Find top k
287
+ const top = distances.slice(0, topK).map(d => {
288
+ return {
289
+ item: Object.assign({}, items[d.index]),
290
+ score: d.distance
291
+ };
292
+ });
293
+ // Load external metadata
294
+ for (const item of top) {
295
+ if (item.item.metadataFile) {
296
+ const metadataPath = path.join(this._folderPath, item.item.metadataFile);
297
+ const metadata = yield fs.readFile(metadataPath);
298
+ item.item.metadata = JSON.parse(metadata.toString());
299
+ }
300
+ }
301
+ return top;
302
+ });
303
+ }
304
+ /**
305
+ * Adds or replaces an item in the index.
306
+ * @remarks
307
+ * A new update is started if one is not already in progress. If an item with the same ID
308
+ * already exists, it will be replaced.
309
+ * @param item Item to insert or replace
310
+ * @returns Upserted item
311
+ */
312
+ upsertItem(item) {
313
+ return __awaiter(this, void 0, void 0, function* () {
314
+ if (this._update) {
315
+ return yield this.addItemToUpdate(item, false);
316
+ }
317
+ else {
318
+ yield this.beginUpdate();
319
+ const newItem = yield this.addItemToUpdate(item, false);
320
+ yield this.endUpdate();
321
+ return newItem;
322
+ }
323
+ });
324
+ }
325
+ /**
326
+ * Ensures that the index has been loaded into memory.
327
+ */
328
+ loadIndexData() {
329
+ return __awaiter(this, void 0, void 0, function* () {
330
+ if (this._data) {
331
+ return;
332
+ }
333
+ if (!(yield this.isIndexCreated())) {
334
+ throw new Error('Index does not exist');
335
+ }
336
+ const data = yield fs.readFile(path.join(this._folderPath, 'index.json'));
337
+ this._data = JSON.parse(data.toString());
338
+ });
339
+ }
340
+ addItemToUpdate(item, unique) {
341
+ var _a;
342
+ return __awaiter(this, void 0, void 0, function* () {
343
+ // Ensure vector is provided
344
+ if (!item.vector) {
345
+ throw new Error('Vector is required');
346
+ }
347
+ // Ensure unique
348
+ const id = (_a = item.id) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();
349
+ if (unique) {
350
+ const existing = this._update.items.find(i => i.id === id);
351
+ if (existing) {
352
+ throw new Error(`Item with id ${id} already exists`);
353
+ }
354
+ }
355
+ // Check for indexed metadata
356
+ let metadata = {};
357
+ let metadataFile;
358
+ if (this._update.metadata_config.indexed && this._update.metadata_config.indexed.length > 0 && item.metadata) {
359
+ // Copy only indexed metadata
360
+ for (const key of this._update.metadata_config.indexed) {
361
+ if (item.metadata && item.metadata[key]) {
362
+ metadata[key] = item.metadata[key];
363
+ }
364
+ }
365
+ // Save remaining metadata to disk
366
+ metadataFile = `${uuid_1.v4}.json`;
367
+ const metadataPath = path.join(this._folderPath, metadataFile);
368
+ yield fs.writeFile(metadataPath, JSON.stringify(item.metadata));
369
+ }
370
+ else if (item.metadata) {
371
+ metadata = item.metadata;
372
+ }
373
+ // Create new item
374
+ const newItem = {
375
+ id: id,
376
+ metadata: metadata,
377
+ vector: item.vector,
378
+ norm: ItemSelector_1.ItemSelector.normalize(item.vector)
379
+ };
380
+ if (metadataFile) {
381
+ newItem.metadataFile = metadataFile;
382
+ }
383
+ // Add item to index
384
+ if (!unique) {
385
+ const existing = this._update.items.find(i => i.id === id);
386
+ if (existing) {
387
+ existing.metadata = newItem.metadata;
388
+ existing.vector = newItem.vector;
389
+ existing.metadataFile = newItem.metadataFile;
390
+ return existing;
391
+ }
392
+ else {
393
+ this._update.items.push(newItem);
394
+ return newItem;
395
+ }
396
+ }
397
+ else {
398
+ this._update.items.push(newItem);
399
+ return newItem;
400
+ }
401
+ });
402
+ }
403
+ }
404
+ exports.LocalIndex = LocalIndex;
405
+ //# sourceMappingURL=LocalIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalIndex.js","sourceRoot":"","sources":["../src/LocalIndex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { AxiosResponse, AxiosRequestConfig } from 'axios';
2
+ import { EmbeddingsModel, EmbeddingsResponse } from "./types";
3
+ import { CreateEmbeddingRequest, CreateEmbeddingResponse } from "./internals";
4
+ export interface BaseOpenAIEmbeddingsOptions {
5
+ /**
6
+ * Optional. Retry policy to use when calling the OpenAI API.
7
+ * @remarks
8
+ * The default retry policy is `[2000, 5000]` which means that the first retry will be after
9
+ * 2 seconds and the second retry will be after 5 seconds.
10
+ */
11
+ retryPolicy?: number[];
12
+ /**
13
+ * Optional. Request options to use when calling the OpenAI API.
14
+ */
15
+ requestConfig?: AxiosRequestConfig;
16
+ }
17
+ /**
18
+ * Options for configuring an `OpenAIEmbeddings` to generate embeddings using an OpenAI hosted model.
19
+ */
20
+ export interface OpenAIEmbeddingsOptions extends BaseOpenAIEmbeddingsOptions {
21
+ /**
22
+ * API key to use when calling the OpenAI API.
23
+ * @remarks
24
+ * A new API key can be created at https://platform.openai.com/account/api-keys.
25
+ */
26
+ apiKey: string;
27
+ /**
28
+ * Model to use for completion.
29
+ * @remarks
30
+ * For Azure OpenAI this is the name of the deployment to use.
31
+ */
32
+ model: string;
33
+ /**
34
+ * Optional. Organization to use when calling the OpenAI API.
35
+ */
36
+ organization?: string;
37
+ /**
38
+ * Optional. Endpoint to use when calling the OpenAI API.
39
+ * @remarks
40
+ * For Azure OpenAI this is the deployment endpoint.
41
+ */
42
+ endpoint?: string;
43
+ }
44
+ /**
45
+ * Options for configuring an `OpenAIEmbeddings` to generate embeddings using an Azure OpenAI hosted model.
46
+ */
47
+ export interface AzureOpenAIEmbeddingsOptions extends BaseOpenAIEmbeddingsOptions {
48
+ /**
49
+ * API key to use when making requests to Azure OpenAI.
50
+ */
51
+ azureApiKey: string;
52
+ /**
53
+ * Deployment endpoint to use.
54
+ */
55
+ azureEndpoint: string;
56
+ /**
57
+ * Name of the Azure OpenAI deployment (model) to use.
58
+ */
59
+ azureDeployment: string;
60
+ /**
61
+ * Optional. Version of the API being called. Defaults to `2023-05-15`.
62
+ */
63
+ azureApiVersion?: string;
64
+ }
65
+ /**
66
+ * A `PromptCompletionModel` for calling OpenAI and Azure OpenAI hosted models.
67
+ * @remarks
68
+ */
69
+ export declare class OpenAIEmbeddings implements EmbeddingsModel {
70
+ private readonly _httpClient;
71
+ private readonly _useAzure;
72
+ private readonly UserAgent;
73
+ /**
74
+ * Options the client was configured with.
75
+ */
76
+ readonly options: OpenAIEmbeddingsOptions | AzureOpenAIEmbeddingsOptions;
77
+ /**
78
+ * Creates a new `OpenAIClient` instance.
79
+ * @param options Options for configuring an `OpenAIClient`.
80
+ */
81
+ constructor(options: OpenAIEmbeddingsOptions | AzureOpenAIEmbeddingsOptions);
82
+ /**
83
+ * Creates embeddings for the given inputs using the OpenAI API.
84
+ * @param model Name of the model to use (or deployment for Azure).
85
+ * @param inputs Text inputs to create embeddings for.
86
+ * @returns A `EmbeddingsResponse` with a status and the generated embeddings or a message when an error occurs.
87
+ */
88
+ createEmbeddings(inputs: string | string[]): Promise<EmbeddingsResponse>;
89
+ /**
90
+ * @private
91
+ */
92
+ protected createEmbeddingRequest(request: CreateEmbeddingRequest): Promise<AxiosResponse<CreateEmbeddingResponse>>;
93
+ /**
94
+ * @private
95
+ */
96
+ protected post<TData>(url: string, body: object, retryCount?: number): Promise<AxiosResponse<TData>>;
97
+ }
98
+ //# sourceMappingURL=OpenAIEmbeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAIEmbeddings.d.ts","sourceRoot":"","sources":["../src/OpenAIEmbeddings.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,aAAa,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAgC,MAAM,aAAa,CAAC;AAE5G,MAAM,WAAW,2BAA2B;IACxC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,2BAA2B;IACxE;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,2BAA2B;IAC7E;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IAEzC;;OAEG;IACH,SAAgB,OAAO,EAAE,uBAAuB,GAAC,4BAA4B,CAAC;IAE9E;;;OAGG;gBACgB,OAAO,EAAE,uBAAuB,GAAC,4BAA4B;IAiChF;;;;;OAKG;IACU,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAerF;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAalH;;OAEG;cACa,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;CAqCxG"}