1. Learn
  2. Pick a model

Local embedding models: nomic-embed-text and friends

What embedding models do, why they power search over your documents, how to run nomic-embed-text with Ollama, and how to choose one.

Updated Oct 26, 2026 · RunItLocal.io

An embedding model turns text into a list of numbers that captures its meaning. It's the engine behind "chat with your documents" and any search that finds results by meaning instead of exact words. For local use, start with nomic-embed-text in Ollama. It's small, fast, and good enough for most personal and small-team projects.

What embeddings are for

A chat model writes text. An embedding model only reads it. You give it a sentence or a paragraph and it returns a vector, a few hundred to a few thousand numbers. Texts with similar meanings get similar vectors, so "how do I reset my password" lands near "forgot login credentials", even with no words in common.

That's what makes these work:

  • Document chat (RAG). Your files are split into chunks and each chunk is embedded once. When you ask a question, it's embedded too, the closest chunks are found, and they're handed to a chat model to answer from. See chat with your documents.
  • Semantic search over notes, tickets or email.
  • Grouping and de-duplicating similar items.
  • Classifying text by comparing it to examples.

Run one with Ollama

Embedding models are tiny next to chat models, typically a few hundred megabytes up to a couple of gigabytes. They run fine on a CPU and fly on any GPU.

ollama pull nomic-embed-text

You don't chat with it. Your tools call it through Ollama's API. To see what it returns:

curl http://localhost:11434/api/embed -d '{"model": "nomic-embed-text", "input": "How much VRAM do I need?"}'

You'll get back a long list of numbers. Open WebUI, Continue, many note apps and most RAG libraries can be pointed at Ollama to use it. See the Ollama API guide.

Choosing an embedding model

Ollama's library has several embedding models, and Hugging Face has many more. What to compare:

WhatWhy it matters
SizeBigger models usually capture meaning better, but embed more slowly. That matters when you index thousands of files.
Max input lengthText longer than this is cut off. Keep your chunks under it.
LanguagesSome are English-focused; others are trained for many languages. Pick a multilingual one if your documents need it.
DimensionsLonger vectors take more storage in your database. Rarely a problem at home scale.
LicenseCheck it like any other model. See open model licenses explained.

nomic-embed-text is a good default for English. If your documents are in several languages or results seem off, try a multilingual model and compare on your own questions.

Rules that save headaches

Use the same model for indexing and searching. Vectors from different models aren't comparable. If you switch embedding models, re-embed everything.

Some models want a prefix. A few embedding models expect a short label in front of the text, one for documents and another for queries. It's on the model card, and skipping it quietly hurts results. See how to read a model card.

Chunking matters more than the model. Chunks that are too big blur several topics together; too small and they lose context. A few hundred words with some overlap is a common starting point. See local RAG that actually works.

Embeddings find; the chat model answers. If answers are wrong but the right chunks were found, upgrade the chat model. If the right chunks weren't found, fix the embedding side.

Pairing it with a chat model

The embedding model barely needs memory, so the chat model sets your hardware. On a 12 GB card, the embedding model plus Qwen3 14B fits comfortably. On 8 GB, pair it with Qwen3 8B. Here's what a 12 GB RTX 3060 runs, from our calculator:

RTX 3060, 12 GB · estimated with our calculator · full page

  • Qwen3 4BQuick everyday chat and summaries
    ~79 tok/s
    Runs greatqwen3:4b
  • Qwen3 8BA solid all-rounder for chat and writing
    ~38 tok/s
    Runs greatqwen3:8b
  • Gemma 3 12BReads images as well as text
    ~24 tok/s
    Usablegemma3:12b
  • Qwen3 14BNoticeably smarter at reasoning and code
    ~21 tok/s
    Usableqwen3:14b
  • gpt-oss 20BOpenAI's open model. Fast, strong reasoning
    needs 16 GB
    Too biggpt-oss:20b
  • Gemma 3 27BGoogle's best open model for its size
    needs 19 GB
    Too biggemma3:27b
  • Qwen3 30B-A3B30B smarts at small-model speed
    needs 21 GB
    Too bigqwen3:30b
  • Qwen3 32BStrong coding and long answers
    needs 22 GB
    Too bigqwen3:32b
  • Llama 3.3 70BClose to the big cloud models
    needs 45 GB
    Too bigllama3.3:70b
  • gpt-oss 120BOpenAI's largest open model
    needs 67 GB
    Too biggpt-oss:120b
  • Qwen3 235B-A22BAlibaba's flagship open model, for multi-GPU rigs
    needs 144 GB
    Too bigqwen3:235b
  • DeepSeek R1 671BThe full DeepSeek R1, for the biggest rigs
    needs 406 GB
    Too bigdeepseek-r1:671b

When embedding speed matters

For a few hundred documents, indexing takes minutes on almost anything. For tens of thousands, a GPU helps a lot, and the first index is the slow part; after that you only embed new files and each question. If you're indexing a big archive, run it overnight.

Ready to build it? Start with chat with your documents, then check every GPU for the chat model your card can run.