FastEmbed - Mem0
Using FastEmbed
You can use FastEmbed to run embedding models locally in Mem0. FastEmbed is an ONNX-based embedding library that runs efficiently on CPU without requiring a GPU or an external API key.
Installation
FastEmbed is an optional dependency, so install it alongside Mem0.
Python
pip install fastembed
TypeScript
npm install fastembed
Usage
Python
import os
from mem0 import Memory
os.environ["OPENAI_API_KEY"] = "your_api_key" # For LLM
config = {
"embedder": {
"provider": "fastembed",
"config": {
"model": "thenlper/gte-large"
}
}
}
m = Memory.from_config(config)
m.add([
{"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."}
], user_id="john")
TypeScript
import { Memory } from "mem0ai/oss";
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" });
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.
Config
Here are the parameters available for configuring the FastEmbed embedder:
| 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 |
| 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.