Python SDK can't request normalize=False for embeddings
Follow-up from #841 by @ayaangazali -- thanks again for that PR!
What
bindings/python/runanywhere/_options_bridge.py:168-172 raises SDKException.not_implemented for EmbedOptions(normalize=False) because the Python bridge's embed() binds no rac_embeddings_options_t and always returns L2-normalized vectors. Now that the commons proto adapter correctly forwards normalize=false (#841), Python is the only SDK left that can't ask for the raw vector -- Kotlin, Swift, Flutter, React Native, Web and Electron all map it through already.
Why it matters
Feature parity: any Python workflow that needs raw (unnormalized) embeddings -- custom similarity metrics, re-ranking, etc. -- has no path today.
Suggested approach
Route the Python bridge's embed() through the proto embeddings entry point (or otherwise bind rac_embeddings_options_t) so normalize and pooling reach commons, then drop the not_implemented guard in check_embed_options.
Done when
-
EmbedOptions(normalize=False)returns a raw pooled vector from Python, matching the other SDKs. - The
not_implementedguard fornormalizeis removed.
Not blocking #841. @ayaangazali, you know this code well now -- you're welcome to take this one if you're interested.
Opened with help from Claude Code and Codex.
Reviewed with help from Claude Code and Codex.
Source: RunanywhereAI/runanywhere-sdks