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.