Zpět na domů

Evoluce RAG: genomy a cache MCP serverů

Článek popisuje mechanismus kontrolované evoluce RAG pipelineů na MCP serverech pro 1C dokumentaci. Tři vrstvy genomů (postprocess, routing, cache_policy) evolují prostřednictvím LLM mutací a hodnocení. Uvedeny SQLAlchemy modely, JSON příklady a cyklus od candidate do active.

Kontrolovaná evoluce RAG systémů na 1C dokumentaci
Advertisement 728x90

Evoluce RAG pipeline pomocí genetických algoritmů: Implementace na MCP serverech

RAG systémy se statickými prompty ztrácejí efektivitu při změně dotazů. Implementace řízené evoluce využívá LLM pro generování variant „genomů“ – konfigurací pipeline. Soudce-posuzovatel je testuje na vzorku dotazů, nejlepší kandidáti přecházejí do stavu pending_approval pro manuální potvrzení administrátorem. Aplikováno na MCP servery documents1c (RAG pro dokumentaci 1C) se třemi vrstvami: postprocess, routing, cache_policy.

Evoluce není autonomní, ale funguje v laboratorním okruhu administračního panelu. Zaměření – zlepšení systémových promptů pro postprocessing a politik ukládání do mezipaměti v doméně 1C-dokumentace, s možností rozšíření na finance, účetnictví, právní oblast.

Architektura třívrstvého pipeline

Pipeline docsearch zpracovává dotazy sekvenčně:

Google AdInline article slot
  • Sémantické vyhledávání chunků (hybridní v případě potřeby).
  • Routing: klasifikátor určuje query_type (factual_lookup, explanation, bsl_help) a aktivuje profil se system_prompt, depth_budget, format.
  • Postprocess: LLM sestaví odpověď podle kontraktu (answer, key_points, sources, warnings) na základě aktivního genomu.
  • Cache_policy: admission-kontrola před zápisem do mezipaměti (min_sources_count, block_if_warnings).

| Vrstva | Objekt evoluce | Vliv |

|------|-----------------|---------|

| postprocess | system_prompt, chunk_count, max_tokens | Kvalita textu odpovědi |

Google AdInline article slot

| routing | classifier_prompt, profiles | Adaptace na typ dotazu |

| cache_policy | prah(y) admission (min_supportedness) | Filtrace mezipaměti |

Postprocess a routing mění odpověď v reálném čase, cache_policy – pouze ukládání.

Google AdInline article slot

Datový model pro genomy a hodnocení

Genomy jsou uloženy v tabulce evolution_genome jako JSONB s poli layer, status (candidate → evaluated → pending_approval → active), genome, score.

class EvolutionGenome(Base):
    layer = Column(String(32), nullable=False, index=True)
    status = Column(String(32), nullable=False, default="candidate", index=True)
    genome = Column(JSONB, nullable=False)
    score = Column(Float, nullable=True)
    eval_results = relationship("EvolutionEvalResult", back_populates="genome")

Každý eval_result zaznamenává query, response (až 2000 znaků), judge_score (0–10), judge_reasoning od LLM-soudce.

class EvolutionEvalResult(Base):
    genome_id = Column(Integer, ForeignKey("evolution_genome.id"), nullable=False)
    query = Column(Text, nullable=False)
    response = Column(Text, nullable=True)
    judge_score = Column(Float, nullable=True)
    judge_reasoning = Column(Text, nullable=True)

Pro routing je generován eval_seed_prompt – testovací session agent+MCP.

Cyklus evoluce: od mutací k produkci

Cyklus: generate_mutations() → eval_genome() → promote_best() → manuální approve.

  • Generace: Základní genom (aktivní nebo DEFAULT_GENOMES) + N párů dotaz-odpověď z mezipaměti MCP documents1c. LLM generuje N variant JSON {"genome": {...}, "notes": "..."}.
  • Hodnocení: Soudce (rag_postprocess_model) kontroluje podle kritérií: úplnost, přesnost, zdroje, stručnost. Průměrný score na vzorku.
  • Povýšení: Nejlepší – pending_approval.
  • Aktivace: Admin potvrdí v UI.

Generování mutací podle vrstev

Postprocess: Mutace v system_prompt (instrukce pro sestavení odpovědi, zohlednění kontextu klient/server), system_prompt_reduce (sloučení bez duplicit), chunk_count (15–20), max_tokens (4096–8192), citation_policy (always/inline), verbosity (adaptive/comprehensive).

Příklad genomu postprocess:

{
  "verbosity": "adaptive",
  "max_tokens": 4096,
  "chunk_count": 15,
  "system_prompt": "Jsi expert na 1C. Při odpovědi nezapomeň zohlednit kontext provádění (tenký klient, webový klient, server, mobilní aplikace). Odpovídej česky. Cituj zdroje.",
  "citation_policy": "always",
  "system_prompt_reduce": "Sluč odpovědi, explicitně odděluj doporučení pro různé kontexty provádění. Odstraň duplikaci."
}

Routing: classifier_prompt + profily podle query_type (system_prompt, depth_budget, format).

Cache_policy: min_supportedness, require_sources, min_sources_count, block_if_warnings, confidence_key_points_min.

Do kontextu generátoru jsou přidány reálné dialogy pro analýzu slabých míst.

Hodnocení a metriky soudce

Soudce hodnotí podle 4 metrik (0–10):

  • Úplnost: pokrytí dotazu.
  • Přesnost: soulad s chunků.
  • Zdroje: přítomnost/kvalita citací.
  • Stručnost: absence vodního textu.

Průměrný score určuje povýšení. Eval_judge_response ukládá surový výstup LLM.

Co je důležité

  • Evoluce vrstev je nezávislá: postprocess zlepšuje text, cache_policy – kvalitu mezipaměti.
  • Manuální approve zabraňuje regresím v produkci.
  • Kontext z reálné mezipaměti zvyšuje relevanci mutací.
  • SQLAlchemy-modely podporují cascade delete pro eval_results.
  • Škálovatelné na multidoménu (1C + finance + kódování).

Škálování a osvědčené postupy

Rozšíření: přidejte vrstvy pro domény (finance: system_prompt se zohledněním NSI; kódování: BSL-syntax). Testujte na 10–20 dotazech z mezipaměti. Sledujte score >8.5 pro approve. Vyhněte se přeučení – limit mutací na cyklus.

— Editorial Team

Advertisement 728x90

Číst dál