Back to Mem0

FastEmbed

docs/components/embedders/models/fastembed.mdx

2.0.123.5 KB
Original Source

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.

<CodeGroup> ```bash Python pip install fastembed ```
bash
npm install fastembed
</CodeGroup>

Usage

<CodeGroup> ```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" });
</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 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>