vectra 0.12.2 → 0.12.3
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.draft.md +499 -0
- package/README.draft.outline.md +160 -0
- package/README.research.md +2159 -0
- package/bin/vectra.js +3 -0
- package/lib/FileFetcher.d.ts +5 -0
- package/lib/FileFetcher.d.ts.map +1 -0
- package/lib/FileFetcher.js +79 -0
- package/lib/FileFetcher.js.map +1 -0
- package/lib/GPT3Tokenizer.d.ts +9 -0
- package/lib/ItemSelector.d.ts +41 -0
- package/lib/ItemSelector.d.ts.map +1 -0
- package/lib/ItemSelector.js +168 -0
- package/lib/ItemSelector.js.map +1 -0
- package/lib/LocalDocument.d.ts +54 -0
- package/lib/LocalDocument.js +156 -0
- package/lib/LocalDocument.js.map +1 -0
- package/lib/LocalDocumentIndex.d.ts +132 -0
- package/lib/LocalDocumentIndex.js +456 -0
- package/lib/LocalDocumentIndex.js.map +1 -0
- package/lib/LocalDocumentResult.d.ts +45 -0
- package/lib/LocalDocumentResult.js +328 -0
- package/lib/LocalDocumentResult.js.map +1 -0
- package/lib/LocalIndex.d.ts +150 -0
- package/lib/LocalIndex.d.ts.map +1 -1
- package/lib/LocalIndex.js +515 -0
- package/lib/LocalIndex.js.map +1 -0
- package/lib/LocalIndex.spec.d.ts +2 -0
- package/lib/LocalIndex.spec.js +218 -7
- package/lib/LocalIndex.spec.js.map +1 -1
- package/lib/OpenAIEmbeddings.d.ts +126 -0
- package/lib/OpenAIEmbeddings.d.ts.map +1 -0
- package/lib/OpenAIEmbeddings.js +174 -0
- package/lib/OpenAIEmbeddings.js.map +1 -0
- package/lib/TextSplitter.d.ts +19 -0
- package/lib/TextSplitter.d.ts.map +1 -1
- package/lib/TextSplitter.js +457 -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 +109 -0
- package/lib/TextSplitter.spec.js.map +1 -0
- package/lib/WebFetcher.d.ts +15 -0
- package/lib/WebFetcher.d.ts.map +1 -0
- package/lib/WebFetcher.js +234 -0
- package/lib/WebFetcher.js.map +1 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +28 -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 +64 -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/types.d.ts +146 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/vectra-cli.d.ts +2 -0
- package/lib/vectra-cli.js +323 -0
- package/lib/vectra-cli.js.map +1 -0
- package/package.json +3 -1
- package/src/LocalIndex.spec.ts +265 -8
- package/src/LocalIndex.ts +1 -0
- package/src/TextSplitter.spec.ts +87 -0
- package/src/TextSplitter.ts +459 -531
package/lib/LocalIndex.spec.js
CHANGED
|
@@ -13,33 +13,166 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const node_assert_1 = __importDefault(require("node:assert"));
|
|
16
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
16
17
|
const LocalIndex_1 = require("./LocalIndex");
|
|
17
18
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
18
19
|
const path_1 = __importDefault(require("path"));
|
|
19
20
|
describe('LocalIndex', () => {
|
|
20
21
|
const testIndexDir = path_1.default.join(__dirname, 'test_index');
|
|
22
|
+
const basicIndexItems = [
|
|
23
|
+
{ id: '1', vector: [1, 2, 3] },
|
|
24
|
+
{ id: '2', vector: [2, 3, 4] },
|
|
25
|
+
{ id: '3', vector: [3, 4, 5] }
|
|
26
|
+
];
|
|
21
27
|
beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
28
|
yield promises_1.default.rm(testIndexDir, { recursive: true, force: true });
|
|
23
29
|
}));
|
|
24
30
|
afterEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
25
31
|
yield promises_1.default.rm(testIndexDir, { recursive: true, force: true });
|
|
32
|
+
sinon_1.default.restore();
|
|
26
33
|
}));
|
|
27
34
|
it('should create a new index', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
28
35
|
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
29
36
|
yield index.createIndex();
|
|
30
37
|
const created = yield index.isIndexCreated();
|
|
31
38
|
node_assert_1.default.equal(created, true);
|
|
39
|
+
node_assert_1.default.equal(index.folderPath, testIndexDir);
|
|
32
40
|
}));
|
|
41
|
+
it('blocks concurrent operations when lock is held', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
42
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
43
|
+
yield index.createIndex();
|
|
44
|
+
yield index.beginUpdate(); // grab lock for a big update!
|
|
45
|
+
yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
+
yield index.beginUpdate(); // try to grab lock again. should fail!
|
|
47
|
+
}), new Error('Update already in progress'));
|
|
48
|
+
}));
|
|
49
|
+
describe('createIndex', () => {
|
|
50
|
+
it('checks for existing index on creation', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
52
|
+
yield index.createIndex(); // create first index.json
|
|
53
|
+
// create without deleteIfExists. Will reject
|
|
54
|
+
yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
+
yield index.createIndex();
|
|
56
|
+
}), new Error('Index already exists'));
|
|
57
|
+
// create with deleteIfExists. Should remove old data
|
|
58
|
+
yield index.insertItem({ id: '1', vector: [1, 2, 3] });
|
|
59
|
+
const lengthBefore = (yield index.listItems()).length;
|
|
60
|
+
node_assert_1.default.equal(lengthBefore, 1);
|
|
61
|
+
yield index.createIndex({ deleteIfExists: true, version: 2, metadata_config: {} });
|
|
62
|
+
const lengthAfter = (yield index.listItems()).length;
|
|
63
|
+
node_assert_1.default.equal(lengthAfter, 0);
|
|
64
|
+
}));
|
|
65
|
+
it('delete index if file creation fails', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
67
|
+
sinon_1.default.stub(promises_1.default, 'writeFile').rejects(new Error('fs error'));
|
|
68
|
+
yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
69
|
+
yield index.createIndex();
|
|
70
|
+
}), new Error('Error creating index'));
|
|
71
|
+
yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
72
|
+
yield index.listItems();
|
|
73
|
+
}));
|
|
74
|
+
}));
|
|
75
|
+
});
|
|
76
|
+
describe('deleteItem', () => {
|
|
77
|
+
it('does nothing when id not found', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
78
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
79
|
+
yield index.createIndex();
|
|
80
|
+
yield index.beginUpdate();
|
|
81
|
+
yield index.insertItem(basicIndexItems[0]);
|
|
82
|
+
yield index.insertItem(basicIndexItems[1]);
|
|
83
|
+
yield index.insertItem(basicIndexItems[2]);
|
|
84
|
+
yield index.endUpdate();
|
|
85
|
+
yield node_assert_1.default.doesNotReject(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
86
|
+
yield index.deleteItem('dne');
|
|
87
|
+
}));
|
|
88
|
+
node_assert_1.default.equal((yield index.listItems()).length, 3);
|
|
89
|
+
}));
|
|
90
|
+
it('leaves existing empty index when last el deleted', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
91
|
+
var _a;
|
|
92
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
93
|
+
yield index.createIndex();
|
|
94
|
+
yield index.insertItem(basicIndexItems[0]);
|
|
95
|
+
yield index.deleteItem((_a = basicIndexItems[0].id) !== null && _a !== void 0 ? _a : '');
|
|
96
|
+
node_assert_1.default.equal(yield index.isIndexCreated(), true);
|
|
97
|
+
node_assert_1.default.equal((yield index.listItems()).length, 0);
|
|
98
|
+
}));
|
|
99
|
+
it('removes elements from any position', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
100
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
101
|
+
yield index.createIndex();
|
|
102
|
+
yield index.batchInsertItems([
|
|
103
|
+
{ id: '1', vector: [] },
|
|
104
|
+
{ id: '2', vector: [] },
|
|
105
|
+
{ id: '3', vector: [] },
|
|
106
|
+
{ id: '4', vector: [] },
|
|
107
|
+
{ id: '5', vector: [] },
|
|
108
|
+
]);
|
|
109
|
+
yield index.beginUpdate();
|
|
110
|
+
yield index.deleteItem('1');
|
|
111
|
+
yield index.deleteItem('3');
|
|
112
|
+
yield index.deleteItem('5');
|
|
113
|
+
yield index.endUpdate();
|
|
114
|
+
node_assert_1.default.deepStrictEqual(yield index.listItems(), [{ id: '2', vector: [], metadata: {}, norm: 0 }, { id: '4', vector: [], metadata: {}, norm: 0 }]);
|
|
115
|
+
}));
|
|
116
|
+
});
|
|
117
|
+
describe('endUpdate', () => {
|
|
118
|
+
it('throws an error if no update has begun', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
119
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
120
|
+
yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
121
|
+
yield index.endUpdate();
|
|
122
|
+
}), new Error('No update in progress'));
|
|
123
|
+
}));
|
|
124
|
+
it('throws an error if the index could not be saved', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
125
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir, 'index.json');
|
|
126
|
+
yield index.createIndex();
|
|
127
|
+
yield index.beginUpdate();
|
|
128
|
+
sinon_1.default.stub(promises_1.default, 'writeFile').rejects(new Error('fs error'));
|
|
129
|
+
yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
130
|
+
yield index.endUpdate();
|
|
131
|
+
}), new Error('Error saving index: Error: fs error'));
|
|
132
|
+
}));
|
|
133
|
+
});
|
|
134
|
+
describe('getIndexStats', () => {
|
|
135
|
+
it('reports empty index correctly', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
136
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
137
|
+
yield index.createIndex();
|
|
138
|
+
node_assert_1.default.deepStrictEqual(yield index.getIndexStats(), {
|
|
139
|
+
version: 1,
|
|
140
|
+
metadata_config: {},
|
|
141
|
+
items: 0
|
|
142
|
+
});
|
|
143
|
+
}));
|
|
144
|
+
it('correctly reports non-empty index stats', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
145
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
146
|
+
yield index.createIndex({ version: 1, metadata_config: { indexed: [] } });
|
|
147
|
+
yield index.batchInsertItems(basicIndexItems);
|
|
148
|
+
node_assert_1.default.deepStrictEqual(yield index.getIndexStats(), {
|
|
149
|
+
version: 1,
|
|
150
|
+
metadata_config: { indexed: [] },
|
|
151
|
+
items: 3
|
|
152
|
+
});
|
|
153
|
+
}));
|
|
154
|
+
});
|
|
155
|
+
describe('getItem', () => {
|
|
156
|
+
it('returns undefined when item not found', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
157
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
158
|
+
yield index.createIndex();
|
|
159
|
+
node_assert_1.default.equal(yield index.getItem('1'), undefined);
|
|
160
|
+
}));
|
|
161
|
+
it('returns requested item', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
162
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
163
|
+
yield index.createIndex();
|
|
164
|
+
yield index.batchInsertItems(basicIndexItems);
|
|
165
|
+
const item2 = yield index.getItem('2');
|
|
166
|
+
node_assert_1.default.equal(item2 === null || item2 === void 0 ? void 0 : item2.id, basicIndexItems[1].id);
|
|
167
|
+
node_assert_1.default.equal(item2 === null || item2 === void 0 ? void 0 : item2.vector, basicIndexItems[1].vector);
|
|
168
|
+
node_assert_1.default.equal((yield index.listItems()).length, 3);
|
|
169
|
+
}));
|
|
170
|
+
});
|
|
33
171
|
describe('batchInsertItems', () => {
|
|
34
|
-
const indexItems = [
|
|
35
|
-
{ id: '1', vector: [1, 2, 3] },
|
|
36
|
-
{ id: '2', vector: [2, 3, 4] },
|
|
37
|
-
{ id: '3', vector: [3, 4, 5] }
|
|
38
|
-
];
|
|
39
172
|
it('should insert provided items', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
173
|
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
41
174
|
yield index.createIndex();
|
|
42
|
-
const newItems = yield index.batchInsertItems(
|
|
175
|
+
const newItems = yield index.batchInsertItems(basicIndexItems);
|
|
43
176
|
node_assert_1.default.equal(newItems.length, 3);
|
|
44
177
|
const retrievedItems = yield index.listItems();
|
|
45
178
|
node_assert_1.default.equal(retrievedItems.length, 3);
|
|
@@ -50,7 +183,7 @@ describe('LocalIndex', () => {
|
|
|
50
183
|
yield index.insertItem({ id: '2', vector: [9, 9, 9] });
|
|
51
184
|
// ensures insert error is bubbled up to batchIndexItems caller
|
|
52
185
|
yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
-
yield index.batchInsertItems(
|
|
186
|
+
yield index.batchInsertItems(basicIndexItems);
|
|
54
187
|
}), {
|
|
55
188
|
name: 'Error',
|
|
56
189
|
message: 'Item with id 2 already exists'
|
|
@@ -60,5 +193,83 @@ describe('LocalIndex', () => {
|
|
|
60
193
|
node_assert_1.default.equal(storedItems.length, 1);
|
|
61
194
|
}));
|
|
62
195
|
});
|
|
196
|
+
describe('listItemsByMetadata', () => {
|
|
197
|
+
it('returns items matching metadata filter', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
198
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
199
|
+
yield index.createIndex();
|
|
200
|
+
yield index.batchInsertItems([
|
|
201
|
+
{ id: '1', vector: [], metadata: { category: 'food' } },
|
|
202
|
+
{ id: '2', vector: [], metadata: { category: 'food' } },
|
|
203
|
+
{ id: '3', vector: [], metadata: { category: 'electronics' } },
|
|
204
|
+
{ id: '4', vector: [], metadata: { category: 'drink' } },
|
|
205
|
+
{ id: '5', vector: [], metadata: { category: 'food' } },
|
|
206
|
+
]);
|
|
207
|
+
const foodItems = yield index.listItemsByMetadata({ category: { '$eq': 'food' } });
|
|
208
|
+
node_assert_1.default.deepStrictEqual(foodItems.map((item) => item.id), ["1", "2", "5"]);
|
|
209
|
+
const drinkItems = yield index.listItemsByMetadata({ category: { '$eq': 'drink' } });
|
|
210
|
+
node_assert_1.default.deepStrictEqual(drinkItems.map((item) => item.id), ["4"]);
|
|
211
|
+
const clothingItems = yield index.listItemsByMetadata({ category: { '$eq': 'clothes' } });
|
|
212
|
+
node_assert_1.default.deepStrictEqual(clothingItems, []);
|
|
213
|
+
}));
|
|
214
|
+
it('returns nothing when no items in index', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
215
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
216
|
+
yield index.createIndex();
|
|
217
|
+
const items = yield index.listItemsByMetadata({});
|
|
218
|
+
node_assert_1.default.deepStrictEqual(items, []);
|
|
219
|
+
}));
|
|
220
|
+
});
|
|
221
|
+
describe("queryItems", () => {
|
|
222
|
+
it("returns empty array on empty index search", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
223
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
224
|
+
yield index.createIndex();
|
|
225
|
+
const result = yield index.queryItems([1, 2, 3], "", 10);
|
|
226
|
+
node_assert_1.default.deepStrictEqual(result, []);
|
|
227
|
+
}));
|
|
228
|
+
it("returns bad match when no better match exists", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
229
|
+
var _a, _b;
|
|
230
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
231
|
+
yield index.createIndex();
|
|
232
|
+
yield index.insertItem({ id: "1", vector: [0.9, 0, 0, 0, 0] });
|
|
233
|
+
const result = yield index.queryItems([0, 0, 0, 0, 0.1], "", 1);
|
|
234
|
+
node_assert_1.default.equal((_a = result[0]) === null || _a === void 0 ? void 0 : _a.score, 0);
|
|
235
|
+
node_assert_1.default.equal((_b = result[0]) === null || _b === void 0 ? void 0 : _b.item.id, "1");
|
|
236
|
+
}));
|
|
237
|
+
it("returns all vectors when fewer than topK exist", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
238
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
239
|
+
yield index.createIndex();
|
|
240
|
+
yield index.batchInsertItems(basicIndexItems);
|
|
241
|
+
const result = yield index.queryItems([0, 0, 1], "", 10);
|
|
242
|
+
node_assert_1.default.equal(result.length, 3);
|
|
243
|
+
node_assert_1.default.deepStrictEqual(result.map(({ item }) => item.id), basicIndexItems.map((item) => item.id));
|
|
244
|
+
}));
|
|
245
|
+
it("filters by metadata when filter provided", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
246
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
247
|
+
yield index.createIndex();
|
|
248
|
+
yield index.batchInsertItems([
|
|
249
|
+
{ id: "1", vector: [1, 0, 0], metadata: { category: "food" } },
|
|
250
|
+
{ id: "2", vector: [0, 0, 1], metadata: { category: "drink" } },
|
|
251
|
+
]);
|
|
252
|
+
const bestGeneralMatch = yield index.queryItems([1, 0, 0], "", 1);
|
|
253
|
+
const bestDrinkMatch = yield index.queryItems([1, 0, 0], "", 1, {
|
|
254
|
+
category: { $eq: "drink" },
|
|
255
|
+
});
|
|
256
|
+
node_assert_1.default.equal(bestGeneralMatch[0].item.id, "1");
|
|
257
|
+
node_assert_1.default.equal(bestDrinkMatch[0].item.id, "2");
|
|
258
|
+
}));
|
|
259
|
+
it("reads item metadata file when provided", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
260
|
+
const index = new LocalIndex_1.LocalIndex(testIndexDir);
|
|
261
|
+
yield index.createIndex({ version: 1, metadata_config: { indexed: ['category'] } });
|
|
262
|
+
yield index.batchInsertItems([
|
|
263
|
+
{ id: "1", vector: [1, 0, 0] },
|
|
264
|
+
{ id: "2", vector: [0, 0, 1], metadata: { category: 'drink' } },
|
|
265
|
+
]);
|
|
266
|
+
sinon_1.default
|
|
267
|
+
.stub(promises_1.default, "readFile")
|
|
268
|
+
.resolves(JSON.stringify({ category: "drink" }));
|
|
269
|
+
const bestDrinkMatch = yield index.queryItems([1, 0, 0], "", 2, { category: { '$eq': 'drink' } });
|
|
270
|
+
node_assert_1.default.notEqual(bestDrinkMatch[0].item.metadataFile, undefined);
|
|
271
|
+
node_assert_1.default.equal(bestDrinkMatch[0].item.id, "2");
|
|
272
|
+
}));
|
|
273
|
+
});
|
|
63
274
|
});
|
|
64
275
|
//# sourceMappingURL=LocalIndex.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalIndex.spec.js","sourceRoot":"","sources":["../src/LocalIndex.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LocalIndex.spec.js","sourceRoot":"","sources":["../src/LocalIndex.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
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. Number of embedding dimensions to return.
|
|
7
|
+
*/
|
|
8
|
+
dimensions?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Optional. Whether to log requests to the console.
|
|
11
|
+
* @remarks
|
|
12
|
+
* This is useful for debugging prompts and defaults to `false`.
|
|
13
|
+
*/
|
|
14
|
+
logRequests?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Optional. Maximum number of tokens that can be sent to the embedding model.
|
|
17
|
+
*/
|
|
18
|
+
maxTokens?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Optional. Retry policy to use when calling the OpenAI API.
|
|
21
|
+
* @remarks
|
|
22
|
+
* The default retry policy is `[2000, 5000]` which means that the first retry will be after
|
|
23
|
+
* 2 seconds and the second retry will be after 5 seconds.
|
|
24
|
+
*/
|
|
25
|
+
retryPolicy?: number[];
|
|
26
|
+
/**
|
|
27
|
+
* Optional. Request options to use when calling the OpenAI API.
|
|
28
|
+
*/
|
|
29
|
+
requestConfig?: AxiosRequestConfig;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Options for configuring an `OpenAIEmbeddings` to generate embeddings using an OSS hosted model.
|
|
33
|
+
*/
|
|
34
|
+
export interface OSSEmbeddingsOptions extends BaseOpenAIEmbeddingsOptions {
|
|
35
|
+
/**
|
|
36
|
+
* Model to use for completion.
|
|
37
|
+
*/
|
|
38
|
+
ossModel: string;
|
|
39
|
+
/**
|
|
40
|
+
* Optional. Endpoint to use when calling the OpenAI API.
|
|
41
|
+
* @remarks
|
|
42
|
+
* For Azure OpenAI this is the deployment endpoint.
|
|
43
|
+
*/
|
|
44
|
+
ossEndpoint: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Options for configuring an `OpenAIEmbeddings` to generate embeddings using an OpenAI hosted model.
|
|
48
|
+
*/
|
|
49
|
+
export interface OpenAIEmbeddingsOptions extends BaseOpenAIEmbeddingsOptions {
|
|
50
|
+
/**
|
|
51
|
+
* API key to use when calling the OpenAI API.
|
|
52
|
+
* @remarks
|
|
53
|
+
* A new API key can be created at https://platform.openai.com/account/api-keys.
|
|
54
|
+
*/
|
|
55
|
+
apiKey: string;
|
|
56
|
+
/**
|
|
57
|
+
* Model to use for completion.
|
|
58
|
+
* @remarks
|
|
59
|
+
* For Azure OpenAI this is the name of the deployment to use.
|
|
60
|
+
*/
|
|
61
|
+
model: string;
|
|
62
|
+
/**
|
|
63
|
+
* Optional. Organization to use when calling the OpenAI API.
|
|
64
|
+
*/
|
|
65
|
+
organization?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Optional. Endpoint to use when calling the OpenAI API.
|
|
68
|
+
*/
|
|
69
|
+
endpoint?: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Options for configuring an `OpenAIEmbeddings` to generate embeddings using an Azure OpenAI hosted model.
|
|
73
|
+
*/
|
|
74
|
+
export interface AzureOpenAIEmbeddingsOptions extends BaseOpenAIEmbeddingsOptions {
|
|
75
|
+
/**
|
|
76
|
+
* API key to use when making requests to Azure OpenAI.
|
|
77
|
+
*/
|
|
78
|
+
azureApiKey: string;
|
|
79
|
+
/**
|
|
80
|
+
* Deployment endpoint to use.
|
|
81
|
+
*/
|
|
82
|
+
azureEndpoint: string;
|
|
83
|
+
/**
|
|
84
|
+
* Name of the Azure OpenAI deployment (model) to use.
|
|
85
|
+
*/
|
|
86
|
+
azureDeployment: string;
|
|
87
|
+
/**
|
|
88
|
+
* Optional. Version of the API being called. Defaults to `2023-05-15`.
|
|
89
|
+
*/
|
|
90
|
+
azureApiVersion?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* A `PromptCompletionModel` for calling OpenAI and Azure OpenAI hosted models.
|
|
94
|
+
* @remarks
|
|
95
|
+
*/
|
|
96
|
+
export declare class OpenAIEmbeddings implements EmbeddingsModel {
|
|
97
|
+
private readonly _httpClient;
|
|
98
|
+
private readonly _clientType;
|
|
99
|
+
private readonly UserAgent;
|
|
100
|
+
readonly maxTokens: number;
|
|
101
|
+
/**
|
|
102
|
+
* Options the client was configured with.
|
|
103
|
+
*/
|
|
104
|
+
readonly options: OSSEmbeddingsOptions | OpenAIEmbeddingsOptions | AzureOpenAIEmbeddingsOptions;
|
|
105
|
+
/**
|
|
106
|
+
* Creates a new `OpenAIClient` instance.
|
|
107
|
+
* @param options Options for configuring an `OpenAIClient`.
|
|
108
|
+
*/
|
|
109
|
+
constructor(options: OSSEmbeddingsOptions | OpenAIEmbeddingsOptions | AzureOpenAIEmbeddingsOptions);
|
|
110
|
+
/**
|
|
111
|
+
* Creates embeddings for the given inputs using the OpenAI API.
|
|
112
|
+
* @param model Name of the model to use (or deployment for Azure).
|
|
113
|
+
* @param inputs Text inputs to create embeddings for.
|
|
114
|
+
* @returns A `EmbeddingsResponse` with a status and the generated embeddings or a message when an error occurs.
|
|
115
|
+
*/
|
|
116
|
+
createEmbeddings(inputs: string | string[]): Promise<EmbeddingsResponse>;
|
|
117
|
+
/**
|
|
118
|
+
* @private
|
|
119
|
+
*/
|
|
120
|
+
protected createEmbeddingRequest(request: CreateEmbeddingRequest): Promise<AxiosResponse<CreateEmbeddingResponse>>;
|
|
121
|
+
/**
|
|
122
|
+
* @private
|
|
123
|
+
*/
|
|
124
|
+
protected post<TData>(url: string, body: object, retryCount?: number): Promise<AxiosResponse<TData>>;
|
|
125
|
+
}
|
|
126
|
+
//# 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;AAG5G,MAAM,WAAW,2BAA2B;IACxC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACtC;AAGD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,2BAA2B;IACrE;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;CACvB;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;;OAEG;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,WAAW,CAAa;IAEzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IAEzC,SAAgB,SAAS,SAAC;IAE1B;;OAEG;IACH,SAAgB,OAAO,EAAE,oBAAoB,GAAC,uBAAuB,GAAC,4BAA4B,CAAC;IAEnG;;;OAGG;gBACgB,OAAO,EAAE,oBAAoB,GAAC,uBAAuB,GAAC,4BAA4B;IAwCrG;;;;;OAKG;IACU,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6BrF;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAqBlH;;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"}
|
|
@@ -0,0 +1,174 @@
|
|
|
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.OpenAIEmbeddings = void 0;
|
|
16
|
+
const axios_1 = __importDefault(require("axios"));
|
|
17
|
+
const internals_1 = require("./internals");
|
|
18
|
+
/**
|
|
19
|
+
* A `PromptCompletionModel` for calling OpenAI and Azure OpenAI hosted models.
|
|
20
|
+
* @remarks
|
|
21
|
+
*/
|
|
22
|
+
class OpenAIEmbeddings {
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new `OpenAIClient` instance.
|
|
25
|
+
* @param options Options for configuring an `OpenAIClient`.
|
|
26
|
+
*/
|
|
27
|
+
constructor(options) {
|
|
28
|
+
var _a;
|
|
29
|
+
this.UserAgent = 'AlphaWave';
|
|
30
|
+
this.maxTokens = (_a = options.maxTokens) !== null && _a !== void 0 ? _a : 500;
|
|
31
|
+
// Check for azure config
|
|
32
|
+
if (options.azureApiKey) {
|
|
33
|
+
this._clientType = ClientType.AzureOpenAI;
|
|
34
|
+
this.options = Object.assign({
|
|
35
|
+
retryPolicy: [2000, 5000],
|
|
36
|
+
azureApiVersion: '2023-05-15',
|
|
37
|
+
}, options);
|
|
38
|
+
// Cleanup and validate endpoint
|
|
39
|
+
let endpoint = this.options.azureEndpoint.trim();
|
|
40
|
+
if (endpoint.endsWith('/')) {
|
|
41
|
+
endpoint = endpoint.substring(0, endpoint.length - 1);
|
|
42
|
+
}
|
|
43
|
+
if (!endpoint.toLowerCase().startsWith('https://')) {
|
|
44
|
+
throw new Error(`Client created with an invalid endpoint of '${endpoint}'. The endpoint must be a valid HTTPS url.`);
|
|
45
|
+
}
|
|
46
|
+
this.options.azureEndpoint = endpoint;
|
|
47
|
+
}
|
|
48
|
+
else if (options.ossModel) {
|
|
49
|
+
this._clientType = ClientType.OSS;
|
|
50
|
+
this.options = Object.assign({
|
|
51
|
+
retryPolicy: [2000, 5000]
|
|
52
|
+
}, options);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this._clientType = ClientType.OpenAI;
|
|
56
|
+
this.options = Object.assign({
|
|
57
|
+
retryPolicy: [2000, 5000]
|
|
58
|
+
}, options);
|
|
59
|
+
}
|
|
60
|
+
// Create client
|
|
61
|
+
this._httpClient = axios_1.default.create({
|
|
62
|
+
validateStatus: (status) => status < 400 || status == 429
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Creates embeddings for the given inputs using the OpenAI API.
|
|
67
|
+
* @param model Name of the model to use (or deployment for Azure).
|
|
68
|
+
* @param inputs Text inputs to create embeddings for.
|
|
69
|
+
* @returns A `EmbeddingsResponse` with a status and the generated embeddings or a message when an error occurs.
|
|
70
|
+
*/
|
|
71
|
+
createEmbeddings(inputs) {
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
if (this.options.logRequests) {
|
|
74
|
+
console.log(internals_1.Colorize.title('EMBEDDINGS REQUEST:'));
|
|
75
|
+
console.log(internals_1.Colorize.output(inputs));
|
|
76
|
+
}
|
|
77
|
+
const startTime = Date.now();
|
|
78
|
+
const response = yield this.createEmbeddingRequest({
|
|
79
|
+
input: inputs,
|
|
80
|
+
});
|
|
81
|
+
if (this.options.logRequests) {
|
|
82
|
+
console.log(internals_1.Colorize.title('RESPONSE:'));
|
|
83
|
+
console.log(internals_1.Colorize.value('status', response.status));
|
|
84
|
+
console.log(internals_1.Colorize.value('duration', Date.now() - startTime, 'ms'));
|
|
85
|
+
console.log(internals_1.Colorize.output(response.data));
|
|
86
|
+
}
|
|
87
|
+
// Process response
|
|
88
|
+
if (response.status < 300) {
|
|
89
|
+
return { status: 'success', output: response.data.data.sort((a, b) => a.index - b.index).map((item) => item.embedding) };
|
|
90
|
+
}
|
|
91
|
+
else if (response.status == 429) {
|
|
92
|
+
return { status: 'rate_limited', message: `The embeddings API returned a rate limit error.` };
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return { status: 'error', message: `The embeddings API returned an error status of ${response.status}: ${response.statusText}` };
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
createEmbeddingRequest(request) {
|
|
103
|
+
var _a;
|
|
104
|
+
if (this.options.dimensions) {
|
|
105
|
+
request.dimensions = this.options.dimensions;
|
|
106
|
+
}
|
|
107
|
+
if (this._clientType == ClientType.AzureOpenAI) {
|
|
108
|
+
const options = this.options;
|
|
109
|
+
const url = `${options.azureEndpoint}/openai/deployments/${options.azureDeployment}/embeddings?api-version=${options.azureApiVersion}`;
|
|
110
|
+
return this.post(url, request);
|
|
111
|
+
}
|
|
112
|
+
else if (this._clientType == ClientType.OSS) {
|
|
113
|
+
const options = this.options;
|
|
114
|
+
const url = `${options.ossEndpoint}/v1/embeddings`;
|
|
115
|
+
request.model = options.ossModel;
|
|
116
|
+
return this.post(url, request);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
const options = this.options;
|
|
120
|
+
const url = `${(_a = options.endpoint) !== null && _a !== void 0 ? _a : 'https://api.openai.com'}/v1/embeddings`;
|
|
121
|
+
request.model = options.model;
|
|
122
|
+
return this.post(url, request);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
post(url_1, body_1) {
|
|
129
|
+
return __awaiter(this, arguments, void 0, function* (url, body, retryCount = 0) {
|
|
130
|
+
// Initialize request config
|
|
131
|
+
const requestConfig = Object.assign({}, this.options.requestConfig);
|
|
132
|
+
// Initialize request headers
|
|
133
|
+
if (!requestConfig.headers) {
|
|
134
|
+
requestConfig.headers = {};
|
|
135
|
+
}
|
|
136
|
+
if (!requestConfig.headers['Content-Type']) {
|
|
137
|
+
requestConfig.headers['Content-Type'] = 'application/json';
|
|
138
|
+
}
|
|
139
|
+
if (!requestConfig.headers['User-Agent']) {
|
|
140
|
+
requestConfig.headers['User-Agent'] = this.UserAgent;
|
|
141
|
+
}
|
|
142
|
+
if (this._clientType == ClientType.AzureOpenAI) {
|
|
143
|
+
const options = this.options;
|
|
144
|
+
requestConfig.headers['api-key'] = options.azureApiKey;
|
|
145
|
+
}
|
|
146
|
+
else if (this._clientType == ClientType.OpenAI) {
|
|
147
|
+
const options = this.options;
|
|
148
|
+
requestConfig.headers['Authorization'] = `Bearer ${options.apiKey}`;
|
|
149
|
+
if (options.organization) {
|
|
150
|
+
requestConfig.headers['OpenAI-Organization'] = options.organization;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Send request
|
|
154
|
+
const response = yield this._httpClient.post(url, body, requestConfig);
|
|
155
|
+
// Check for rate limit error
|
|
156
|
+
if (response.status == 429 && Array.isArray(this.options.retryPolicy) && retryCount < this.options.retryPolicy.length) {
|
|
157
|
+
const delay = this.options.retryPolicy[retryCount];
|
|
158
|
+
yield new Promise((resolve) => setTimeout(resolve, delay));
|
|
159
|
+
return this.post(url, body, retryCount + 1);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
return response;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.OpenAIEmbeddings = OpenAIEmbeddings;
|
|
168
|
+
var ClientType;
|
|
169
|
+
(function (ClientType) {
|
|
170
|
+
ClientType[ClientType["OpenAI"] = 0] = "OpenAI";
|
|
171
|
+
ClientType[ClientType["AzureOpenAI"] = 1] = "AzureOpenAI";
|
|
172
|
+
ClientType[ClientType["OSS"] = 2] = "OSS";
|
|
173
|
+
})(ClientType || (ClientType = {}));
|
|
174
|
+
//# sourceMappingURL=OpenAIEmbeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIEmbeddings.js","sourceRoot":"","sources":["../src/OpenAIEmbeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TextChunk, Tokenizer } from "./types";
|
|
2
|
+
export interface TextSplitterConfig {
|
|
3
|
+
separators: string[];
|
|
4
|
+
keepSeparators: boolean;
|
|
5
|
+
chunkSize: number;
|
|
6
|
+
chunkOverlap: number;
|
|
7
|
+
tokenizer: Tokenizer;
|
|
8
|
+
docType?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class TextSplitter {
|
|
11
|
+
private readonly _config;
|
|
12
|
+
constructor(config?: Partial<TextSplitterConfig>);
|
|
13
|
+
split(text: string): TextChunk[];
|
|
14
|
+
private recursiveSplit;
|
|
15
|
+
private combineChunks;
|
|
16
|
+
private splitBySpaces;
|
|
17
|
+
private getSeparators;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=TextSplitter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextSplitter.d.ts","sourceRoot":"","sources":["../src/TextSplitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI/C,MAAM,WAAW,kBAAkB;
|
|
1
|
+
{"version":3,"file":"TextSplitter.d.ts","sourceRoot":"","sources":["../src/TextSplitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI/C,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAE1B,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IA2BhD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;IA+BvC,OAAO,CAAC,cAAc;IAuEtB,OAAO,CAAC,aAAa;IAsDrB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,aAAa;CA8QtB"}
|