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.
@@ -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
- private name;
19
+ name: string;
4
20
  private api;
5
- constructor(name: string, api: DefaultApi);
6
- add(ids: string | Array<any>, embeddings: Array<any>, metadatas?: Array<any> | object, documents?: string | Array<any>, increment_index?: boolean): Promise<import("axios").AxiosResponse<any, any>>;
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<import("axios").AxiosResponse<any, any>>;
9
- query(query_embeddings: number[], n_results?: number, where?: object): Promise<any>;
10
- peek(limit?: number): Promise<import("axios").AxiosResponse<any, any>>;
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<import("axios").AxiosResponse<any, any>>;
29
+ delete(ids?: string[], where?: object): Promise<any>;
13
30
  }
14
31
  export declare class ChromaClient {
15
32
  private api;
16
- constructor(basePath: string);
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<import("axios").AxiosResponse<any, any>>;
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;AAqB7C,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAa;gBAEZ,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAK5B,GAAG,CACd,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EACxB,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,EACtB,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,EAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAC/B,eAAe,GAAE,OAAc;IA0CpB,KAAK;IAKL,GAAG,CACd,GAAG,CAAC,EAAE,MAAM,EAAE,EACd,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM;IAeJ,KAAK,CAChB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,SAAS,GAAE,MAAW,EACtB,KAAK,CAAC,EAAE,MAAM;IAeH,IAAI,CAAC,KAAK,GAAE,MAAW;IAOvB,WAAW;IAIX,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM;CAOnD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAa;gBAEZ,QAAQ,EAAE,MAAM;IAOf,KAAK;IAIL,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAOhD,eAAe;IAKf,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,gBAAgB,CAAC,IAAI,EAAE,MAAM;CAI3C"}
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"}
@@ -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 (metadatas === undefined) {
111
+ if (documents === undefined) {
41
112
  documentsArray = undefined;
42
113
  }
43
114
  else {
44
- documentsArray = toArray(metadatas);
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
- return await this.api.add({
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
- const idsArray = toArray(ids);
68
- return await this.api.get({
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.data;
187
+ return response;
89
188
  }
90
189
  async peek(limit = 10) {
91
- return await this.api.get({
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
- return await this.api._delete({
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
- return new Collection(name, this.api);
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
- return await this.api.deleteCollection({ collectionName: name });
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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -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
- private name;
19
+ name: string;
4
20
  private api;
5
- constructor(name: string, api: DefaultApi);
6
- add(ids: string | Array<any>, embeddings: Array<any>, metadatas?: Array<any> | object, documents?: string | Array<any>, increment_index?: boolean): Promise<import("axios").AxiosResponse<any, any>>;
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<import("axios").AxiosResponse<any, any>>;
9
- query(query_embeddings: number[], n_results?: number, where?: object): Promise<any>;
10
- peek(limit?: number): Promise<import("axios").AxiosResponse<any, any>>;
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<import("axios").AxiosResponse<any, any>>;
29
+ delete(ids?: string[], where?: object): Promise<any>;
13
30
  }
14
31
  export declare class ChromaClient {
15
32
  private api;
16
- constructor(basePath: string);
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<import("axios").AxiosResponse<any, any>>;
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;AAqB7C,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAa;gBAEZ,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAK5B,GAAG,CACd,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EACxB,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,EACtB,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,EAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAC/B,eAAe,GAAE,OAAc;IA0CpB,KAAK;IAKL,GAAG,CACd,GAAG,CAAC,EAAE,MAAM,EAAE,EACd,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM;IAeJ,KAAK,CAChB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,SAAS,GAAE,MAAW,EACtB,KAAK,CAAC,EAAE,MAAM;IAeH,IAAI,CAAC,KAAK,GAAE,MAAW;IAOvB,WAAW;IAIX,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM;CAOnD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAa;gBAEZ,QAAQ,EAAE,MAAM;IAOf,KAAK;IAIL,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAOhD,eAAe;IAKf,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,gBAAgB,CAAC,IAAI,EAAE,MAAM;CAI3C"}
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"}
@@ -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 (metadatas === undefined) {
106
+ if (documents === undefined) {
38
107
  documentsArray = undefined;
39
108
  }
40
109
  else {
41
- documentsArray = toArray(metadatas);
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
- return await this.api.add({
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
- const idsArray = toArray(ids);
65
- return await this.api.get({
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.data;
182
+ return response;
86
183
  }
87
184
  async peek(limit = 10) {
88
- return await this.api.get({
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
- return await this.api._delete({
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
- return new Collection(name, this.api);
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
- return await this.api.deleteCollection({ collectionName: name });
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
@@ -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;IAIrB,YAAY,IAAY,EAAE,GAAe;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,GAAG,CACd,GAAwB,EACxB,UAAsB,EACtB,SAA+B,EAC/B,SAA+B,EAC/B,kBAA2B,IAAI;QAG/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,eAAe,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAEpD,IAAI,cAAc,CAAC;QACnB,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,cAAc,GAAG,SAAS,CAAA;SAC3B;aAAM;YACL,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;SACrC;QAED,IAAI,cAAc,CAAC;QACnB,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,cAAc,GAAG,SAAS,CAAA;SAC3B;aAAM;YACL,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;SACrC;QAED,IACE,QAAQ,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;YAC1C,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC;YAC7E,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC,EAC7E;YACA,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;SACH;QAED,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACxB,cAAc,EAAE,IAAI,CAAC,IAAI;YACzB,YAAY,EAAE;gBACZ,GAAG,EAAE,QAAQ;gBACb,UAAU,EAAE,eAAe;gBAC3B,SAAS,EAAE,cAAc;gBACzB,SAAS,EAAE,cAAc;gBACzB,eAAe,EAAE,eAAe;aACjC;SACF,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,GAAG,CACd,GAAc,EACd,KAAc,EACd,KAAc,EACd,MAAe;QAEf,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAE9B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACxB,cAAc,EAAE,IAAI,CAAC,IAAI;YACzB,YAAY,EAAE;gBACZ,GAAG,EAAE,QAAQ;gBACb,KAAK;gBACL,KAAK;gBACL,MAAM;aACP;SACF,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK,CAChB,gBAA0B,EAC1B,YAAoB,EAAE,EACtB,KAAc;QAEd,MAAM,qBAAqB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAClD,cAAc,EAAE,IAAI,CAAC,IAAI;YACzB,cAAc,EAAE;gBACd,gBAAgB,EAAE,qBAAqB;gBACvC,KAAK;gBACL,SAAS;aACV;SACF,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE;QAClC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACxB,cAAc,EAAE,IAAI,CAAC,IAAI;YACzB,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,GAAc,EAAE,KAAc;QAChD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAC5B,cAAc,EAAE,IAAI,CAAC,IAAI;YACzB,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;CAEF;AAED,MAAM,OAAO,YAAY;IAGvB,YAAY,QAAgB;QAC1B,MAAM,SAAS,GAAkB,IAAI,aAAa,CAAC;YACjD,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,QAAiB;QAC3D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACpD,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACrC,CAAC,CAAC;QACH,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,IAAY;QACrC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACxC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;CAEF"}
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.2.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
- private name: string;
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 | Array<any>,
33
- embeddings: Array<any>,
34
- metadatas?: Array<any> | object,
35
- documents?: string | Array<any>,
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 (metadatas === undefined) {
140
+ let documentsArray: (string | undefined)[] | undefined;
141
+ if (documents === undefined) {
51
142
  documentsArray = undefined
52
143
  } else {
53
- documentsArray = toArray(metadatas);
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
- return await this.api.add({
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
- const idsArray = toArray(ids);
186
+ let idsArray = undefined
187
+ if (ids !== undefined) idsArray = toArray(ids);
90
188
 
91
- return await this.api.get({
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
- return response.data;
242
+
243
+ return response;
118
244
  }
119
245
 
120
246
  public async peek(limit: number = 10) {
121
- return await this.api.get({
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
- return await this.api._delete({
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: string) {
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
- return new Collection(name, this.api);
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
- return await this.api.deleteCollection({ collectionName: name });
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
  }