chromadb 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main/index.d.ts +29 -11
- package/dist/main/index.d.ts.map +1 -1
- package/dist/main/index.js +136 -17
- package/dist/main/index.js.map +1 -1
- package/dist/module/index.d.ts +29 -11
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +133 -16
- package/dist/module/index.js.map +1 -1
- package/package.json +15 -2
- package/src/index.ts +173 -24
package/dist/main/index.d.ts
CHANGED
|
@@ -1,23 +1,41 @@
|
|
|
1
1
|
import { DefaultApi } from "./generated/api";
|
|
2
|
+
export declare class OpenAIEmbeddingFunction {
|
|
3
|
+
private api_key;
|
|
4
|
+
private org_id;
|
|
5
|
+
private model;
|
|
6
|
+
constructor(openai_api_key: string, openai_model: string, openai_organization_id: string);
|
|
7
|
+
generate(texts: string[]): Promise<any[]>;
|
|
8
|
+
}
|
|
9
|
+
export declare class CohereEmbeddingFunction {
|
|
10
|
+
private api_key;
|
|
11
|
+
constructor(cohere_api_key: string);
|
|
12
|
+
generate(texts: string[]): Promise<any>;
|
|
13
|
+
}
|
|
14
|
+
type CallableFunction = {
|
|
15
|
+
new (): CallableFunction;
|
|
16
|
+
generate(texts: string[]): number[][];
|
|
17
|
+
};
|
|
2
18
|
export declare class Collection {
|
|
3
|
-
|
|
19
|
+
name: string;
|
|
4
20
|
private api;
|
|
5
|
-
|
|
6
|
-
|
|
21
|
+
embeddingFunction: CallableFunction | undefined;
|
|
22
|
+
constructor(name: string, api: DefaultApi, embeddingFunction?: CallableFunction);
|
|
23
|
+
add(ids: string | string[], embeddings: number[] | number[][], metadatas?: object | object[], documents?: string | string[], increment_index?: boolean): Promise<any>;
|
|
7
24
|
count(): Promise<any>;
|
|
8
|
-
get(ids?: string[], where?: object, limit?: number, offset?: number): Promise<
|
|
9
|
-
query(query_embeddings: number[], n_results?: number, where?: object): Promise<any>;
|
|
10
|
-
peek(limit?: number): Promise<
|
|
25
|
+
get(ids?: string[], where?: object, limit?: number, offset?: number): Promise<any>;
|
|
26
|
+
query(query_embeddings: number[] | number[][], n_results?: number, where?: object, query_text?: string | string[]): Promise<any>;
|
|
27
|
+
peek(limit?: number): Promise<any>;
|
|
11
28
|
createIndex(): Promise<import("axios").AxiosResponse<any, any>>;
|
|
12
|
-
delete(ids?: string[], where?: object): Promise<
|
|
29
|
+
delete(ids?: string[], where?: object): Promise<any>;
|
|
13
30
|
}
|
|
14
31
|
export declare class ChromaClient {
|
|
15
32
|
private api;
|
|
16
|
-
constructor(basePath
|
|
33
|
+
constructor(basePath?: string);
|
|
17
34
|
reset(): Promise<import("axios").AxiosResponse<any, any>>;
|
|
18
|
-
createCollection(name: string, metadata?: object): Promise<Collection>;
|
|
35
|
+
createCollection(name: string, metadata?: object, embeddingFunction?: CallableFunction): Promise<Collection>;
|
|
19
36
|
listCollections(): Promise<any>;
|
|
20
|
-
getCollection(name: string): Promise<Collection>;
|
|
21
|
-
deleteCollection(name: string): Promise<
|
|
37
|
+
getCollection(name: string, embeddingFunction?: CallableFunction): Promise<Collection>;
|
|
38
|
+
deleteCollection(name: string): Promise<any>;
|
|
22
39
|
}
|
|
40
|
+
export {};
|
|
23
41
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/main/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAyB7C,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM;IAc3E,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;CAiBtC;AAID,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAS;gBAEZ,cAAc,EAAE,MAAM;IAYrB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;CAQtC;AAED,KAAK,gBAAgB,GAAG;IACtB,QAAO,gBAAgB,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;CACvC,CAAC;AAEF,qBAAa,UAAU;IACd,IAAI,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,GAAG,CAAa;IACjB,iBAAiB,EAAE,gBAAgB,GAAG,SAAS,CAAC;gBAE3C,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE,gBAAgB;IAOlE,GAAG,CACd,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EACtB,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EACjC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,eAAe,GAAE,OAAc;IA8DpB,KAAK;IAKL,GAAG,CACd,GAAG,CAAC,EAAE,MAAM,EAAE,EACd,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM;IAuBJ,KAAK,CAChB,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EACvC,SAAS,GAAE,MAAW,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAmCnB,IAAI,CAAC,KAAK,GAAE,MAAW;IAQvB,WAAW;IAIX,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM;CAanD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAa;gBAEZ,QAAQ,CAAC,EAAE,MAAM;IAQhB,KAAK;IAIL,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,gBAAgB;IAgBtF,eAAe;IAKf,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,gBAAgB;IAIhE,gBAAgB,CAAC,IAAI,EAAE,MAAM;CAU3C"}
|
package/dist/main/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ChromaClient = exports.Collection = void 0;
|
|
3
|
+
exports.ChromaClient = exports.Collection = exports.CohereEmbeddingFunction = exports.OpenAIEmbeddingFunction = void 0;
|
|
4
4
|
const api_1 = require("./generated/api");
|
|
5
5
|
const configuration_1 = require("./generated/configuration");
|
|
6
6
|
// a function to convert a non-Array object to an Array
|
|
@@ -21,12 +21,83 @@ function toArrayOfArrays(obj) {
|
|
|
21
21
|
return [obj];
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
+
class EmbeddingFunction {
|
|
25
|
+
}
|
|
26
|
+
let OpenAIApi;
|
|
27
|
+
class OpenAIEmbeddingFunction {
|
|
28
|
+
constructor(openai_api_key, openai_model, openai_organization_id) {
|
|
29
|
+
try {
|
|
30
|
+
// eslint-disable-next-line global-require,import/no-extraneous-dependencies
|
|
31
|
+
OpenAIApi = require("openai");
|
|
32
|
+
}
|
|
33
|
+
catch (_a) {
|
|
34
|
+
throw new Error("Please install the openai package to use the OpenAIEmbeddingFunction, `npm install -S openai`");
|
|
35
|
+
}
|
|
36
|
+
this.api_key = openai_api_key;
|
|
37
|
+
this.org_id = openai_organization_id || "";
|
|
38
|
+
this.model = openai_model || "text-embedding-ada-002";
|
|
39
|
+
}
|
|
40
|
+
async generate(texts) {
|
|
41
|
+
const configuration = new OpenAIApi.Configuration({
|
|
42
|
+
organization: this.org_id,
|
|
43
|
+
apiKey: this.api_key,
|
|
44
|
+
});
|
|
45
|
+
const openai = new OpenAIApi.OpenAIApi(configuration);
|
|
46
|
+
const embeddings = [];
|
|
47
|
+
const response = await openai.createEmbedding({
|
|
48
|
+
model: "text-embedding-ada-002",
|
|
49
|
+
input: texts,
|
|
50
|
+
});
|
|
51
|
+
const data = response.data['data'];
|
|
52
|
+
for (let i = 0; i < data.length; i += 1) {
|
|
53
|
+
embeddings.push(data[i]['embedding']);
|
|
54
|
+
}
|
|
55
|
+
return embeddings;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.OpenAIEmbeddingFunction = OpenAIEmbeddingFunction;
|
|
59
|
+
let CohereAiApi;
|
|
60
|
+
class CohereEmbeddingFunction {
|
|
61
|
+
constructor(cohere_api_key) {
|
|
62
|
+
try {
|
|
63
|
+
// eslint-disable-next-line global-require,import/no-extraneous-dependencies
|
|
64
|
+
CohereAiApi = require("cohere-ai");
|
|
65
|
+
}
|
|
66
|
+
catch (_a) {
|
|
67
|
+
throw new Error("Please install the cohere-ai package to use the CohereEmbeddingFunction, `npm install -S cohere-ai`");
|
|
68
|
+
}
|
|
69
|
+
this.api_key = cohere_api_key;
|
|
70
|
+
}
|
|
71
|
+
async generate(texts) {
|
|
72
|
+
const cohere = CohereAiApi.init(this.api_key);
|
|
73
|
+
const embeddings = [];
|
|
74
|
+
const response = await CohereAiApi.embed({
|
|
75
|
+
texts: texts,
|
|
76
|
+
});
|
|
77
|
+
return response.body.embeddings;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.CohereEmbeddingFunction = CohereEmbeddingFunction;
|
|
24
81
|
class Collection {
|
|
25
|
-
constructor(name, api) {
|
|
82
|
+
constructor(name, api, embeddingFunction) {
|
|
26
83
|
this.name = name;
|
|
27
84
|
this.api = api;
|
|
85
|
+
if (embeddingFunction !== undefined)
|
|
86
|
+
this.embeddingFunction = embeddingFunction;
|
|
28
87
|
}
|
|
29
88
|
async add(ids, embeddings, metadatas, documents, increment_index = true) {
|
|
89
|
+
if ((embeddings === undefined) && (documents === undefined)) {
|
|
90
|
+
throw new Error("embeddings and documents cannot both be undefined");
|
|
91
|
+
}
|
|
92
|
+
else if ((embeddings === undefined) && (documents !== undefined)) {
|
|
93
|
+
const documentsArray = toArray(documents);
|
|
94
|
+
if (this.embeddingFunction !== undefined) {
|
|
95
|
+
embeddings = await this.embeddingFunction.generate(documentsArray);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
throw new Error("embeddingFunction is undefined. Please configure an embedding function");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
30
101
|
const idsArray = toArray(ids);
|
|
31
102
|
const embeddingsArray = toArrayOfArrays(embeddings);
|
|
32
103
|
let metadatasArray;
|
|
@@ -37,18 +108,18 @@ class Collection {
|
|
|
37
108
|
metadatasArray = toArray(metadatas);
|
|
38
109
|
}
|
|
39
110
|
let documentsArray;
|
|
40
|
-
if (
|
|
111
|
+
if (documents === undefined) {
|
|
41
112
|
documentsArray = undefined;
|
|
42
113
|
}
|
|
43
114
|
else {
|
|
44
|
-
documentsArray = toArray(
|
|
115
|
+
documentsArray = toArray(documents);
|
|
45
116
|
}
|
|
46
|
-
if (idsArray.length !== embeddingsArray.length ||
|
|
117
|
+
if (((embeddingsArray !== undefined) && idsArray.length !== embeddingsArray.length) ||
|
|
47
118
|
((metadatasArray !== undefined) && idsArray.length !== metadatasArray.length) ||
|
|
48
119
|
((documentsArray !== undefined) && idsArray.length !== documentsArray.length)) {
|
|
49
120
|
throw new Error("ids, embeddings, metadatas, and documents must all be the same length");
|
|
50
121
|
}
|
|
51
|
-
|
|
122
|
+
const response = await this.api.add({
|
|
52
123
|
collectionName: this.name,
|
|
53
124
|
addEmbedding: {
|
|
54
125
|
ids: idsArray,
|
|
@@ -57,15 +128,22 @@ class Collection {
|
|
|
57
128
|
metadatas: metadatasArray,
|
|
58
129
|
increment_index: increment_index,
|
|
59
130
|
},
|
|
131
|
+
}).then(function (response) {
|
|
132
|
+
return response.data;
|
|
133
|
+
}).catch(function ({ response }) {
|
|
134
|
+
return response.data;
|
|
60
135
|
});
|
|
136
|
+
return response;
|
|
61
137
|
}
|
|
62
138
|
async count() {
|
|
63
139
|
const response = await this.api.count({ collectionName: this.name });
|
|
64
140
|
return response.data;
|
|
65
141
|
}
|
|
66
142
|
async get(ids, where, limit, offset) {
|
|
67
|
-
|
|
68
|
-
|
|
143
|
+
let idsArray = undefined;
|
|
144
|
+
if (ids !== undefined)
|
|
145
|
+
idsArray = toArray(ids);
|
|
146
|
+
var resp = await this.api.get({
|
|
69
147
|
collectionName: this.name,
|
|
70
148
|
getEmbedding: {
|
|
71
149
|
ids: idsArray,
|
|
@@ -73,9 +151,26 @@ class Collection {
|
|
|
73
151
|
limit,
|
|
74
152
|
offset,
|
|
75
153
|
},
|
|
154
|
+
}).then(function (response) {
|
|
155
|
+
return response.data;
|
|
156
|
+
}).catch(function ({ response }) {
|
|
157
|
+
return response.data;
|
|
76
158
|
});
|
|
159
|
+
return resp;
|
|
77
160
|
}
|
|
78
|
-
async query(query_embeddings, n_results = 10, where) {
|
|
161
|
+
async query(query_embeddings, n_results = 10, where, query_text) {
|
|
162
|
+
if ((query_embeddings === undefined) && (query_text === undefined)) {
|
|
163
|
+
throw new Error("query_embeddings and query_text cannot both be undefined");
|
|
164
|
+
}
|
|
165
|
+
else if ((query_embeddings === undefined) && (query_text !== undefined)) {
|
|
166
|
+
const query_texts = toArray(query_text);
|
|
167
|
+
if (this.embeddingFunction !== undefined) {
|
|
168
|
+
query_embeddings = await this.embeddingFunction.generate(query_texts);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
throw new Error("embeddingFunction is undefined. Please configure an embedding function");
|
|
172
|
+
}
|
|
173
|
+
}
|
|
79
174
|
const query_embeddingsArray = toArrayOfArrays(query_embeddings);
|
|
80
175
|
const response = await this.api.getNearestNeighbors({
|
|
81
176
|
collectionName: this.name,
|
|
@@ -84,28 +179,40 @@ class Collection {
|
|
|
84
179
|
where,
|
|
85
180
|
n_results,
|
|
86
181
|
},
|
|
182
|
+
}).then(function (response) {
|
|
183
|
+
return response.data;
|
|
184
|
+
}).catch(function ({ response }) {
|
|
185
|
+
return response.data;
|
|
87
186
|
});
|
|
88
|
-
return response
|
|
187
|
+
return response;
|
|
89
188
|
}
|
|
90
189
|
async peek(limit = 10) {
|
|
91
|
-
|
|
190
|
+
const response = await this.api.get({
|
|
92
191
|
collectionName: this.name,
|
|
93
192
|
getEmbedding: { limit: limit },
|
|
94
193
|
});
|
|
194
|
+
return response.data;
|
|
95
195
|
}
|
|
96
196
|
async createIndex() {
|
|
97
197
|
return await this.api.createIndex({ collectionName: this.name });
|
|
98
198
|
}
|
|
99
199
|
async delete(ids, where) {
|
|
100
|
-
|
|
200
|
+
var response = await this.api._delete({
|
|
101
201
|
collectionName: this.name,
|
|
102
202
|
deleteEmbedding: { ids: ids, where: where },
|
|
203
|
+
}).then(function (response) {
|
|
204
|
+
return response.data;
|
|
205
|
+
}).catch(function ({ response }) {
|
|
206
|
+
return response.data;
|
|
103
207
|
});
|
|
208
|
+
return response;
|
|
104
209
|
}
|
|
105
210
|
}
|
|
106
211
|
exports.Collection = Collection;
|
|
107
212
|
class ChromaClient {
|
|
108
213
|
constructor(basePath) {
|
|
214
|
+
if (basePath === undefined)
|
|
215
|
+
basePath = "http://localhost:8000";
|
|
109
216
|
const apiConfig = new configuration_1.Configuration({
|
|
110
217
|
basePath,
|
|
111
218
|
});
|
|
@@ -114,21 +221,33 @@ class ChromaClient {
|
|
|
114
221
|
async reset() {
|
|
115
222
|
return await this.api.reset();
|
|
116
223
|
}
|
|
117
|
-
async createCollection(name, metadata) {
|
|
224
|
+
async createCollection(name, metadata, embeddingFunction) {
|
|
118
225
|
const newCollection = await this.api.createCollection({
|
|
119
226
|
createCollection: { name, metadata },
|
|
227
|
+
}).then(function (response) {
|
|
228
|
+
return response.data;
|
|
229
|
+
}).catch(function ({ response }) {
|
|
230
|
+
return response.data;
|
|
120
231
|
});
|
|
121
|
-
|
|
232
|
+
if (newCollection.error) {
|
|
233
|
+
throw new Error(newCollection.error);
|
|
234
|
+
}
|
|
235
|
+
return new Collection(name, this.api, embeddingFunction);
|
|
122
236
|
}
|
|
123
237
|
async listCollections() {
|
|
124
238
|
const response = await this.api.listCollections();
|
|
125
239
|
return response.data;
|
|
126
240
|
}
|
|
127
|
-
async getCollection(name) {
|
|
128
|
-
return new Collection(name, this.api);
|
|
241
|
+
async getCollection(name, embeddingFunction) {
|
|
242
|
+
return new Collection(name, this.api, embeddingFunction);
|
|
129
243
|
}
|
|
130
244
|
async deleteCollection(name) {
|
|
131
|
-
|
|
245
|
+
const response = await this.api.deleteCollection({ collectionName: name }).then(function (response) {
|
|
246
|
+
return response.data;
|
|
247
|
+
}).catch(function ({ response }) {
|
|
248
|
+
return response.data;
|
|
249
|
+
});
|
|
250
|
+
return response;
|
|
132
251
|
}
|
|
133
252
|
}
|
|
134
253
|
exports.ChromaClient = ChromaClient;
|
package/dist/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA6C;AAC7C,6DAA0D;AAE1D,uDAAuD;AACvD,SAAS,OAAO,CAAI,GAAiB;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC;KACZ;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;AACH,CAAC;AAED,oDAAoD;AACpD,SAAS,eAAe,CAAI,GAA+B;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACzB,OAAO,GAAsB,CAAC;KAC/B;SAAM;QACL,OAAO,CAAC,GAAG,CAAoB,CAAC;KACjC;AACH,CAAC;AAED,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/module/index.d.ts
CHANGED
|
@@ -1,23 +1,41 @@
|
|
|
1
1
|
import { DefaultApi } from "./generated/api";
|
|
2
|
+
export declare class OpenAIEmbeddingFunction {
|
|
3
|
+
private api_key;
|
|
4
|
+
private org_id;
|
|
5
|
+
private model;
|
|
6
|
+
constructor(openai_api_key: string, openai_model: string, openai_organization_id: string);
|
|
7
|
+
generate(texts: string[]): Promise<any[]>;
|
|
8
|
+
}
|
|
9
|
+
export declare class CohereEmbeddingFunction {
|
|
10
|
+
private api_key;
|
|
11
|
+
constructor(cohere_api_key: string);
|
|
12
|
+
generate(texts: string[]): Promise<any>;
|
|
13
|
+
}
|
|
14
|
+
type CallableFunction = {
|
|
15
|
+
new (): CallableFunction;
|
|
16
|
+
generate(texts: string[]): number[][];
|
|
17
|
+
};
|
|
2
18
|
export declare class Collection {
|
|
3
|
-
|
|
19
|
+
name: string;
|
|
4
20
|
private api;
|
|
5
|
-
|
|
6
|
-
|
|
21
|
+
embeddingFunction: CallableFunction | undefined;
|
|
22
|
+
constructor(name: string, api: DefaultApi, embeddingFunction?: CallableFunction);
|
|
23
|
+
add(ids: string | string[], embeddings: number[] | number[][], metadatas?: object | object[], documents?: string | string[], increment_index?: boolean): Promise<any>;
|
|
7
24
|
count(): Promise<any>;
|
|
8
|
-
get(ids?: string[], where?: object, limit?: number, offset?: number): Promise<
|
|
9
|
-
query(query_embeddings: number[], n_results?: number, where?: object): Promise<any>;
|
|
10
|
-
peek(limit?: number): Promise<
|
|
25
|
+
get(ids?: string[], where?: object, limit?: number, offset?: number): Promise<any>;
|
|
26
|
+
query(query_embeddings: number[] | number[][], n_results?: number, where?: object, query_text?: string | string[]): Promise<any>;
|
|
27
|
+
peek(limit?: number): Promise<any>;
|
|
11
28
|
createIndex(): Promise<import("axios").AxiosResponse<any, any>>;
|
|
12
|
-
delete(ids?: string[], where?: object): Promise<
|
|
29
|
+
delete(ids?: string[], where?: object): Promise<any>;
|
|
13
30
|
}
|
|
14
31
|
export declare class ChromaClient {
|
|
15
32
|
private api;
|
|
16
|
-
constructor(basePath
|
|
33
|
+
constructor(basePath?: string);
|
|
17
34
|
reset(): Promise<import("axios").AxiosResponse<any, any>>;
|
|
18
|
-
createCollection(name: string, metadata?: object): Promise<Collection>;
|
|
35
|
+
createCollection(name: string, metadata?: object, embeddingFunction?: CallableFunction): Promise<Collection>;
|
|
19
36
|
listCollections(): Promise<any>;
|
|
20
|
-
getCollection(name: string): Promise<Collection>;
|
|
21
|
-
deleteCollection(name: string): Promise<
|
|
37
|
+
getCollection(name: string, embeddingFunction?: CallableFunction): Promise<Collection>;
|
|
38
|
+
deleteCollection(name: string): Promise<any>;
|
|
22
39
|
}
|
|
40
|
+
export {};
|
|
23
41
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAyB7C,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM;IAc3E,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;CAiBtC;AAID,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAS;gBAEZ,cAAc,EAAE,MAAM;IAYrB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;CAQtC;AAED,KAAK,gBAAgB,GAAG;IACtB,QAAO,gBAAgB,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;CACvC,CAAC;AAEF,qBAAa,UAAU;IACd,IAAI,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,GAAG,CAAa;IACjB,iBAAiB,EAAE,gBAAgB,GAAG,SAAS,CAAC;gBAE3C,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE,gBAAgB;IAOlE,GAAG,CACd,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EACtB,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EACjC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,eAAe,GAAE,OAAc;IA8DpB,KAAK;IAKL,GAAG,CACd,GAAG,CAAC,EAAE,MAAM,EAAE,EACd,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM;IAuBJ,KAAK,CAChB,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EACvC,SAAS,GAAE,MAAW,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAmCnB,IAAI,CAAC,KAAK,GAAE,MAAW;IAQvB,WAAW;IAIX,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM;CAanD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAa;gBAEZ,QAAQ,CAAC,EAAE,MAAM;IAQhB,KAAK;IAIL,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,gBAAgB;IAgBtF,eAAe;IAKf,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,gBAAgB;IAIhE,gBAAgB,CAAC,IAAI,EAAE,MAAM;CAU3C"}
|
package/dist/module/index.js
CHANGED
|
@@ -18,12 +18,81 @@ function toArrayOfArrays(obj) {
|
|
|
18
18
|
return [obj];
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
+
class EmbeddingFunction {
|
|
22
|
+
}
|
|
23
|
+
let OpenAIApi;
|
|
24
|
+
export class OpenAIEmbeddingFunction {
|
|
25
|
+
constructor(openai_api_key, openai_model, openai_organization_id) {
|
|
26
|
+
try {
|
|
27
|
+
// eslint-disable-next-line global-require,import/no-extraneous-dependencies
|
|
28
|
+
OpenAIApi = require("openai");
|
|
29
|
+
}
|
|
30
|
+
catch (_a) {
|
|
31
|
+
throw new Error("Please install the openai package to use the OpenAIEmbeddingFunction, `npm install -S openai`");
|
|
32
|
+
}
|
|
33
|
+
this.api_key = openai_api_key;
|
|
34
|
+
this.org_id = openai_organization_id || "";
|
|
35
|
+
this.model = openai_model || "text-embedding-ada-002";
|
|
36
|
+
}
|
|
37
|
+
async generate(texts) {
|
|
38
|
+
const configuration = new OpenAIApi.Configuration({
|
|
39
|
+
organization: this.org_id,
|
|
40
|
+
apiKey: this.api_key,
|
|
41
|
+
});
|
|
42
|
+
const openai = new OpenAIApi.OpenAIApi(configuration);
|
|
43
|
+
const embeddings = [];
|
|
44
|
+
const response = await openai.createEmbedding({
|
|
45
|
+
model: "text-embedding-ada-002",
|
|
46
|
+
input: texts,
|
|
47
|
+
});
|
|
48
|
+
const data = response.data['data'];
|
|
49
|
+
for (let i = 0; i < data.length; i += 1) {
|
|
50
|
+
embeddings.push(data[i]['embedding']);
|
|
51
|
+
}
|
|
52
|
+
return embeddings;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
let CohereAiApi;
|
|
56
|
+
export class CohereEmbeddingFunction {
|
|
57
|
+
constructor(cohere_api_key) {
|
|
58
|
+
try {
|
|
59
|
+
// eslint-disable-next-line global-require,import/no-extraneous-dependencies
|
|
60
|
+
CohereAiApi = require("cohere-ai");
|
|
61
|
+
}
|
|
62
|
+
catch (_a) {
|
|
63
|
+
throw new Error("Please install the cohere-ai package to use the CohereEmbeddingFunction, `npm install -S cohere-ai`");
|
|
64
|
+
}
|
|
65
|
+
this.api_key = cohere_api_key;
|
|
66
|
+
}
|
|
67
|
+
async generate(texts) {
|
|
68
|
+
const cohere = CohereAiApi.init(this.api_key);
|
|
69
|
+
const embeddings = [];
|
|
70
|
+
const response = await CohereAiApi.embed({
|
|
71
|
+
texts: texts,
|
|
72
|
+
});
|
|
73
|
+
return response.body.embeddings;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
21
76
|
export class Collection {
|
|
22
|
-
constructor(name, api) {
|
|
77
|
+
constructor(name, api, embeddingFunction) {
|
|
23
78
|
this.name = name;
|
|
24
79
|
this.api = api;
|
|
80
|
+
if (embeddingFunction !== undefined)
|
|
81
|
+
this.embeddingFunction = embeddingFunction;
|
|
25
82
|
}
|
|
26
83
|
async add(ids, embeddings, metadatas, documents, increment_index = true) {
|
|
84
|
+
if ((embeddings === undefined) && (documents === undefined)) {
|
|
85
|
+
throw new Error("embeddings and documents cannot both be undefined");
|
|
86
|
+
}
|
|
87
|
+
else if ((embeddings === undefined) && (documents !== undefined)) {
|
|
88
|
+
const documentsArray = toArray(documents);
|
|
89
|
+
if (this.embeddingFunction !== undefined) {
|
|
90
|
+
embeddings = await this.embeddingFunction.generate(documentsArray);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
throw new Error("embeddingFunction is undefined. Please configure an embedding function");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
27
96
|
const idsArray = toArray(ids);
|
|
28
97
|
const embeddingsArray = toArrayOfArrays(embeddings);
|
|
29
98
|
let metadatasArray;
|
|
@@ -34,18 +103,18 @@ export class Collection {
|
|
|
34
103
|
metadatasArray = toArray(metadatas);
|
|
35
104
|
}
|
|
36
105
|
let documentsArray;
|
|
37
|
-
if (
|
|
106
|
+
if (documents === undefined) {
|
|
38
107
|
documentsArray = undefined;
|
|
39
108
|
}
|
|
40
109
|
else {
|
|
41
|
-
documentsArray = toArray(
|
|
110
|
+
documentsArray = toArray(documents);
|
|
42
111
|
}
|
|
43
|
-
if (idsArray.length !== embeddingsArray.length ||
|
|
112
|
+
if (((embeddingsArray !== undefined) && idsArray.length !== embeddingsArray.length) ||
|
|
44
113
|
((metadatasArray !== undefined) && idsArray.length !== metadatasArray.length) ||
|
|
45
114
|
((documentsArray !== undefined) && idsArray.length !== documentsArray.length)) {
|
|
46
115
|
throw new Error("ids, embeddings, metadatas, and documents must all be the same length");
|
|
47
116
|
}
|
|
48
|
-
|
|
117
|
+
const response = await this.api.add({
|
|
49
118
|
collectionName: this.name,
|
|
50
119
|
addEmbedding: {
|
|
51
120
|
ids: idsArray,
|
|
@@ -54,15 +123,22 @@ export class Collection {
|
|
|
54
123
|
metadatas: metadatasArray,
|
|
55
124
|
increment_index: increment_index,
|
|
56
125
|
},
|
|
126
|
+
}).then(function (response) {
|
|
127
|
+
return response.data;
|
|
128
|
+
}).catch(function ({ response }) {
|
|
129
|
+
return response.data;
|
|
57
130
|
});
|
|
131
|
+
return response;
|
|
58
132
|
}
|
|
59
133
|
async count() {
|
|
60
134
|
const response = await this.api.count({ collectionName: this.name });
|
|
61
135
|
return response.data;
|
|
62
136
|
}
|
|
63
137
|
async get(ids, where, limit, offset) {
|
|
64
|
-
|
|
65
|
-
|
|
138
|
+
let idsArray = undefined;
|
|
139
|
+
if (ids !== undefined)
|
|
140
|
+
idsArray = toArray(ids);
|
|
141
|
+
var resp = await this.api.get({
|
|
66
142
|
collectionName: this.name,
|
|
67
143
|
getEmbedding: {
|
|
68
144
|
ids: idsArray,
|
|
@@ -70,9 +146,26 @@ export class Collection {
|
|
|
70
146
|
limit,
|
|
71
147
|
offset,
|
|
72
148
|
},
|
|
149
|
+
}).then(function (response) {
|
|
150
|
+
return response.data;
|
|
151
|
+
}).catch(function ({ response }) {
|
|
152
|
+
return response.data;
|
|
73
153
|
});
|
|
154
|
+
return resp;
|
|
74
155
|
}
|
|
75
|
-
async query(query_embeddings, n_results = 10, where) {
|
|
156
|
+
async query(query_embeddings, n_results = 10, where, query_text) {
|
|
157
|
+
if ((query_embeddings === undefined) && (query_text === undefined)) {
|
|
158
|
+
throw new Error("query_embeddings and query_text cannot both be undefined");
|
|
159
|
+
}
|
|
160
|
+
else if ((query_embeddings === undefined) && (query_text !== undefined)) {
|
|
161
|
+
const query_texts = toArray(query_text);
|
|
162
|
+
if (this.embeddingFunction !== undefined) {
|
|
163
|
+
query_embeddings = await this.embeddingFunction.generate(query_texts);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
throw new Error("embeddingFunction is undefined. Please configure an embedding function");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
76
169
|
const query_embeddingsArray = toArrayOfArrays(query_embeddings);
|
|
77
170
|
const response = await this.api.getNearestNeighbors({
|
|
78
171
|
collectionName: this.name,
|
|
@@ -81,27 +174,39 @@ export class Collection {
|
|
|
81
174
|
where,
|
|
82
175
|
n_results,
|
|
83
176
|
},
|
|
177
|
+
}).then(function (response) {
|
|
178
|
+
return response.data;
|
|
179
|
+
}).catch(function ({ response }) {
|
|
180
|
+
return response.data;
|
|
84
181
|
});
|
|
85
|
-
return response
|
|
182
|
+
return response;
|
|
86
183
|
}
|
|
87
184
|
async peek(limit = 10) {
|
|
88
|
-
|
|
185
|
+
const response = await this.api.get({
|
|
89
186
|
collectionName: this.name,
|
|
90
187
|
getEmbedding: { limit: limit },
|
|
91
188
|
});
|
|
189
|
+
return response.data;
|
|
92
190
|
}
|
|
93
191
|
async createIndex() {
|
|
94
192
|
return await this.api.createIndex({ collectionName: this.name });
|
|
95
193
|
}
|
|
96
194
|
async delete(ids, where) {
|
|
97
|
-
|
|
195
|
+
var response = await this.api._delete({
|
|
98
196
|
collectionName: this.name,
|
|
99
197
|
deleteEmbedding: { ids: ids, where: where },
|
|
198
|
+
}).then(function (response) {
|
|
199
|
+
return response.data;
|
|
200
|
+
}).catch(function ({ response }) {
|
|
201
|
+
return response.data;
|
|
100
202
|
});
|
|
203
|
+
return response;
|
|
101
204
|
}
|
|
102
205
|
}
|
|
103
206
|
export class ChromaClient {
|
|
104
207
|
constructor(basePath) {
|
|
208
|
+
if (basePath === undefined)
|
|
209
|
+
basePath = "http://localhost:8000";
|
|
105
210
|
const apiConfig = new Configuration({
|
|
106
211
|
basePath,
|
|
107
212
|
});
|
|
@@ -110,21 +215,33 @@ export class ChromaClient {
|
|
|
110
215
|
async reset() {
|
|
111
216
|
return await this.api.reset();
|
|
112
217
|
}
|
|
113
|
-
async createCollection(name, metadata) {
|
|
218
|
+
async createCollection(name, metadata, embeddingFunction) {
|
|
114
219
|
const newCollection = await this.api.createCollection({
|
|
115
220
|
createCollection: { name, metadata },
|
|
221
|
+
}).then(function (response) {
|
|
222
|
+
return response.data;
|
|
223
|
+
}).catch(function ({ response }) {
|
|
224
|
+
return response.data;
|
|
116
225
|
});
|
|
117
|
-
|
|
226
|
+
if (newCollection.error) {
|
|
227
|
+
throw new Error(newCollection.error);
|
|
228
|
+
}
|
|
229
|
+
return new Collection(name, this.api, embeddingFunction);
|
|
118
230
|
}
|
|
119
231
|
async listCollections() {
|
|
120
232
|
const response = await this.api.listCollections();
|
|
121
233
|
return response.data;
|
|
122
234
|
}
|
|
123
|
-
async getCollection(name) {
|
|
124
|
-
return new Collection(name, this.api);
|
|
235
|
+
async getCollection(name, embeddingFunction) {
|
|
236
|
+
return new Collection(name, this.api, embeddingFunction);
|
|
125
237
|
}
|
|
126
238
|
async deleteCollection(name) {
|
|
127
|
-
|
|
239
|
+
const response = await this.api.deleteCollection({ collectionName: name }).then(function (response) {
|
|
240
|
+
return response.data;
|
|
241
|
+
}).catch(function ({ response }) {
|
|
242
|
+
return response.data;
|
|
243
|
+
});
|
|
244
|
+
return response;
|
|
128
245
|
}
|
|
129
246
|
}
|
|
130
247
|
//# sourceMappingURL=index.js.map
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,uDAAuD;AACvD,SAAS,OAAO,CAAI,GAAiB;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC;KACZ;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;AACH,CAAC;AAED,oDAAoD;AACpD,SAAS,eAAe,CAAI,GAA+B;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACzB,OAAO,GAAsB,CAAC;KAC/B;SAAM;QACL,OAAO,CAAC,GAAG,CAAoB,CAAC;KACjC;AACH,CAAC;AAED,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chromadb",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "A JavaScript interface for chroma",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"devDependencies": {
|
|
9
9
|
"@openapitools/openapi-generator-cli": "^2.5.2",
|
|
10
|
+
"@types/jest": "^29.4.0",
|
|
11
|
+
"jest": "^29.4.3",
|
|
10
12
|
"npm-run-all": "^4.1.5",
|
|
11
|
-
"rimraf": "^3.0.2"
|
|
13
|
+
"rimraf": "^3.0.2",
|
|
14
|
+
"ts-jest": "^29.0.5",
|
|
15
|
+
"ts-node": "^10.9.1",
|
|
16
|
+
"tsd": "^0.24.1",
|
|
17
|
+
"typescript": "^4.5.5"
|
|
12
18
|
},
|
|
13
19
|
"dependencies": {
|
|
14
20
|
"axios": "^0.26.0"
|
|
@@ -20,6 +26,13 @@
|
|
|
20
26
|
"dist"
|
|
21
27
|
],
|
|
22
28
|
"scripts": {
|
|
29
|
+
"test": "run-s db:clean db:run test:runfull db:clean",
|
|
30
|
+
"test:set-port": "cross-env URL=localhost:8001",
|
|
31
|
+
"test:run": "jest --runInBand",
|
|
32
|
+
"test:runfull": "PORT=8001 jest --runInBand",
|
|
33
|
+
"test:update": "run-s db:clean db:run && jest --runInBand --updateSnapshot && run-s db:clean",
|
|
34
|
+
"db:clean": "cd ../.. && docker-compose -f docker-compose-js-tests.yml down --volumes",
|
|
35
|
+
"db:run": "cd ../.. && docker-compose -f docker-compose-js-tests.yml up --detach && sleep 5",
|
|
23
36
|
"clean": "rimraf dist",
|
|
24
37
|
"build": "run-s clean build:*",
|
|
25
38
|
"build:main": "tsc -p tsconfig.json",
|
package/src/index.ts
CHANGED
|
@@ -19,42 +19,133 @@ function toArrayOfArrays<T>(obj: Array<Array<T>> | Array<T>): Array<Array<T>> {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
class EmbeddingFunction { }
|
|
23
|
+
|
|
24
|
+
let OpenAIApi: any;
|
|
25
|
+
|
|
26
|
+
export class OpenAIEmbeddingFunction {
|
|
27
|
+
private api_key: string;
|
|
28
|
+
private org_id: string;
|
|
29
|
+
private model: string;
|
|
30
|
+
|
|
31
|
+
constructor(openai_api_key: string, openai_model: string, openai_organization_id: string) {
|
|
32
|
+
try {
|
|
33
|
+
// eslint-disable-next-line global-require,import/no-extraneous-dependencies
|
|
34
|
+
OpenAIApi = require("openai");
|
|
35
|
+
} catch {
|
|
36
|
+
throw new Error(
|
|
37
|
+
"Please install the openai package to use the OpenAIEmbeddingFunction, `npm install -S openai`",
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
this.api_key = openai_api_key;
|
|
41
|
+
this.org_id = openai_organization_id || "";
|
|
42
|
+
this.model = openai_model || "text-embedding-ada-002";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public async generate(texts: string[]) {
|
|
46
|
+
const configuration = new OpenAIApi.Configuration({
|
|
47
|
+
organization: this.org_id,
|
|
48
|
+
apiKey: this.api_key,
|
|
49
|
+
});
|
|
50
|
+
const openai = new OpenAIApi.OpenAIApi(configuration);
|
|
51
|
+
const embeddings = [];
|
|
52
|
+
const response = await openai.createEmbedding({
|
|
53
|
+
model: "text-embedding-ada-002",
|
|
54
|
+
input: texts,
|
|
55
|
+
});
|
|
56
|
+
const data = response.data['data'];
|
|
57
|
+
for (let i = 0; i < data.length; i += 1) {
|
|
58
|
+
embeddings.push(data[i]['embedding']);
|
|
59
|
+
}
|
|
60
|
+
return embeddings;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
let CohereAiApi: any;
|
|
65
|
+
|
|
66
|
+
export class CohereEmbeddingFunction {
|
|
67
|
+
private api_key: string;
|
|
68
|
+
|
|
69
|
+
constructor(cohere_api_key: string) {
|
|
70
|
+
try {
|
|
71
|
+
// eslint-disable-next-line global-require,import/no-extraneous-dependencies
|
|
72
|
+
CohereAiApi = require("cohere-ai");
|
|
73
|
+
} catch {
|
|
74
|
+
throw new Error(
|
|
75
|
+
"Please install the cohere-ai package to use the CohereEmbeddingFunction, `npm install -S cohere-ai`",
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
this.api_key = cohere_api_key;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
public async generate(texts: string[]) {
|
|
82
|
+
const cohere = CohereAiApi.init(this.api_key);
|
|
83
|
+
const embeddings = [];
|
|
84
|
+
const response = await CohereAiApi.embed({
|
|
85
|
+
texts: texts,
|
|
86
|
+
});
|
|
87
|
+
return response.body.embeddings;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
type CallableFunction = {
|
|
92
|
+
new(): CallableFunction;
|
|
93
|
+
generate(texts: string[]): number[][];
|
|
94
|
+
};
|
|
95
|
+
|
|
22
96
|
export class Collection {
|
|
23
|
-
|
|
97
|
+
public name: string;
|
|
24
98
|
private api: DefaultApi;
|
|
99
|
+
public embeddingFunction: CallableFunction | undefined;
|
|
25
100
|
|
|
26
|
-
constructor(name: string, api: DefaultApi) {
|
|
101
|
+
constructor(name: string, api: DefaultApi, embeddingFunction?: CallableFunction) {
|
|
27
102
|
this.name = name;
|
|
28
103
|
this.api = api;
|
|
104
|
+
if (embeddingFunction !== undefined)
|
|
105
|
+
this.embeddingFunction = embeddingFunction;
|
|
29
106
|
}
|
|
30
107
|
|
|
31
108
|
public async add(
|
|
32
|
-
ids: string |
|
|
33
|
-
embeddings:
|
|
34
|
-
metadatas?:
|
|
35
|
-
documents?: string |
|
|
109
|
+
ids: string | string[],
|
|
110
|
+
embeddings: number[] | number[][],
|
|
111
|
+
metadatas?: object | object[],
|
|
112
|
+
documents?: string | string[],
|
|
36
113
|
increment_index: boolean = true,
|
|
37
114
|
) {
|
|
115
|
+
if ((embeddings === undefined) && (documents === undefined)) {
|
|
116
|
+
throw new Error(
|
|
117
|
+
"embeddings and documents cannot both be undefined",
|
|
118
|
+
);
|
|
119
|
+
} else if ((embeddings === undefined) && (documents !== undefined)) {
|
|
120
|
+
const documentsArray = toArray(documents);
|
|
121
|
+
if (this.embeddingFunction !== undefined) {
|
|
122
|
+
embeddings = await this.embeddingFunction.generate(documentsArray)
|
|
123
|
+
} else {
|
|
124
|
+
throw new Error(
|
|
125
|
+
"embeddingFunction is undefined. Please configure an embedding function",
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
38
129
|
|
|
39
130
|
const idsArray = toArray(ids);
|
|
40
131
|
const embeddingsArray = toArrayOfArrays(embeddings);
|
|
41
132
|
|
|
42
|
-
let metadatasArray;
|
|
133
|
+
let metadatasArray: object[] | undefined;
|
|
43
134
|
if (metadatas === undefined) {
|
|
44
135
|
metadatasArray = undefined
|
|
45
136
|
} else {
|
|
46
137
|
metadatasArray = toArray(metadatas);
|
|
47
138
|
}
|
|
48
139
|
|
|
49
|
-
let documentsArray;
|
|
50
|
-
if (
|
|
140
|
+
let documentsArray: (string | undefined)[] | undefined;
|
|
141
|
+
if (documents === undefined) {
|
|
51
142
|
documentsArray = undefined
|
|
52
143
|
} else {
|
|
53
|
-
documentsArray = toArray(
|
|
144
|
+
documentsArray = toArray(documents);
|
|
54
145
|
}
|
|
55
146
|
|
|
56
147
|
if (
|
|
57
|
-
idsArray.length !== embeddingsArray.length ||
|
|
148
|
+
((embeddingsArray !== undefined) && idsArray.length !== embeddingsArray.length) ||
|
|
58
149
|
((metadatasArray !== undefined) && idsArray.length !== metadatasArray.length) ||
|
|
59
150
|
((documentsArray !== undefined) && idsArray.length !== documentsArray.length)
|
|
60
151
|
) {
|
|
@@ -63,7 +154,7 @@ export class Collection {
|
|
|
63
154
|
);
|
|
64
155
|
}
|
|
65
156
|
|
|
66
|
-
|
|
157
|
+
const response = await this.api.add({
|
|
67
158
|
collectionName: this.name,
|
|
68
159
|
addEmbedding: {
|
|
69
160
|
ids: idsArray,
|
|
@@ -72,7 +163,13 @@ export class Collection {
|
|
|
72
163
|
metadatas: metadatasArray,
|
|
73
164
|
increment_index: increment_index,
|
|
74
165
|
},
|
|
166
|
+
}).then(function (response) {
|
|
167
|
+
return response.data;
|
|
168
|
+
}).catch(function ({ response }) {
|
|
169
|
+
return response.data;
|
|
75
170
|
});
|
|
171
|
+
|
|
172
|
+
return response
|
|
76
173
|
}
|
|
77
174
|
|
|
78
175
|
public async count() {
|
|
@@ -86,9 +183,10 @@ export class Collection {
|
|
|
86
183
|
limit?: number,
|
|
87
184
|
offset?: number,
|
|
88
185
|
) {
|
|
89
|
-
|
|
186
|
+
let idsArray = undefined
|
|
187
|
+
if (ids !== undefined) idsArray = toArray(ids);
|
|
90
188
|
|
|
91
|
-
|
|
189
|
+
var resp = await this.api.get({
|
|
92
190
|
collectionName: this.name,
|
|
93
191
|
getEmbedding: {
|
|
94
192
|
ids: idsArray,
|
|
@@ -96,14 +194,37 @@ export class Collection {
|
|
|
96
194
|
limit,
|
|
97
195
|
offset,
|
|
98
196
|
},
|
|
197
|
+
}).then(function (response) {
|
|
198
|
+
return response.data;
|
|
199
|
+
}).catch(function ({ response }) {
|
|
200
|
+
return response.data;
|
|
99
201
|
});
|
|
202
|
+
|
|
203
|
+
return resp
|
|
204
|
+
|
|
100
205
|
}
|
|
101
206
|
|
|
102
207
|
public async query(
|
|
103
|
-
query_embeddings: number[],
|
|
208
|
+
query_embeddings: number[] | number[][],
|
|
104
209
|
n_results: number = 10,
|
|
105
210
|
where?: object,
|
|
211
|
+
query_text?: string | string[],
|
|
106
212
|
) {
|
|
213
|
+
if ((query_embeddings === undefined) && (query_text === undefined)) {
|
|
214
|
+
throw new Error(
|
|
215
|
+
"query_embeddings and query_text cannot both be undefined",
|
|
216
|
+
);
|
|
217
|
+
} else if ((query_embeddings === undefined) && (query_text !== undefined)) {
|
|
218
|
+
const query_texts = toArray(query_text);
|
|
219
|
+
if (this.embeddingFunction !== undefined) {
|
|
220
|
+
query_embeddings = await this.embeddingFunction.generate(query_texts)
|
|
221
|
+
} else {
|
|
222
|
+
throw new Error(
|
|
223
|
+
"embeddingFunction is undefined. Please configure an embedding function",
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
107
228
|
const query_embeddingsArray = toArrayOfArrays(query_embeddings);
|
|
108
229
|
|
|
109
230
|
const response = await this.api.getNearestNeighbors({
|
|
@@ -113,15 +234,21 @@ export class Collection {
|
|
|
113
234
|
where,
|
|
114
235
|
n_results,
|
|
115
236
|
},
|
|
237
|
+
}).then(function (response) {
|
|
238
|
+
return response.data;
|
|
239
|
+
}).catch(function ({ response }) {
|
|
240
|
+
return response.data;
|
|
116
241
|
});
|
|
117
|
-
|
|
242
|
+
|
|
243
|
+
return response;
|
|
118
244
|
}
|
|
119
245
|
|
|
120
246
|
public async peek(limit: number = 10) {
|
|
121
|
-
|
|
247
|
+
const response = await this.api.get({
|
|
122
248
|
collectionName: this.name,
|
|
123
249
|
getEmbedding: { limit: limit },
|
|
124
250
|
});
|
|
251
|
+
return response.data;
|
|
125
252
|
}
|
|
126
253
|
|
|
127
254
|
public async createIndex() {
|
|
@@ -129,10 +256,16 @@ export class Collection {
|
|
|
129
256
|
}
|
|
130
257
|
|
|
131
258
|
public async delete(ids?: string[], where?: object) {
|
|
132
|
-
|
|
259
|
+
var response = await this.api._delete({
|
|
133
260
|
collectionName: this.name,
|
|
134
261
|
deleteEmbedding: { ids: ids, where: where },
|
|
262
|
+
}).then(function (response) {
|
|
263
|
+
return response.data;
|
|
264
|
+
}).catch(function ({ response }) {
|
|
265
|
+
return response.data;
|
|
135
266
|
});
|
|
267
|
+
|
|
268
|
+
return response
|
|
136
269
|
}
|
|
137
270
|
|
|
138
271
|
}
|
|
@@ -140,7 +273,8 @@ export class Collection {
|
|
|
140
273
|
export class ChromaClient {
|
|
141
274
|
private api: DefaultApi;
|
|
142
275
|
|
|
143
|
-
constructor(basePath
|
|
276
|
+
constructor(basePath?: string) {
|
|
277
|
+
if (basePath === undefined) basePath = "http://localhost:8000";
|
|
144
278
|
const apiConfig: Configuration = new Configuration({
|
|
145
279
|
basePath,
|
|
146
280
|
});
|
|
@@ -151,11 +285,20 @@ export class ChromaClient {
|
|
|
151
285
|
return await this.api.reset();
|
|
152
286
|
}
|
|
153
287
|
|
|
154
|
-
public async createCollection(name: string, metadata?: object) {
|
|
288
|
+
public async createCollection(name: string, metadata?: object, embeddingFunction?: CallableFunction) {
|
|
155
289
|
const newCollection = await this.api.createCollection({
|
|
156
290
|
createCollection: { name, metadata },
|
|
291
|
+
}).then(function (response) {
|
|
292
|
+
return response.data;
|
|
293
|
+
}).catch(function ({ response }) {
|
|
294
|
+
return response.data;
|
|
157
295
|
});
|
|
158
|
-
|
|
296
|
+
|
|
297
|
+
if (newCollection.error) {
|
|
298
|
+
throw new Error(newCollection.error);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
return new Collection(name, this.api, embeddingFunction);
|
|
159
302
|
}
|
|
160
303
|
|
|
161
304
|
public async listCollections() {
|
|
@@ -163,12 +306,18 @@ export class ChromaClient {
|
|
|
163
306
|
return response.data;
|
|
164
307
|
}
|
|
165
308
|
|
|
166
|
-
public async getCollection(name: string) {
|
|
167
|
-
return new Collection(name, this.api);
|
|
309
|
+
public async getCollection(name: string, embeddingFunction?: CallableFunction) {
|
|
310
|
+
return new Collection(name, this.api, embeddingFunction);
|
|
168
311
|
}
|
|
169
312
|
|
|
170
313
|
public async deleteCollection(name: string) {
|
|
171
|
-
|
|
314
|
+
const response = await this.api.deleteCollection({ collectionName: name }).then(function (response) {
|
|
315
|
+
return response.data;
|
|
316
|
+
}).catch(function ({ response }) {
|
|
317
|
+
return response.data;
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
return response
|
|
172
321
|
}
|
|
173
322
|
|
|
174
323
|
}
|