--- title: "FastEmbed" description: "Configure FastEmbed as an embedding provider in Mem0 to generate embeddings locally using ONNX-based models without a GPU." --- 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. ```bash Python pip install fastembed ``` ```bash TypeScript npm install fastembed ``` ### Usage ```python 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) 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."} ] 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" }); ``` **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. 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 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.