@mcp-abap-adt/sap-aicore-embedder 11.0.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 +45 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/sap-ai-core-embedder.d.ts +22 -0
- package/dist/sap-ai-core-embedder.d.ts.map +1 -0
- package/dist/sap-ai-core-embedder.js +57 -0
- package/dist/sap-ai-core-embedder.js.map +1 -0
- package/package.json +37 -0
package/README.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# @mcp-abap-adt/sap-aicore-embedder
|
|
2
|
+
|
|
3
|
+
SAP AI Core embedding provider (IEmbedderBatch) for @mcp-abap-adt/llm-agent.
|
|
4
|
+
|
|
5
|
+
Generates text embeddings via SAP AI Core embedding model deployments using the @sap-ai-sdk/orchestration client.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @mcp-abap-adt/sap-aicore-embedder
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { SapAiCoreEmbedder } from '@mcp-abap-adt/sap-aicore-embedder';
|
|
17
|
+
|
|
18
|
+
const embedder = new SapAiCoreEmbedder({
|
|
19
|
+
model: 'text-embedding-3-small',
|
|
20
|
+
resourceGroup: 'default', // optional
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Embed a single text
|
|
24
|
+
const result = await embedder.embed('Hello, world!');
|
|
25
|
+
console.log(result.vector);
|
|
26
|
+
|
|
27
|
+
// Batch embed multiple texts
|
|
28
|
+
const results = await embedder.embedBatch(['Text 1', 'Text 2', 'Text 3']);
|
|
29
|
+
console.log(results.map(r => r.vector));
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Configuration
|
|
33
|
+
|
|
34
|
+
### SapAiCoreEmbedderConfig
|
|
35
|
+
|
|
36
|
+
- `model` (required): Embedding model name (e.g., 'text-embedding-3-small')
|
|
37
|
+
- `resourceGroup` (optional): SAP AI Core resource group
|
|
38
|
+
|
|
39
|
+
## Authentication
|
|
40
|
+
|
|
41
|
+
Authentication uses the `AICORE_SERVICE_KEY` environment variable, which is read automatically by the SAP AI SDK orchestration client.
|
|
42
|
+
|
|
43
|
+
## License
|
|
44
|
+
|
|
45
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SAP AI Core Embedder — IEmbedderBatch implementation using @sap-ai-sdk/orchestration.
|
|
3
|
+
*
|
|
4
|
+
* Generates text embeddings via SAP AI Core embedding model deployments.
|
|
5
|
+
* Authentication: reads AICORE_SERVICE_KEY env var automatically (same as LLM provider).
|
|
6
|
+
*/
|
|
7
|
+
import type { IEmbedderBatch, IEmbedResult } from '@mcp-abap-adt/llm-agent';
|
|
8
|
+
import { type CallOptions } from '@mcp-abap-adt/llm-agent';
|
|
9
|
+
export interface SapAiCoreEmbedderConfig {
|
|
10
|
+
/** Embedding model name (e.g. 'text-embedding-3-small') */
|
|
11
|
+
model: string;
|
|
12
|
+
/** SAP AI Core resource group (optional) */
|
|
13
|
+
resourceGroup?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class SapAiCoreEmbedder implements IEmbedderBatch {
|
|
16
|
+
private readonly model;
|
|
17
|
+
private readonly resourceGroup?;
|
|
18
|
+
constructor(config: SapAiCoreEmbedderConfig);
|
|
19
|
+
embed(text: string, _options?: CallOptions): Promise<IEmbedResult>;
|
|
20
|
+
embedBatch(texts: string[], _options?: CallOptions): Promise<IEmbedResult[]>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=sap-ai-core-embedder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sap-ai-core-embedder.d.ts","sourceRoot":"","sources":["../src/sap-ai-core-embedder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,KAAK,WAAW,EAAY,MAAM,yBAAyB,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;gBAE5B,MAAM,EAAE,uBAAuB;IAKrC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAmClE,UAAU,CACd,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC;CAmC3B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SAP AI Core Embedder — IEmbedderBatch implementation using @sap-ai-sdk/orchestration.
|
|
3
|
+
*
|
|
4
|
+
* Generates text embeddings via SAP AI Core embedding model deployments.
|
|
5
|
+
* Authentication: reads AICORE_SERVICE_KEY env var automatically (same as LLM provider).
|
|
6
|
+
*/
|
|
7
|
+
import { RagError } from '@mcp-abap-adt/llm-agent';
|
|
8
|
+
export class SapAiCoreEmbedder {
|
|
9
|
+
model;
|
|
10
|
+
resourceGroup;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.model = config.model;
|
|
13
|
+
this.resourceGroup = config.resourceGroup;
|
|
14
|
+
}
|
|
15
|
+
async embed(text, _options) {
|
|
16
|
+
const { OrchestrationEmbeddingClient } = await import('@sap-ai-sdk/orchestration');
|
|
17
|
+
const modelName = this
|
|
18
|
+
.model;
|
|
19
|
+
const client = new OrchestrationEmbeddingClient({ embeddings: { model: { name: modelName } } }, this.resourceGroup ? { resourceGroup: this.resourceGroup } : undefined);
|
|
20
|
+
const response = await client.embed({ input: text });
|
|
21
|
+
const embeddings = response.getEmbeddings();
|
|
22
|
+
if (!embeddings || embeddings.length === 0) {
|
|
23
|
+
throw new RagError('No embeddings returned from SAP AI Core');
|
|
24
|
+
}
|
|
25
|
+
const embedding = embeddings[0].embedding;
|
|
26
|
+
// Handle base64-encoded embeddings
|
|
27
|
+
if (typeof embedding === 'string') {
|
|
28
|
+
const buffer = Buffer.from(embedding, 'base64');
|
|
29
|
+
const float32 = new Float32Array(buffer.buffer, buffer.byteOffset, buffer.length / 4);
|
|
30
|
+
return { vector: Array.from(float32) };
|
|
31
|
+
}
|
|
32
|
+
return { vector: embedding };
|
|
33
|
+
}
|
|
34
|
+
async embedBatch(texts, _options) {
|
|
35
|
+
if (texts.length === 0)
|
|
36
|
+
return [];
|
|
37
|
+
const { OrchestrationEmbeddingClient } = await import('@sap-ai-sdk/orchestration');
|
|
38
|
+
const modelName = this
|
|
39
|
+
.model;
|
|
40
|
+
const client = new OrchestrationEmbeddingClient({ embeddings: { model: { name: modelName } } }, this.resourceGroup ? { resourceGroup: this.resourceGroup } : undefined);
|
|
41
|
+
const response = await client.embed({ input: texts });
|
|
42
|
+
const embeddings = response.getEmbeddings();
|
|
43
|
+
if (!embeddings || embeddings.length === 0) {
|
|
44
|
+
throw new RagError('No embeddings returned from SAP AI Core batch');
|
|
45
|
+
}
|
|
46
|
+
const sorted = [...embeddings].sort((a, b) => a.index - b.index);
|
|
47
|
+
return sorted.map((e) => {
|
|
48
|
+
if (typeof e.embedding === 'string') {
|
|
49
|
+
const buffer = Buffer.from(e.embedding, 'base64');
|
|
50
|
+
const float32 = new Float32Array(buffer.buffer, buffer.byteOffset, buffer.length / 4);
|
|
51
|
+
return { vector: Array.from(float32) };
|
|
52
|
+
}
|
|
53
|
+
return { vector: e.embedding };
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=sap-ai-core-embedder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sap-ai-core-embedder.js","sourceRoot":"","sources":["../src/sap-ai-core-embedder.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mcp-abap-adt/sap-aicore-embedder",
|
|
3
|
+
"version": "11.0.0",
|
|
4
|
+
"description": "SAP AI Core embedding provider (IEmbedder) for @mcp-abap-adt/llm-agent.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md",
|
|
18
|
+
"LICENSE"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.json",
|
|
22
|
+
"clean": "tsc -p tsconfig.json --clean",
|
|
23
|
+
"test": "node --import tsx/esm --test --test-reporter=spec 'src/**/*.test.ts'"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@mcp-abap-adt/llm-agent": "*",
|
|
27
|
+
"@sap-ai-sdk/orchestration": "^2.9.0"
|
|
28
|
+
},
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "git+https://github.com/fr0ster/llm-agent.git"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
}
|
|
37
|
+
}
|