@vivantel/rag-embedder-openai 1.4.5 → 1.5.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/embedder.d.ts +4 -1
- package/dist/embedder.d.ts.map +1 -1
- package/dist/embedder.js +12 -0
- package/dist/embedder.js.map +1 -1
- package/package.json +1 -1
package/dist/embedder.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EmbeddingProvider, EmbeddingMetrics } from "@vivantel/rag-core";
|
|
1
|
+
import type { EmbeddingProvider, EmbeddingMetrics, Logger } from "@vivantel/rag-core";
|
|
2
2
|
import { type SemanticCacheConfig } from "./semantic-cache.js";
|
|
3
3
|
export interface OpenAICompatibleEmbedderOptions {
|
|
4
4
|
apiKey: string;
|
|
@@ -18,7 +18,10 @@ export declare class OpenAICompatibleEmbedder implements EmbeddingProvider {
|
|
|
18
18
|
readonly preferredBatchSize = 100;
|
|
19
19
|
private readonly client;
|
|
20
20
|
private readonly cache;
|
|
21
|
+
private readonly baseURL;
|
|
22
|
+
private logger;
|
|
21
23
|
constructor(options: OpenAICompatibleEmbedderOptions);
|
|
24
|
+
setLogger(logger: Logger): void;
|
|
22
25
|
embed(text: string): Promise<number[]>;
|
|
23
26
|
private embedDirect;
|
|
24
27
|
embedBatch(texts: string[]): Promise<number[][]>;
|
package/dist/embedder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,EACP,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,kBAAkB,OAAO;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,MAAM,CAAuB;gBAEzB,OAAO,EAAE,+BAA+B;IAkBpD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAU9B,WAAW;IAanB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YA8BxC,gBAAgB;IAaxB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAGpE"}
|
package/dist/embedder.js
CHANGED
|
@@ -8,9 +8,12 @@ export class OpenAICompatibleEmbedder {
|
|
|
8
8
|
preferredBatchSize = 100;
|
|
9
9
|
client;
|
|
10
10
|
cache;
|
|
11
|
+
baseURL;
|
|
12
|
+
logger = null;
|
|
11
13
|
constructor(options) {
|
|
12
14
|
this.model = options.model;
|
|
13
15
|
this.dimensions = options.dimensions ?? 1536;
|
|
16
|
+
this.baseURL = options.baseURL;
|
|
14
17
|
this.name = options.baseURL
|
|
15
18
|
? `openai-compatible:${new URL(options.baseURL).hostname}`
|
|
16
19
|
: "openai";
|
|
@@ -22,6 +25,9 @@ export class OpenAICompatibleEmbedder {
|
|
|
22
25
|
});
|
|
23
26
|
this.cache = options.cache ? new SemanticCache(options.cache) : null;
|
|
24
27
|
}
|
|
28
|
+
setLogger(logger) {
|
|
29
|
+
this.logger = logger.withTag("openai");
|
|
30
|
+
}
|
|
25
31
|
async embed(text) {
|
|
26
32
|
if (this.cache) {
|
|
27
33
|
const hit = await this.cache.get(text, (t) => this.embedDirect(t));
|
|
@@ -34,14 +40,18 @@ export class OpenAICompatibleEmbedder {
|
|
|
34
40
|
return embedding;
|
|
35
41
|
}
|
|
36
42
|
async embedDirect(text) {
|
|
43
|
+
const start = Date.now();
|
|
37
44
|
const res = await this.client.embeddings.create({
|
|
38
45
|
model: this.model,
|
|
39
46
|
input: text,
|
|
40
47
|
dimensions: this.dimensions !== 1536 ? this.dimensions : undefined,
|
|
41
48
|
});
|
|
49
|
+
this.logger?.debug(`Embed call: ${Date.now() - start}ms, ${text.length} chars`);
|
|
42
50
|
return res.data[0].embedding;
|
|
43
51
|
}
|
|
44
52
|
async embedBatch(texts) {
|
|
53
|
+
this.logger?.verbose(`Batch ${texts.length} texts to ${this.baseURL ?? "https://api.openai.com/v1"}`);
|
|
54
|
+
this.logger?.trace(`Text lengths: ${texts.map((t) => t.length).join(", ")}`);
|
|
45
55
|
if (this.cache) {
|
|
46
56
|
// Try cache for each text; fall back to batch API for misses
|
|
47
57
|
const results = await Promise.all(texts.map((t) => this.cache.get(t, (x) => this.embedDirect(x))));
|
|
@@ -61,11 +71,13 @@ export class OpenAICompatibleEmbedder {
|
|
|
61
71
|
return this.embedBatchDirect(texts);
|
|
62
72
|
}
|
|
63
73
|
async embedBatchDirect(texts) {
|
|
74
|
+
const start = Date.now();
|
|
64
75
|
const res = await this.client.embeddings.create({
|
|
65
76
|
model: this.model,
|
|
66
77
|
input: texts,
|
|
67
78
|
dimensions: this.dimensions !== 1536 ? this.dimensions : undefined,
|
|
68
79
|
});
|
|
80
|
+
this.logger?.debug(`Batch call: ${Date.now() - start}ms, ${texts.length} texts`);
|
|
69
81
|
return res.data.map((d) => d.embedding);
|
|
70
82
|
}
|
|
71
83
|
async healthCheck() {
|
package/dist/embedder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"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"}
|