Skip to content

fix: replace retired NVIDIA embedding model - #901

Merged
andreatnvidia merged 3 commits into
mainfrom
andreatnvidia/fix/nvidia-embedding-model
Aug 31, 2026
Merged

fix: replace retired NVIDIA embedding model#901
andreatnvidia merged 3 commits into
mainfrom
andreatnvidia/fix/nvidia-embedding-model

Conversation

@andreatnvidia

@andreatnvidia andreatnvidia commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

📋 Summary

Replace DataDesigner's retired NVIDIA Build embedding default with nvidia/nemotron-3-embed-1b. The previous model reached end of life on August 25 and now causes the scheduled provider health check to fail with HTTP 410.

🔗 Related Issue

N/A

🔄 Changes

  • Update the predefined NVIDIA embedding model to nvidia/nemotron-3-embed-1b.
  • Update the built-in model configuration assertion.
  • Update the published default-model table and copyable Fern configuration example.

🧪 Testing

  • .venv/bin/pytest -p no:cacheprovider packages/data-designer-config/tests/config/test_default_model_settings.py
  • Live DD health check for nvidia/embedding
  • make check-fern-docs-locally
  • .venv/bin/ruff check --fix .
  • .venv/bin/ruff format .
  • E2E tests: N/A - covered by the targeted live provider health check

✅ Checklist

  • Follows commit message conventions
  • Commits are signed off (DCO)
  • Architecture docs: N/A - model ID replacement only

Description updated with AI

Signed-off-by: Andre Manoel <amanoel@nvidia.com>
@andreatnvidia
andreatnvidia requested a review from a team as a code owner August 31, 2026 14:32
@greptile-apps

greptile-apps Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR replaces the retired default NVIDIA embedding model with nvidia/nemotron-3-embed-1b.

  • Updates the predefined model configuration and its test assertion.
  • Aligns the published default-model table and copyable Fern example with the replacement model.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
packages/data-designer-config/src/data_designer/config/utils/constants.py Replaces the retired NVIDIA embedding model identifier while preserving the existing embedding request parameters.
packages/data-designer-config/tests/config/test_default_model_settings.py Updates the built-in model configuration assertion to match the replacement identifier.
fern/versions/latest/pages/concepts/models/default-model-settings.mdx Updates the documented NVIDIA embedding default to match the built-in configuration.
fern/versions/latest/pages/concepts/models/model-configs.mdx Updates the copyable embedding configuration example to use the replacement model.

Reviews (3): Last reviewed commit: "Merge branch 'main' into andreatnvidia/f..." | Re-trigger Greptile

@github-actions

Copy link
Copy Markdown
Contributor

Fern preview: https://nvidia-preview-pr-901.docs.buildwithfern.com/nemo/datadesigner

Fern previews include the docs-website version archive with PR changes synced into latest. Notebook tutorials are rendered without execution outputs in previews.

@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the quick turnaround on this, @andreatnvidia — unblocking the failing health check with a minimal, surgical change is exactly the right call.

Summary

This swaps the predefined NVIDIA embedding default from the retired nvidia/llama-nemotron-embed-1b-v2 (EOL Aug 25, now returning HTTP 410) to nvidia/nemotron-3-embed-1b, and updates the matching assertion in test_get_builtin_model_configs. The implementation matches the stated intent precisely: two lines, one behavioral, one test, no scope creep. I confirmed ruff check and ruff format --check are clean on both files, and scripts/health_checks.py reads the model id and inference params straight out of PREDEFINED_PROVIDERS_MODEL_MAP, so the live check you ran did exercise this exact config end to end.

Findings

Warnings — Worth addressing

fern/versions/latest/pages/concepts/models/model-configs.mdx:104 — Docs still hand users the retired model id

  • What: Two published Fern pages still reference nvidia/llama-nemotron-embed-1b-v2 after this change:
    • fern/versions/latest/pages/concepts/models/default-model-settings.mdx:52 — the nvidia-embedding row of the "NVIDIA Models" defaults table, which now misreports what the code actually resolves to.
    • fern/versions/latest/pages/concepts/models/model-configs.mdx:104 — a copy-pasteable dd.ModelConfig(...) example.
  • Why: The model-configs.mdx one is the sharper edge: it's a snippet users are meant to lift verbatim, and pasting it now yields the same HTTP 410 this PR exists to fix — so the docs would actively reproduce the bug for anyone following them. The defaults table is a straight factual mismatch with PREDEFINED_PROVIDERS_MODEL_MAP. Worth noting that the precedent commit for this exact kind of swap, 0a1907ea ("fix: provider CI health checks", fix: provider CI health checks #750), updated default-model-settings.mdx:52 in the same commit as the constant — so keeping the two in lockstep is the established pattern here, and this PR is the point where they diverge.
  • Suggestion: Two more one-line edits in this PR would keep code and docs atomic:
    # default-model-settings.mdx:52
    | `nvidia-embedding` | `nvidia/nemotron-3-embed-1b` | Text embeddings | `encoding_format="float", extra_body={"input_type": "query"}` |
    
    # model-configs.mdx:104
    model="nvidia/nemotron-3-embed-1b",
    
    If you'd rather keep this PR strictly to the CI unblock, a follow-up issue works too — but since it's a pure find-and-replace of a now-dead id, folding it in here seems lower-friction than tracking it separately.

Suggestions — Take it or leave it

packages/data-designer-config/src/data_designer/config/utils/constants.py:363 — Embedding swaps aren't drop-in for persisted vectors

  • What: Changing the default embedding model changes both the vector space and, quite likely, the dimensionality. Anyone who generated embeddings with the old default and persists them (vector store, similarity search, clustering — the use cases fern/versions/latest/pages/concepts/columns.mdx:146-149 explicitly advertises) can't meaningfully compare old vectors against new ones.
  • Why: This is invisible at the config layer and won't surface as an error — just silently degraded similarity results, which is a nasty failure mode to debug. It isn't a reason to hold the fix (the old model is gone; there's no backward-compatible option), but it's the kind of thing users appreciate hearing about up front.
  • Suggestion: Consider a line in the release notes / changelog noting that nvidia-embedding now resolves to a different model and previously persisted embeddings should be regenerated. Nothing needed in the code itself.

Out of scope, flagging only so it isn't mistaken for coverage: fern/versions/latest/pages/devnotes/posts/data-designer-got-skills.mdx:1085 and fern/assets/data-designer-got-skills/trace-skill.html:166 mention an even older id (nvidia/llama-3.2-nv-embedqa-1b-v2). Those are point-in-time CLI transcripts in a blog post, already stale before this PR, so leaving them alone is defensible — I'd only touch them if you want the whole tree consistent.

What Looks Good

  • Tight, well-scoped diff. Two lines for a two-line problem. No opportunistic refactoring bundled in, which makes this trivial to review and to revert if the new model turns out to have its own quirks.
  • Test updated in the same commit. test_get_builtin_model_configs asserts on exact model ids, so a stale assertion would have failed CI — updating it alongside the constant keeps the suite honest rather than papering over the change.
  • Verified against the real endpoint, not just the mock. Running the live nvidia/embedding health check is the check that actually matters here: it confirms the new id resolves and that the carried-over extra_body={"input_type": "query"} is still accepted by the replacement model. That param surviving a model swap isn't guaranteed, so exercising it was the right instinct.
  • Correct call on E2E scope. "N/A — covered by the targeted live provider health check" is an accurate read; a full E2E run wouldn't have told you anything the health check didn't.

Structural Impact (graphify, 2.4s)

Risk: MEDIUM (high-connectivity entity (NordColor, 36 deps))

  • 2 Python files, 2 AST entities, 2/77 clusters

High-Connectivity Changes

  • NordColor (36 deps) in packages/data-designer-config/src/data_designer/config/utils/constants.py

Cross-Package Dependencies

  • Check if a string looks like an environment variab (interface) --uses--> NordColor (config)
  • Mask an API key for display, preserving environmen (interface) --uses--> NordColor (config)
  • List current Data Designer configurations. Re (interface) --uses--> NordColor (config)
  • Load and display model providers. Args: (interface) --uses--> NordColor (config)
  • Load and display model configurations. Args: (interface) --uses--> NordColor (config)
  • Load and display MCP provider configurations. (interface) --uses--> NordColor (config)
  • +28 more

Reviewer note on the above: the MEDIUM rating comes from file-level attribution rather than the change itself. NordColor is an enum that happens to live in the same constants.py module and is reported because the tool attributes the edit to the enclosing file; the actual diff touches only the PREDEFINED_PROVIDERS_MODEL_MAP["nvidia"]["embedding"]["model"] string literal and never NordColor or any of its 36 dependents. The listed cross-package edges are all pre-existing interface→config CLI-formatting reads, which flow in the permitted direction per AGENTS.md (interface → engine → config). No import-direction violations, and the effective blast radius is a single string constant. I'd treat this as LOW risk in practice and focused the review on correctness and docs consistency accordingly.

Verdict

Needs changes — nothing wrong with the code; the fix itself is correct and I'd merge it as-is on that basis. The one item worth resolving first:

  • Update the two Fern references to the retired model id (default-model-settings.mdx:52, model-configs.mdx:104), or open a follow-up issue if you'd rather keep this PR strictly to the CI unblock. model-configs.mdx:104 is the one I'd prioritize, since it's a copy-paste snippet that currently reproduces the exact 410 this PR fixes.

Lint note: the dev venv wasn't present in this CI environment, so ruff ran via uvx ruff@latest instead of .venv/bin/ruff. Both check and format --check passed on the two changed files. The test suite could not be executed (no pytest available in this run) — the author's reported local run stands unverified by me, though the assertion change is mechanically consistent with the constant.


This review was generated by an AI assistant.

@nabinchha

Copy link
Copy Markdown
Contributor

Thanks for the focused fix, @andreatnvidia!

Summary

This updates the built-in NVIDIA embedding configuration to nvidia/nemotron-3-embed-1b and keeps the corresponding assertion in sync. The implementation matches the stated replacement for newly generated built-in settings, but the public documentation still advertises the retired model.

Findings

Warnings — Worth addressing

fern/versions/latest/pages/concepts/models/default-model-settings.mdx:52 and fern/versions/latest/pages/concepts/models/model-configs.mdx:104 — Public docs still use the retired model ID

  • What: The default-model table and the copyable ModelConfig example still name nvidia/llama-nemotron-embed-1b-v2 after the code switches the built-in alias to nvidia/nemotron-3-embed-1b.
  • Why: The first page will no longer describe the shipped default accurately, and users who copy the second example will continue sending requests to the retired endpoint that this PR is intended to replace.
  • Suggestion: Update both occurrences to nvidia/nemotron-3-embed-1b in this PR and run the Fern docs checks/preview.

What Looks Good

  • The production change is deliberately small and keeps the existing alias and inference-parameter contract intact.
  • The targeted assertion now protects the replacement model ID from regression.
  • Keeping input_type="query" is compatible with the replacement model's documented query/passage API.

Verdict

Needs changes — Please update the two public documentation references so the shipped default and the copyable example do not point users back to the retired model.


This review was generated by an AI assistant.

Signed-off-by: Andre Manoel <amanoel@nvidia.com>
@andreatnvidia

Copy link
Copy Markdown
Contributor Author

Updated both Fern references in 29426eb8. The default table and copyable ModelConfig example now use nvidia/nemotron-3-embed-1b.

@andreatnvidia
andreatnvidia merged commit aff03a7 into main Aug 31, 2026
69 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants