feat(ts-sdk): add FastEmbed embedding provider (#5862)

Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai>
This commit is contained in:
Rod Boev
2026-07-06 12:26:11 -04:00
committed by GitHub
parent 03b41ab00f
commit fec7cdf118
12 changed files with 680 additions and 7 deletions
+63 -2
View File
@@ -7,10 +7,18 @@ You can use FastEmbed to run embedding models locally in Mem0. FastEmbed is an O
### Installation
```bash
FastEmbed is an optional dependency, so install it alongside Mem0.
<CodeGroup>
```bash Python
pip install fastembed
```
```bash TypeScript
npm install fastembed
```
</CodeGroup>
### Usage
<CodeGroup>
@@ -38,13 +46,66 @@ messages = [
]
m.add(messages, user_id="john")
```
```typescript TypeScript
import { Memory } from "mem0ai/oss";
// FastEmbed needs no API key. Leave the embedder config empty to use the
// default model (fast-bge-small-en-v1.5), or set `model` to one of the
// supported models listed below.
const memory = new Memory({
embedder: {
provider: "fastembed",
config: {
model: "fast-bge-small-en-v1.5",
},
},
llm: {
provider: "openai",
config: { apiKey: process.env.OPENAI_API_KEY }, // For fact extraction
},
});
const messages = [
{ role: "user", content: "I'm planning to watch a movie tonight. Any recommendations?" },
{ role: "assistant", content: "How about thriller movies? They can be quite engaging." },
{ role: "user", content: "I'm not a big fan of thriller movies but I love sci-fi movies." },
{ role: "assistant", content: "Got it! I'll avoid thriller recommendations and suggest sci-fi movies in the future." },
];
await memory.add(messages, { userId: "john" });
```
</CodeGroup>
<Note>
**The Python and TypeScript SDKs default to different models.** Python defaults to `thenlper/gte-large` (1024 dimensions), while TypeScript defaults to `fast-bge-small-en-v1.5` (384 dimensions). The TypeScript package (`fastembed` on npm) ships a fixed set of ONNX models and does not include `thenlper/gte-large`. Because the two defaults produce vectors of different dimensions, do not point both SDKs at the same vector store collection unless you configure them to use the same model.
</Note>
The TypeScript SDK supports these FastEmbed models. Pass the exact string as `model`:
- `fast-bge-small-en-v1.5` (default)
- `fast-bge-small-en`
- `fast-bge-base-en`
- `fast-bge-base-en-v1.5`
- `fast-bge-small-zh-v1.5`
- `fast-all-MiniLM-L6-v2`
- `fast-multilingual-e5-large`
### Config
Here are the parameters available for configuring FastEmbed embedder:
Here are the parameters available for configuring the FastEmbed embedder:
<Tabs>
<Tab title="Python">
| Parameter | Description | Default Value |
| --- | --- | --- |
| `model` | The name of the FastEmbed model to use | `thenlper/gte-large` |
| `embedding_dims` | Dimensions of the embedding model (auto-derived from the model if not set) | `None` |
</Tab>
<Tab title="TypeScript">
| Parameter | Description | Default Value |
| --- | --- | --- |
| `model` | The FastEmbed model to use (see the supported list above) | `fast-bge-small-en-v1.5` |
The embedding dimension is detected automatically at startup, so you do not need to set it manually.
</Tab>
</Tabs>
+1 -1
View File
@@ -10,7 +10,7 @@ Mem0 offers support for various embedding models, allowing users to choose the o
See the list of supported embedders below.
<Note>
All embedders listed below are supported in the Python implementation. The TypeScript implementation supports: **OpenAI**, **Azure OpenAI**, **Google AI**, **Langchain**, **LM Studio**, **Ollama**, and **Together**.
All embedders listed below are supported in the Python implementation. The TypeScript implementation supports: **OpenAI**, **Azure OpenAI**, **FastEmbed**, **Google AI**, **Langchain**, **LM Studio**, **Ollama**, and **Together**.
</Note>
<CardGroup cols={4}>