Skip to content

Commit 430067b

Browse files
committed
feat: extract IEmbedder protocol, add @objectstack/embedder-openai
1 parent b6d4647 commit 430067b

3 files changed

Lines changed: 76 additions & 0 deletions

File tree

.changeset/config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
"@objectstack/knowledge-memory",
6262
"@objectstack/knowledge-ragflow",
6363
"@objectstack/knowledge-turso",
64+
"@objectstack/embedder-openai",
6465
"@objectstack/account",
6566
"create-objectstack",
6667
"objectstack-vscode"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
'@objectstack/spec': minor
3+
'@objectstack/embedder-openai': minor
4+
'@objectstack/knowledge-turso': minor
5+
---
6+
7+
Introduce `IEmbedder` protocol and extract `@objectstack/embedder-openai` plugin.
8+
9+
**What's new**
10+
11+
- **`IEmbedder` contract** (`@objectstack/spec/contracts/embedder.ts`) — protocol-level interface for text → vector providers. One contract covers cloud APIs (OpenAI / 阿里通义 / 智谱 / 硅基流动 / 火山 Doubao / MiniMax), local Ollama daemons, and in-process embedders.
12+
- **`@objectstack/embedder-openai`** — new package. Drop-in for any OpenAI-shape endpoint via `baseUrl`. Ships preset constants for 8 mainstream providers (`createOpenAIEmbedder({ preset: 'siliconflow', ... })`) and pre-baked dimensions for 16+ popular models.
13+
14+
**Breaking changes (`@objectstack/knowledge-turso`)**
15+
16+
- `OpenAIEmbeddingProvider` is **removed** — install `@objectstack/embedder-openai` and use `OpenAIEmbedder` instead (identical option shape).
17+
- `EmbeddingProvider` type alias kept as a deprecated re-export of `IEmbedder` for smoother migration; will be removed in a future major.
18+
- `HashEmbeddingProvider` is now an alias for the renamed `HashEmbedder` class — no functional change.
19+
20+
**Migration**
21+
22+
```diff
23+
- import { OpenAIEmbeddingProvider } from '@objectstack/knowledge-turso';
24+
+ import { OpenAIEmbedder } from '@objectstack/embedder-openai';
25+
26+
- const embedding = new OpenAIEmbeddingProvider({ apiKey });
27+
+ const embedding = new OpenAIEmbedder({ apiKey });
28+
```
29+
30+
For 国内 providers, use presets:
31+
32+
```ts
33+
import { createOpenAIEmbedder } from '@objectstack/embedder-openai';
34+
const embedding = createOpenAIEmbedder({
35+
preset: 'siliconflow', // or 'dashscope', 'zhipu', 'doubao', 'ollama', …
36+
apiKey: process.env.SILICONFLOW_API_KEY!,
37+
model: 'BAAI/bge-m3',
38+
});
39+
```

CHANGELOG.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added — `IEmbedder` protocol + `@objectstack/embedder-openai` plugin
11+
12+
Extracted text-→-vector providers into a dedicated, plugin-shaped layer:
13+
14+
- **`IEmbedder`** contract added to `@objectstack/spec/contracts`
15+
protocol-level interface (`id`, `dimensions`, `embed(texts[])`).
16+
One contract covers cloud APIs, local Ollama, and in-process embedders.
17+
- **`@objectstack/embedder-openai`** — new plugin package. Drop-in for
18+
any OpenAI-shape endpoint via `baseUrl`. Ships preset constants for
19+
8 mainstream providers (OpenAI, Azure, 阿里通义 DashScope, 智谱
20+
BigModel, 硅基流动 SiliconFlow, 火山引擎 Doubao, MiniMax, Ollama)
21+
and pre-baked default `dimensions` for 16+ popular models including
22+
`text-embedding-v3`, `embedding-3`, `BAAI/bge-m3`, `nomic-embed-text`.
23+
24+
```ts
25+
import { createOpenAIEmbedder } from '@objectstack/embedder-openai';
26+
const embedding = createOpenAIEmbedder({
27+
preset: 'siliconflow',
28+
apiKey: process.env.SILICONFLOW_API_KEY!,
29+
model: 'BAAI/bge-m3',
30+
});
31+
```
32+
33+
### Changed — `@objectstack/knowledge-turso` consumes `IEmbedder`
34+
35+
`KnowledgeTursoPluginOptions.embedding` is now typed as `IEmbedder`
36+
(`@objectstack/spec/contracts`). The package no longer ships an
37+
OpenAI provider of its own — install `@objectstack/embedder-openai`.
38+
39+
**Breaking:**
40+
- `OpenAIEmbeddingProvider` removed from `@objectstack/knowledge-turso`
41+
exports. Replace with `OpenAIEmbedder` from `@objectstack/embedder-openai`.
42+
- `HashEmbeddingProvider` renamed to `HashEmbedder` (old name kept as a
43+
deprecated alias).
44+
- `EmbeddingProvider` type kept as a deprecated alias for `IEmbedder`.
45+
1046
### Added — Runtime `services.*` API reference chapter
1147

1248
Documentation now includes a dedicated `Runtime Services` guides chapter

0 commit comments

Comments
 (0)