> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mem0.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Hugging Face

> Configure Hugging Face as an embedding provider in Mem0 for local embedding generation with open-source models.

You can use embedding models from Huggingface to run Mem0 locally.

<Note>
  The TypeScript SDK supports Hugging Face only through a hosted [Text Embeddings Inference (TEI)](#using-text-embeddings-inference-tei) endpoint, or any OpenAI-compatible Hugging Face endpoint. The local `sentence-transformers` mode shown first is Python-only.
</Note>

### Usage

```python theme={null}
import os
from mem0 import Memory

os.environ["OPENAI_API_KEY"] = "your_api_key" # For LLM

config = {
    "embedder": {
        "provider": "huggingface",
        "config": {
            "model": "multi-qa-MiniLM-L6-cos-v1"
        }
    }
}

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")
```

### Using Text Embeddings Inference (TEI)

You can also use Hugging Face's Text Embeddings Inference service for faster and more efficient embeddings. This is the mode the TypeScript SDK uses.

<CodeGroup>
  ```python Python theme={null}
  import os
  from mem0 import Memory

  os.environ["OPENAI_API_KEY"] = "your_api_key" # For LLM

  # Using HuggingFace Text Embeddings Inference API
  config = {
      "embedder": {
          "provider": "huggingface",
          "config": {
              "huggingface_base_url": "http://localhost:3000/v1"
          }
      }
  }

  m = Memory.from_config(config)
  m.add("This text will be embedded using the TEI service.", user_id="john")
  ```

  ```typescript TypeScript theme={null}
  import { Memory } from 'mem0ai/oss';

  // Point at a running TEI server, or any OpenAI-compatible HF endpoint
  const config = {
    embedder: {
      provider: 'huggingface',
      config: {
        huggingfaceBaseUrl: 'http://localhost:3000/v1',
      },
    },
  };

  const memory = new Memory(config);
  await memory.add("This text will be embedded using the TEI service.", { userId: "john" });
  ```
</CodeGroup>

To run the TEI service, you can use Docker:

```bash theme={null}
docker run -d -p 3000:80 -v huggingfacetei:/data --platform linux/amd64 \
    ghcr.io/huggingface/text-embeddings-inference:cpu-1.6 \
    --model-id BAAI/bge-small-en-v1.5
```

### Config

Here are the parameters available for configuring the Hugging Face embedder:

<Tabs>
  <Tab title="Python">
    | Parameter              | Description                                           | Default Value               |
    | ---------------------- | ----------------------------------------------------- | --------------------------- |
    | `model`                | The name of the model to use                          | `multi-qa-MiniLM-L6-cos-v1` |
    | `embedding_dims`       | Dimensions of the embedding model                     | `selected_model_dimensions` |
    | `model_kwargs`         | Additional arguments for the model                    | `None`                      |
    | `huggingface_base_url` | URL to connect to Text Embeddings Inference (TEI) API | `None`                      |
  </Tab>

  <Tab title="TypeScript">
    | Parameter            | Description                                                                                                              | Default Value |
    | -------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------- |
    | `huggingfaceBaseUrl` | TEI or OpenAI-compatible endpoint URL. Required; falls back to `baseURL`, `url`, then the `HUGGINGFACE_BASE_URL` env var | `None`        |
    | `model`              | Model name sent to the endpoint (TEI ignores it)                                                                         | `tei`         |
    | `apiKey`             | API key for the endpoint; falls back to the `HUGGINGFACE_API_KEY` env var                                                | `"hf"`        |
  </Tab>
</Tabs>
