Skip to content

Provider Embedding Model Regression: Prompt Contains Invalid Tokens #247

Description

@Nauscar

When using older embedding models such as nomic-embed-text-v1.5 with the llama.cpp provider, the following error now occurs:

Error: Error code: 400 - {'error': {'code': 400, 'message': 'Prompt contains invalid tokens', 'type': 'invalid_request_error'}}

I was able to determine with git bisect that this regression is due to commit fd47443d298e16f3be968967738824f3dad6dad8 (#229). The newly introduced OpenAIEmbeddings class indicates:

When using a non-OpenAI provider, set check_embedding_ctx_length=False to send raw text instead of tokens (which many providers don't support)

The following patch resolves the issue when using nomic-embed-text-v1.5, however, this patch would be undesirable when using newer embedding models such as Qwen3-Embedding-8B which supports tokens and is currently fine as-is.

diff --git a/src/metis/providers/openai_compatible.py b/src/metis/providers/openai_compatible.py
index b88e21d..3838bb0 100644
--- a/src/metis/providers/openai_compatible.py
+++ b/src/metis/providers/openai_compatible.py
@@ -152,6 +152,7 @@ class OpenAICompatibleEmbeddingProvider(EmbeddingProvider):
             params["default_headers"] = self.default_headers
         if extra_kwargs:
             params.update(extra_kwargs)
+        params["check_embedding_ctx_length"] = False
 
         client = OpenAIEmbeddings(**cast(dict[str, Any], params))
         return LangChainEmbeddingAdapter(

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions