Embeddings

SK Memory generates vector embeddings locally using a model bundled with ThinkForge. These embeddings power semantic search, smart link discovery, and the Forge Graph visualization.

No content is sent to any external service. All embedding computation happens on your machine.

The Model

ThinkForge uses all-MiniLM-L6-v2, a compact sentence transformer that produces 384-dimensional vectors. The model ships inside the install directory.

It accepts up to 256 tokens of input. Longer text is handled by the chunking system, which splits documents into segments that fit before embedding.

When Embeddings Are Computed

During indexing — When a document is indexed, on project open, file save, file system change, or explicit index, each chunk is embedded as part of that operation.

Conversation pairs — Chat question-and-answer pairs are embedded in the background, so the chat interface is not blocked.

Backfill — A manual backfill can generate embeddings for chunks that were indexed before embeddings were available, or for chunks that failed to embed.

Embedding runs one chunk at a time to avoid resource contention.

Storage

Embeddings are stored in the project's index alongside its chunks, each linked to the chunk it describes and tagged with the model name and dimension.

When a document is re-indexed with different content, its old embeddings are replaced.

Availability

Embeddings are enabled automatically when the model files are present. There is no setting to turn them on or off.

If the model files are missing — possible in a stripped or damaged installation — embeddings are unavailable and search falls back to keyword-only. The MCP statistics tool reports whether embeddings are enabled.

Progress Tracking

Embedding progress is reported as the ratio of embedded chunks to total chunks:

  • EmbeddedChunks — chunks that have embeddings stored
  • TotalChunks — total chunks across all documents
  • EmbeddingProgress — a ratio from 0.0 to 1.0

A value below 1.0 means some chunks are not yet embedded, either because embedding is still running or because some chunks failed. This is available through the MCP statistics tool.

Performance

Embedding throughput — Chunks are embedded one at a time. For typical documents this keeps up with indexing. Large batch imports of hundreds of files will take time to fully embed.

Search performance — The first semantic search in a project loads all its vectors into memory, and later searches reuse that cache until an index or delete invalidates it. Search compares the query against every cached vector, which works well for typical project sizes but grows linearly with chunk count.

Memory usage — Roughly 1.5 MB for a project with 1,000 chunks.

Embeddings enable semantic search and the semantic half of hybrid search. Without them:

  • Hybrid search falls back to keyword-only
  • Semantic search returns an error
  • Smart links in the Document Info Panel are not available
  • Forge Graph clustering uses basic metadata rather than semantic similarity

Keyword search and tag search work regardless.

See Search and Retrieval for how search modes use embeddings.