2.9 KiB
2.9 KiB
Spend notice — turning on the live LLM RAG — 2026-08-05 (Claude)
Owner instruction this session: the $0 offline build is not the deliverable — stand up the real LLM RAG (semantic query embedding + LLM generation). Owner approved "Full: embed query + generation" and a cheap non-Anthropic generation model (DeepSeek / Qwen / similar Chinese model).
Phase 1 — semantic query embedding (NO IAM change needed)
- The corpus is already embedded (
duocthu_v1, 15,100 pts,cohere.embed-v4:0, corpus SHA04a27166…, verified live today). Only the query side is off. bedrock:InvokeModeloncohere.embed-v4:0is already granted (same policy Codex used for the Titan probe today).- Intended call: ONE query-side probe,
python -m ingestion.embed.probe --provider cohere-v4 --input-kind query, < 20 tokens, expected charge below $0.000001. - Then flip the ai-service default to
EMBEDDING_PROVIDER=cohere-v4and smoke a few real queries (pennies total). No corpus re-embed — vectors exist.
Phase 2 — LLM generation (NEEDS an IAM change; coordinating)
- DeepSeek/Qwen on Bedrock use the Converse API, not the Anthropic Messages
path in
adapters/bedrock_claude.py. New adapterBedrockConverseAnswerGeneratorto be added behindANSWER_PROVIDER=bedrock-converse+answer_model_id. - Requires adding the chosen generation model ARN (e.g.
arn:aws:bedrock:us-east-1::foundation-model/deepseek.v3.2) toinfra/aws/iam/bedrock-embedding-invoke.json. Codex is on AWS today — this IAM attach must not collide with Codex's work. Not applied unilaterally yet. - Probe with ONE short Converse call before any real use.
No full-corpus run, no GPU/EC2, no recurring resource authorized by this notice.
Observed results
- Phase 1 cohere-v4 query probe (2026-08-05): ONE call, input-kind=query,
1024 dims (expected 1024), measured L2 norm 1.000000, latency 1950.6 ms.
Query embedding now shares the corpus's
cohere.embed-v4:0space. No Cohere corpus run, no IAM change. Exact bill not checked; estimate stands. - Phase 2 generation: IAM
BedrockEmbeddingInvokebumped to v4 (default), adding invoke ondeepseek.v3.2andcohere.rerank-v3-5:0(+ the two embedding models). Codex was off, no collision. Repo fileinfra/aws/iam/bedrock-embedding-invoke.jsonupdated to match v4. - deepseek.v3.2 Converse probe: 4 short calls, stopReason end_turn, 41 in / 18 out tokens, ~1.3-5.0s. Vietnamese answer returned correctly.
- End-to-end smoke (cohere-v4 + rerank + deepseek), grounding kept ON:
contraindication (section route, grounded), free-form fever question
(rerank trimmed 29 sections -> 6, grounded), adult paracetamol dose
(population/route labels preserved, distinct citations, grounded). All
generated answers passed
grounding.verify. A few dozen cloud calls total; exact bill not checked, still cents-scale on the estimate.