@vivantel/rag-embedder-openai 1.1.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/README.md ADDED
@@ -0,0 +1,91 @@
1
+ # @vivantel/rag-embedder-openai
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@vivantel/rag-embedder-openai.svg)](https://www.npmjs.com/package/@vivantel/rag-embedder-openai)
4
+
5
+ OpenAI-compatible embedding provider for `@vivantel/rag-core`. Works with OpenAI, Azure OpenAI, GitHub Models, Ollama, LM Studio, and any OpenAI-compatible endpoint.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @vivantel/rag-embedder-openai
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ### OpenAI
16
+
17
+ ```typescript
18
+ import { OpenAICompatibleEmbedder } from "@vivantel/rag-embedder-openai";
19
+
20
+ const embedder = new OpenAICompatibleEmbedder({
21
+ apiKey: process.env.OPENAI_API_KEY!,
22
+ model: "text-embedding-3-small",
23
+ dimensions: 1536,
24
+ });
25
+ ```
26
+
27
+ ### GitHub Models (preset)
28
+
29
+ ```typescript
30
+ import { createGitHubModelsEmbedder } from "@vivantel/rag-embedder-openai";
31
+
32
+ const embedder = createGitHubModelsEmbedder({
33
+ token: process.env.GITHUB_TOKEN!,
34
+ model: "openai/text-embedding-3-small", // optional, this is the default
35
+ });
36
+ ```
37
+
38
+ ### Azure OpenAI (preset)
39
+
40
+ ```typescript
41
+ import { createAzureOpenAIEmbedder } from "@vivantel/rag-embedder-openai";
42
+
43
+ const embedder = createAzureOpenAIEmbedder({
44
+ apiKey: process.env.AZURE_OPENAI_KEY!,
45
+ endpoint: "https://my-resource.openai.azure.com",
46
+ model: "text-embedding-3-small",
47
+ });
48
+ ```
49
+
50
+ ### Ollama (preset)
51
+
52
+ ```typescript
53
+ import { createOllamaEmbedder } from "@vivantel/rag-embedder-openai";
54
+
55
+ const embedder = createOllamaEmbedder({
56
+ model: "nomic-embed-text",
57
+ dimensions: 768,
58
+ baseURL: "http://localhost:11434", // optional, this is the default
59
+ });
60
+ ```
61
+
62
+ ## JSON config
63
+
64
+ ```json
65
+ {
66
+ "embedder": {
67
+ "package": "@vivantel/rag-embedder-openai",
68
+ "config": {
69
+ "apiKey": "${GITHUB_TOKEN}",
70
+ "baseURL": "https://models.github.ai/inference",
71
+ "model": "openai/text-embedding-3-small",
72
+ "dimensions": 1536
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ ## Options
79
+
80
+ | Option | Type | Required | Description |
81
+ | --- | --- | --- | --- |
82
+ | `apiKey` | `string` | ✓ | API key |
83
+ | `model` | `string` | ✓ | Model identifier |
84
+ | `dimensions` | `number` | — | Output dimensions (default: 1536) |
85
+ | `baseURL` | `string` | — | API base URL (default: OpenAI) |
86
+ | `organizationId` | `string` | — | OpenAI organization ID |
87
+ | `maxRetries` | `number` | — | Retry attempts (default: 3) |
88
+
89
+ ## License
90
+
91
+ MIT
@@ -0,0 +1,22 @@
1
+ import type { EmbeddingProvider } from "@vivantel/rag-core";
2
+ export interface OpenAICompatibleEmbedderOptions {
3
+ apiKey: string;
4
+ model: string;
5
+ dimensions?: number;
6
+ /** Defaults to https://api.openai.com/v1 */
7
+ baseURL?: string;
8
+ organizationId?: string;
9
+ maxRetries?: number;
10
+ }
11
+ export declare class OpenAICompatibleEmbedder implements EmbeddingProvider {
12
+ readonly name: string;
13
+ readonly dimensions: number;
14
+ readonly model: string;
15
+ readonly preferredBatchSize = 100;
16
+ private readonly client;
17
+ constructor(options: OpenAICompatibleEmbedderOptions);
18
+ embed(text: string): Promise<number[]>;
19
+ embedBatch(texts: string[]): Promise<number[][]>;
20
+ healthCheck(): Promise<boolean>;
21
+ }
22
+ //# sourceMappingURL=embedder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,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;CACrB;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;gBAEpB,OAAO,EAAE,+BAA+B;IAe9C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAStC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAShD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQtC"}
@@ -0,0 +1,47 @@
1
+ import OpenAI from "openai";
2
+ export class OpenAICompatibleEmbedder {
3
+ name;
4
+ dimensions;
5
+ model;
6
+ preferredBatchSize = 100;
7
+ client;
8
+ constructor(options) {
9
+ this.model = options.model;
10
+ this.dimensions = options.dimensions ?? 1536;
11
+ this.name = options.baseURL
12
+ ? `openai-compatible:${new URL(options.baseURL).hostname}`
13
+ : "openai";
14
+ this.client = new OpenAI({
15
+ apiKey: options.apiKey,
16
+ baseURL: options.baseURL,
17
+ organization: options.organizationId,
18
+ maxRetries: options.maxRetries ?? 3,
19
+ });
20
+ }
21
+ async embed(text) {
22
+ const res = await this.client.embeddings.create({
23
+ model: this.model,
24
+ input: text,
25
+ dimensions: this.dimensions !== 1536 ? this.dimensions : undefined,
26
+ });
27
+ return res.data[0].embedding;
28
+ }
29
+ async embedBatch(texts) {
30
+ const res = await this.client.embeddings.create({
31
+ model: this.model,
32
+ input: texts,
33
+ dimensions: this.dimensions !== 1536 ? this.dimensions : undefined,
34
+ });
35
+ return res.data.map((d) => d.embedding);
36
+ }
37
+ async healthCheck() {
38
+ try {
39
+ await this.embed("health check");
40
+ return true;
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ }
46
+ }
47
+ //# sourceMappingURL=embedder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAY5B,MAAM,OAAO,wBAAwB;IAC1B,IAAI,CAAS;IACb,UAAU,CAAS;IACnB,KAAK,CAAS;IACd,kBAAkB,GAAG,GAAG,CAAC;IAEjB,MAAM,CAAS;IAEhC,YAAY,OAAwC;QAClD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO;YACzB,CAAC,CAAC,qBAAqB,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;YAC1D,CAAC,CAAC,QAAQ,CAAC;QAEb,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,cAAc;YACpC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SACnE,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SACnE,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export { OpenAICompatibleEmbedder, type OpenAICompatibleEmbedderOptions, } from "./embedder.js";
2
+ export { createGitHubModelsEmbedder, createAzureOpenAIEmbedder, createOllamaEmbedder, type GitHubModelsPresetOptions, type AzureOpenAIPresetOptions, type OllamaPresetOptions, } from "./presets.js";
3
+ import type { EmbeddingProvider } from "@vivantel/rag-core";
4
+ /** Factory used by the JSON config loader. */
5
+ export declare function createEmbedder(config: Record<string, unknown>): EmbeddingProvider;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,KAAK,+BAA+B,GACrC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAM5D,8CAA8C;AAC9C,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,iBAAiB,CAyBnB"}
package/dist/index.js ADDED
@@ -0,0 +1,26 @@
1
+ export { OpenAICompatibleEmbedder, } from "./embedder.js";
2
+ export { createGitHubModelsEmbedder, createAzureOpenAIEmbedder, createOllamaEmbedder, } from "./presets.js";
3
+ import { OpenAICompatibleEmbedder, } from "./embedder.js";
4
+ /** Factory used by the JSON config loader. */
5
+ export function createEmbedder(config) {
6
+ const apiKey = config.apiKey;
7
+ if (typeof apiKey !== "string" || !apiKey) {
8
+ throw new Error("@vivantel/rag-embedder-openai: config.apiKey is required");
9
+ }
10
+ const model = config.model;
11
+ if (typeof model !== "string" || !model) {
12
+ throw new Error("@vivantel/rag-embedder-openai: config.model is required");
13
+ }
14
+ const opts = {
15
+ apiKey,
16
+ model,
17
+ dimensions: typeof config.dimensions === "number" ? config.dimensions : undefined,
18
+ baseURL: typeof config.baseURL === "string" ? config.baseURL : undefined,
19
+ organizationId: typeof config.organizationId === "string"
20
+ ? config.organizationId
21
+ : undefined,
22
+ maxRetries: typeof config.maxRetries === "number" ? config.maxRetries : undefined,
23
+ };
24
+ return new OpenAICompatibleEmbedder(opts);
25
+ }
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAEzB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,GAIrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,wBAAwB,GAEzB,MAAM,eAAe,CAAC;AAEvB,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAC5B,MAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,IAAI,GAAoC;QAC5C,MAAM;QACN,KAAK;QACL,UAAU,EACR,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACvE,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACxE,cAAc,EACZ,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ;YACvC,CAAC,CAAC,MAAM,CAAC,cAAc;YACvB,CAAC,CAAC,SAAS;QACf,UAAU,EACR,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KACxE,CAAC;IAEF,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { OpenAICompatibleEmbedder } from "./embedder.js";
2
+ export interface GitHubModelsPresetOptions {
3
+ token: string;
4
+ model?: string;
5
+ dimensions?: number;
6
+ }
7
+ export interface AzureOpenAIPresetOptions {
8
+ apiKey: string;
9
+ endpoint: string;
10
+ model?: string;
11
+ dimensions?: number;
12
+ }
13
+ export interface OllamaPresetOptions {
14
+ model: string;
15
+ dimensions: number;
16
+ baseURL?: string;
17
+ }
18
+ /** Pre-configured embedder for GitHub Models (OpenAI-compatible endpoint). */
19
+ export declare function createGitHubModelsEmbedder(options: GitHubModelsPresetOptions): OpenAICompatibleEmbedder;
20
+ /** Pre-configured embedder for Azure OpenAI. */
21
+ export declare function createAzureOpenAIEmbedder(options: AzureOpenAIPresetOptions): OpenAICompatibleEmbedder;
22
+ /** Pre-configured embedder for a local Ollama server. */
23
+ export declare function createOllamaEmbedder(options: OllamaPresetOptions): OpenAICompatibleEmbedder;
24
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAEzB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,CAO1B;AAED,gDAAgD;AAChD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,wBAAwB,GAChC,wBAAwB,CAO1B;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,mBAAmB,GAC3B,wBAAwB,CAO1B"}
@@ -0,0 +1,29 @@
1
+ import { OpenAICompatibleEmbedder, } from "./embedder.js";
2
+ /** Pre-configured embedder for GitHub Models (OpenAI-compatible endpoint). */
3
+ export function createGitHubModelsEmbedder(options) {
4
+ return new OpenAICompatibleEmbedder({
5
+ apiKey: options.token,
6
+ baseURL: "https://models.github.ai/inference",
7
+ model: options.model ?? "openai/text-embedding-3-small",
8
+ dimensions: options.dimensions ?? 1536,
9
+ });
10
+ }
11
+ /** Pre-configured embedder for Azure OpenAI. */
12
+ export function createAzureOpenAIEmbedder(options) {
13
+ return new OpenAICompatibleEmbedder({
14
+ apiKey: options.apiKey,
15
+ baseURL: `${options.endpoint.replace(/\/$/, "")}/openai`,
16
+ model: options.model ?? "text-embedding-3-small",
17
+ dimensions: options.dimensions ?? 1536,
18
+ });
19
+ }
20
+ /** Pre-configured embedder for a local Ollama server. */
21
+ export function createOllamaEmbedder(options) {
22
+ return new OpenAICompatibleEmbedder({
23
+ apiKey: "ollama",
24
+ baseURL: (options.baseURL ?? "http://localhost:11434") + "/v1",
25
+ model: options.model,
26
+ dimensions: options.dimensions,
27
+ });
28
+ }
29
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAEzB,MAAM,eAAe,CAAC;AAqBvB,8EAA8E;AAC9E,MAAM,UAAU,0BAA0B,CACxC,OAAkC;IAElC,OAAO,IAAI,wBAAwB,CAAC;QAClC,MAAM,EAAE,OAAO,CAAC,KAAK;QACrB,OAAO,EAAE,oCAAoC;QAC7C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,+BAA+B;QACvD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;KACvC,CAAC,CAAC;AACL,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,yBAAyB,CACvC,OAAiC;IAEjC,OAAO,IAAI,wBAAwB,CAAC;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS;QACxD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,wBAAwB;QAChD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;KACvC,CAAC,CAAC;AACL,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,oBAAoB,CAClC,OAA4B;IAE5B,OAAO,IAAI,wBAAwB,CAAC;QAClC,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,wBAAwB,CAAC,GAAG,KAAK;QAC9D,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;KACI,CAAC,CAAC;AACxC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@vivantel/rag-embedder-openai",
3
+ "version": "1.1.0",
4
+ "description": "OpenAI-compatible embedding provider for @vivantel/rag-core",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "README.md"
17
+ ],
18
+ "sideEffects": false,
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "type-check": "tsc --noEmit",
25
+ "test": "vitest run",
26
+ "prepublishOnly": "npm run build",
27
+ "lint": "eslint src/",
28
+ "lint:fix": "eslint src/ --fix",
29
+ "format": "prettier --write \"src/**/*.ts\"",
30
+ "fix": "npm run lint:fix && npm run format"
31
+ },
32
+ "keywords": [
33
+ "rag",
34
+ "embeddings",
35
+ "openai",
36
+ "azure",
37
+ "github-models"
38
+ ],
39
+ "author": "Vivantel",
40
+ "license": "MIT",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "https://github.com/vivantel/rag_core",
44
+ "directory": "packages/rag-embedder-openai"
45
+ },
46
+ "dependencies": {
47
+ "openai": "^4.0.0"
48
+ },
49
+ "peerDependencies": {
50
+ "@vivantel/rag-core": "^2.0.0"
51
+ },
52
+ "devDependencies": {
53
+ "@vivantel/rag-core": "file:../rag-core",
54
+ "@types/node": "^25.9.1",
55
+ "typescript": "^6.0.3",
56
+ "vitest": "^4.1.7"
57
+ },
58
+ "engines": {
59
+ "node": ">=18.0.0"
60
+ }
61
+ }