High severity beginner · Fix: 2-5 min

ValueError

semantic_kernel.exceptions.ValueError

What this error means
Semantic Kernel throws a ValueError when the embedding service is not configured or missing in the kernel setup.

Stack trace

traceback
ValueError: Embedding service is missing. Please configure an embedding service before calling embedding methods.
  File "/app/main.py", line 42, in generate_embedding
    embedding = kernel.embeddings.get_embedding("text")
  File "/usr/local/lib/python3.10/site-packages/semantic_kernel/kernel.py", line 210, in get_embedding
    raise ValueError("Embedding service is missing. Please configure an embedding service before calling embedding methods.")
QUICK FIX
Instantiate and assign a valid embedding service to the kernel before calling embedding methods.

Why it happens

Semantic Kernel requires an embedding service to be explicitly configured before embedding methods can be used. If the embedding service is not set or the kernel is initialized without specifying it, the kernel cannot generate embeddings and raises this error.

Detection

Check if the kernel instance has an embedding service configured before calling embedding methods, or catch ValueError and log the missing configuration details.

Causes & fixes

1

Kernel instance was created without setting an embedding service.

✓ Fix

Initialize the kernel with a valid embedding service, such as OpenAI embeddings, before calling embedding methods.

2

Embedding service configuration failed or API key environment variable is missing.

✓ Fix

Ensure the embedding service API key is set in environment variables and the embedding client is properly instantiated.

3

Using an outdated or incompatible Semantic Kernel version missing embedding service support.

✓ Fix

Upgrade Semantic Kernel to a version that supports embedding services and follow the updated initialization pattern.

Code: broken vs fixed

Broken - triggers the error
python
from semantic_kernel import Kernel

kernel = Kernel()
# This line triggers the error because no embedding service is set
embedding = kernel.embeddings.get_embedding("Hello world")
Fixed - works correctly
python
import os
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import OpenAIEmbedding

os.environ["OPENAI_API_KEY"] = os.environ.get("OPENAI_API_KEY", "your_api_key_here")  # Set your API key in environment

kernel = Kernel()
embedding_service = OpenAIEmbedding()
kernel.embeddings.set_embedding_service(embedding_service)
embedding = kernel.embeddings.get_embedding("Hello world")
print(embedding)  # Now works because embedding service is configured
Added explicit embedding service initialization and assignment to the kernel, ensuring embedding calls have a configured service.

Workaround

Catch the ValueError when calling embedding methods and fallback to a manual embedding client call outside Semantic Kernel until the embedding service is configured.

Prevention

Always configure and verify the embedding service during kernel initialization and validate environment variables for API keys before deployment.

Python 3.9+ · semantic-kernel >=0.12.0 · tested on 0.14.0
Verified 2026-04
Verify ↗

Community Notes

No notes yetBe the first to share a version-specific fix or tip.