Move off deprecated reranker and LLM endpoints - #70
Conversation
The reranker this branch calls is already gone: the hosted
llama-3_2-nv-rerankqa-1b-v2 endpoint returns HTTP 410 ("end of life on
2026-05-18"), so retrieval reranking fails today. The chat/summarization LLM
nvidia-nemotron-nano-9b-v2 is in the August 2026 deprecation wave.
Reranker moves to llama-nemotron-rerank-vl-1b-v2, self-hosted, mirroring the
embedding-nim service this branch already runs. Self-hosting is not a
preference here - the pinned langchain-nvidia-ai-endpoints==0.3.7 validates
rerank model names against its own registry, which only knows four
old-generation models, so the hosted successor is rejected client-side before a
request is ever made. Upgrading the SDK is not viable either: 0.3.19 and
langchain_core==0.3.21 resolve as ResolutionImpossible.
LLM moves to nemotron-3-nano-30b-a3b in all three places. Unlike the reranker,
ChatNVIDIA passes model names straight through, so this needed no plumbing
change - verified against the pinned SDK rather than assumed.
Also updates the hardcoded reranker defaults in milvus_db.py and aiq/utils.py,
which still point at the dead endpoint. Config overrides them at runtime, so
they are latent rather than active, but they are the copy a new call site
inherits.
Embedding and the Parakeet ASR NIM are deliberately untouched: both are
self-hosted containers on this branch, so hosted-endpoint deprecation does not
apply to them.
Validated on an L4: the reranker NIM serves the model id the config asks for,
and the pinned SDK reranks through it correctly - a GPU-related passage scores
-5.41 for a query about GPUs, versus -7.50 and -7.91 for unrelated passages.
The first pass missed four files under src/vss_ctx_rag/aiq_config/, which still carried the dead llama-3_2-nv-rerankqa endpoint. These are not inert: the AIQ guides instruct users to run `aiq serve --config_file=` against exactly these workflow and function configs, so anyone following that path still hit the 410. Same change as the main config - the successor model, pointed at the self-hosted reranker service.
Hardware footprint validated on RTX 6000 Ada (48 GB)Following up on the "do the locally-hosted models still fit on the target GPU" question — deployed the self-hosted NIMs on a real NVIDIA RTX 6000 Ada (48 GB) and measured. All three self-hosted NIMs up (post-swap): $ nvidia-smi --query-gpu=name,memory.used,memory.total --format=csv,noheader
NVIDIA RTX 6000 Ada Generation, 20448 MiB, 49140 MiB
$ nvidia-smi --query-compute-apps=used_memory --format=csv,noheader
5810 MiB # reranker-nim llama-nemotron-rerank-vl-1b-v2:2.3.0 (the swap adds only this)
3560 MiB # embedding-nim llama-3.2-nv-embedqa-1b-v2:1.10.0
11056 MiB # parakeet-nim parakeet-0-6b-ctc-en-us:2 (ASR)~20 GB of 48 GB used — ~28 GB (58%) headroom. Fits comfortably. The swap only adds the reranker (~5.7 GB); embedding and ASR were already local. Reranker serves correctly through the pinned SDK ( $ python3 - <<'PY'
from langchain_nvidia_ai_endpoints import NVIDIARerank
from langchain_core.documents import Document
r = NVIDIARerank(model="nvidia/llama-nemotron-rerank-vl-1b-v2",
base_url="http://reranker-nim:8000/v1", api_key="x")
docs = [Document(page_content="GPU acceleration for radio signal processing"),
Document(page_content="a banana bread recipe")]
print([round(d.metadata["relevance_score"], 3) for d in r.compress_documents(
query="what was said about GPUs?", documents=docs)])
PY
[-5.413, -7.808] # GPU passage ranked first — correctOn the reranker pathA full end-to-end deploy of streaming-data-to-rag (A100, 14 containers, live ASR → ingest → graph-RAG with grounded citations) confirmed something worth flagging: the blueprint runs in $ docker logs vss-ctx-rag-retriever 2>&1 | grep -i 'rag type'
rag type: graph-rag
$ docker logs vss-ctx-rag-retriever 2>&1 | grep -icE '410|Gone'
0So the dead hosted reranker ( (Also surfaced while deploying: a |
| method: "batch" | ||
| llm: | ||
| model: nvidia/nvidia-nemotron-nano-9b-v2 | ||
| model: nvidia/nemotron-3-nano-30b-a3b |
There was a problem hiding this comment.
Hi instead of hardcoding models we have switch to ENV in latest main
https://github.com/NVIDIA/context-aware-rag/blob/main/config/config.yaml
|
/ok to test 88f992c |
cb87154
into
NVIDIA:dev/streaming-data-to-rag
Moves this branch off two deprecated inference endpoints, and validates the result on a GPU.
Builds on the work in #43, which targeted
main. This one targetsdev/streaming-data-to-ragdirectly — the branch the Streaming Data to RAG blueprint actually pins — so it can be reviewed and merged on its own. Opening it separately rather than pushing to #43 because I don't have write access to that branch.Why
The reranker is already gone. The hosted
llama-3_2-nv-rerankqa-1b-v2endpoint this branch calls returns:So retrieval reranking fails on this branch today, not at some future date.
The LLM is next.
nvidia/nvidia-nemotron-nano-9b-v2(used for chat, summarization and notification) is in the August 2026 deprecation wave. It still responds, but not for long.What changed
llama-3.2-nv-rerankqa-1b-v2@ai.api.nvidia.comllama-nemotron-rerank-vl-1b-v2, self-hostednvidia-nemotron-nano-9b-v2@integrate.apinemotron-3-nano-30b-a3b@integrate.apiThe reranker has to be self-hosted — this isn't a style preference
Pointing the config at the hosted successor does not work with the pinned SDK.
langchain-nvidia-ai-endpoints==0.3.7validates rerank model names against its own registry:That registry knows only four models, all previous-generation. The request is rejected client-side before it's ever sent — note the hosted endpoint itself answers
200to a rawcurl, so this fails only through the SDK.Upgrading the SDK isn't an option either:
So the reranker follows the pattern this branch already uses for embedding: a
reranker-nimservice incompose.yaml(mirroringembedding-nim), withbase_urlpointing at it.RERANKER_GPU_IDdefaults to0alongsideEMBEDDING_GPU_ID; set them apart on multi-GPU hosts.The LLM needed no such treatment —
ChatNVIDIApasses model names straight through with no registry check. I verified that against the pinned SDK rather than assuming it, since the two clients behave differently.Stale defaults in source
milvus_db.pyandaiq/utils.pystill hardcode the dead reranker as their default.config.yamloverrides them at runtime, so nothing is broken today — but they're the values a new call site inherits, so they're updated too.What is deliberately not changed
Embedding and the Parakeet ASR NIM are both self-hosted containers on this branch. Hosted-endpoint deprecation doesn't apply to them, so they're left alone.
This is worth stating explicitly: Parakeet has been flagged as needing replacement in the deprecation tracking, and on this branch that flag is a false positive — it runs from
nvcr.io, notbuild.nvidia.com. No action needed for it here.Validation
Run on a single L4. The reranker NIM (
llama-nemotron-rerank-vl-1b-v2:2.3.0) came up healthy and advertises the model id the config asks for:Then the pinned SDK (
langchain-nvidia-ai-endpoints==0.3.7,langchain_core==0.3.21) reranking through it, query "what was said about GPUs?":Correct ordering with a clear margin — so the client accepts the model, reaches the NIM, and gets meaningful scores. That's the specific thing that fails against the hosted endpoint.
LLM:
nemotron-3-nano-30b-a3bverified responding throughChatNVIDIAon the pinned SDK.Worth flagging
nemotron-3-nano-30b-a3bhas a limited shelf life. Nemotron-3.5-Nano goes live 2026-08-11, and the 3-Nano generation is expected to retire roughly two weeks after. This change gets the branch off a model that's deprecating now, but another LLM bump is likely soon. Happy to follow up once 3.5-Nano is available.