Každá vrstva má jasnou odpovědnost, kontrakt a monitoring. Od foundation modelů po produkční inference — nic není black box.
Azure OpenAI (GPT-4o, GPT-4.1), Anthropic Claude, open-weights modely (Llama 3.3, Mistral Large, Qwen 2.5). Výběr podle latence, ceny a compliance požadavků klienta.
LangChain a LangGraph pro multi-step agenty, Semantic Kernel pro .NET ekosystém, LlamaIndex pro knowledge retrieval. Volba závisí na stack klienta a typu úlohy.
pgvector pro menší objemy (skvělá integrace s existujícím PostgreSQL), Qdrant nebo Weaviate pro scale. Embedding modely: text-embedding-3-large, Nomic Embed, BGE-M3.
NVIDIA NeMo Guardrails, custom validátory, content filtering, PII detection. Každý LLM call prochází input/output validací — žádný prompt injection, žádný data leak.
RAGAS framework pro RAG metriky (faithfulness, answer relevancy, context precision). Custom eval sady per doména. Automatizované regression testy na každém modelu a promptu.
MLflow 3 pro experiment tracking a model registry. LangSmith pro tracing LLM callů. Prometheus + Grafana pro runtime metriky. Každý call logován s cost, latency, token count.
Retrieval-Augmented Generation není jen „vector search + LLM". Je to end-to-end systém s vlastním životním cyklem, evaluací a rollback strategií.
Ingestion je nejčastěji podceněná část RAG systému. V praxi tvoří 60–70 % celkového úsilí. Naše pipeline zpracovává dokumenty z heterogenních zdrojů — interní Confluence wiki, PDF manuály, SQL databáze, SharePoint — a transformuje je do indexovatelných chunků.
Fixed-size chunking (např. 512 tokenů s 50-token overlap) je jednoduchý, ale ztrácí kontext na hranicích. Používáme semantic chunking — algoritmus detekuje přirozené hranice v textu na základě embedding similarity sousedních vět. Výsledek: chunky, které odpovídají logickým celkům, ne arbitrárním řezům.
Pro strukturované dokumenty (tabulky, formuláře, technické specifikace) kombinujeme layout-aware parsing přes unstructured.io s custom post-processorem, který zachovává hierarchii nadpisů jako metadata.
Lessons learned: Metadata enrichment je kritický. Každý chunk nese: zdrojový dokument, stránku, sekci, datum poslední aktualizace a access level. Bez toho nelze implementovat row-level security v RAG.
Čistě vektorové hledání má problém s exaktními termíny — čísla smluv, kódy produktů, regulatorní references. Proto standardně nasazujeme hybrid search: kombinace dense vector similarity (cosine) a sparse keyword search (BM25).
Váhy mezi vektorovým a keyword score ladíme per doména. Pro právní dokumenty typicky 40:60 (BM25 dominant), pro knowledge base 70:30 (vector dominant). Reciprocal rank fusion (RRF) kombinuje rankingy obou metod.
Po initial retrieval (top-k = 20–50) aplikujeme cross-encoder reranker (Cohere Rerank nebo open-source bge-reranker-v2-m3) pro přesnější řazení. Cross-encoder vidí query i dokument současně — dramatically lepší relevance než bi-encoder, ale příliš pomalý pro initial search.
LLM dostává kontext a query. Ale prompt engineering v produkci je jiná disciplína než playground experimenty. Naše prompty mají:
Anti-pattern: „Nalejeme všechny chunky do kontextu a doufáme." Lost-in-the-middle problém je reálný — modely mají tendenci ignorovat kontext uprostřed dlouhého promptu. Řešení: reranking + max 5–8 chunků, seřazených od nejrelevantnějšího.
„Vypadá to dobře" není metrika. Používáme RAGAS framework s automatizovanými eval sady per deployment:
Evaluační dataset budujeme iterativně: product owner dodá 50–100 otázek s gold-standard odpověďmi. Automatizovaný eval běží v CI/CD — každý merge request na prompt nebo retrieval konfiguraci musí projít regression testy.
Fine-tuning je odpověď na otázku: „RAG nestačí, potřebujeme model, který rozumí naší doméně." Ale fine-tuning v produkci není trainer.train() na notebooku. Je to řízený proces s jasným decision framework.
Používáme PyTorch jako foundation s Hugging Face Transformers a PEFT (Parameter-Efficient Fine-Tuning). Pro většinu produkčních use cases: QLoRA — fine-tuning s 4-bit quantization, který snižuje VRAM requirements o 70 % bez signifikantního quality dropu.
Reálná čísla: Fine-tuned Llama 3.1 8B na bankovní doménu dosahuje 89 % accuracy na domain-specific eval setu vs. 67 % pro base model. Latence: 45 ms P95 na A100 (vs. 180 ms pro GPT-4o přes API). Cost per 1M tokenů: $0.12 vs. $2.50.
Model v produkci je jako dítě v autě — nemůžete ho tam nechat a odejít. MLOps je disciplína, ne nástroj.
MLflow 3 s GenAI rozšířeními (od června 2025). Každý experiment: parametry, metriky, artefakty, prompt verze. Porovnání modelů na dashboardu, ne v hlavě.
Centrální registr modelů s verzováním, staging/production stages, lineage a approval workflow. Žádný model se nedostane do produkce bez review.
Traffic splitting na úrovni inference gateway. A/B testy s automatickým vyhodnocením po statisticky signifikantním vzorku. Canary deploy s automatic rollback.
Každý LLM call je traced: input tokens, output tokens, latence, cost, model verze, guardrail hits. Data drift detection na embedding distribucích.
PyTorch 2.x s torch.compile() je náš default pro custom model development. Proč ne TensorFlow? Ekosystém — Hugging Face, většina výzkumných paperů, rychlost iterace. V produkci ale záleží na inference runtime:
Ne vše řeší LLM. Pro specifické úlohy trénujeme custom modely:
Hardware: Pro training využíváme Azure NC-series (A100 80GB). Pro inference: A10G pro LLM, T4 pro menší modely. Auto-scaling na basis GPU utilization — idle nodes se vypínají po 15 minutách.