Volver al inicio

Evolución de RAG: genomas y caché de servidores MCP

El artículo describe el mecanismo de evolución controlada de pipelines RAG en servidores MCP para documentación 1C. Tres capas de genomas (postprocess, routing, cache_policy) evolucionan a través de mutaciones LLM y evaluación. Modelos SQLAlchemy, ejemplos JSON y ciclo de candidato a activo se proporcionan.

Evolución controlada de sistemas RAG en documentación 1C
Advertisement 728x90

Evolución de Pipelines RAG mediante Algoritmos Genéticos: Implementación en Servidores MCP

Los sistemas RAG con prompts estáticos pierden eficacia a medida que cambian las consultas. Implementar una evolución controlada utiliza LLMs para generar variantes de "genomas"—configuraciones de pipeline. Un evaluador juez las prueba en una muestra de consultas, y los mejores candidatos pasan al estado pending_approval para confirmación manual por un administrador. Aplicado a servidores MCP documents1c (RAG para documentación 1C) con tres capas: postprocess, routing, cache_policy.

La evolución no es autónoma, sino que opera dentro del bucle de laboratorio del panel de administración. El enfoque está en mejorar los prompts del sistema para el postprocesamiento y las políticas de caché en el dominio de documentación 1C, con potencial expansión a finanzas, contabilidad y campos legales.

Arquitectura del Pipeline de Tres Capas

El pipeline de búsqueda de documentos procesa consultas secuencialmente:

Google AdInline article slot
  • Búsqueda semántica de fragmentos (híbrida si es necesario).
  • Routing: Un clasificador determina query_type (factual_lookup, explanation, bsl_help) y activa un perfil con system_prompt, depth_budget, format.
  • Postprocess: Un LLM ensambla la respuesta según un contrato (answer, key_points, sources, warnings) basado en el genoma activo.
  • Cache_policy: Control de admisión antes de escribir en caché (min_sources_count, block_if_warnings).

| Capa | Objeto de Evolución | Impacto |

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

| postprocess | system_prompt, chunk_count, max_tokens | Calidad de la respuesta textual |

Google AdInline article slot

| routing | classifier_prompt, profiles | Adaptación al tipo de consulta |

| cache_policy | Umbrales de admisión (min_supportedness) | Filtrado de caché |

Postprocess y routing modifican respuestas en tiempo real, mientras que cache_policy solo afecta el almacenamiento.

Google AdInline article slot

Modelo de Datos para Genomas y Evaluaciones

Los genomas se almacenan en la tabla evolution_genome como JSONB con campos: 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")

Cada eval_result registra query, response (hasta 2000 caracteres), judge_score (0–10), judge_reasoning del juez LLM.

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)

Para routing, se genera un eval_seed_prompt—una sesión de prueba de agent+MCP.

Ciclo de Evolución: De Mutaciones a Producción

Ciclo: generate_mutations() → eval_genome() → promote_best() → aprobación manual.

  • Generación: Genoma base (activo o DEFAULT_GENOMES) + N pares query-response de la caché de MCP documents1c. LLM genera N variantes JSON {"genome": {...}, "notes": "..."}.
  • Evaluación: Juez (rag_postprocess_model) verifica según criterios: completitud, precisión, fuentes, concisión. Puntuación promedio en la muestra.
  • Promoción: El mejor candidato pasa a pending_approval.
  • Activación: Admin confirma en la UI.

Generación de Mutaciones por Capa

Postprocess: Mutaciones en system_prompt (instrucciones para ensamblar respuestas, considerando contexto cliente/servidor), system_prompt_reduce (fusionar sin duplicados), chunk_count (15–20), max_tokens (4096–8192), citation_policy (always/inline), verbosity (adaptive/comprehensive).

Ejemplo de genoma postprocess:

{
  "verbosity": "adaptive",
  "max_tokens": 4096,
  "chunk_count": 15,
  "system_prompt": "Eres un experto en 1C. Al responder, siempre considera el contexto de ejecución (cliente ligero, cliente web, servidor, aplicación móvil). Responde en ruso. Cita fuentes.",
  "citation_policy": "always",
  "system_prompt_reduce": "Combina respuestas, separando claramente recomendaciones para diferentes contextos de ejecución. Elimina duplicación."
}

Routing: classifier_prompt + profiles por query_type (system_prompt, depth_budget, format).

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

Se añaden diálogos reales al contexto del generador para analizar debilidades.

Evaluación y Métricas del Juez

El juez evalúa basándose en 4 métricas (0–10):

  • Completitud: Cobertura de la consulta.
  • Precisión: Alineación con fragmentos.
  • Fuentes: Presencia/calidad de citas.
  • Concisión: Ausencia de relleno.

La puntuación promedio determina la promoción. Eval_judge_response almacena la salida cruda del LLM.

Puntos Clave

  • La evolución por capa es independiente: postprocess mejora el texto, cache_policy mejora la calidad de la caché.
  • La aprobación manual evita regresiones en producción.
  • El contexto de la caché real aumenta la relevancia de las mutaciones.
  • Los modelos SQLAlchemy soportan eliminación en cascada para eval_results.
  • Escalable a múltiples dominios (1C + finanzas + programación).

Escalabilidad y Mejores Prácticas

Expansión: Añadir capas para dominios (finanzas: system_prompt considerando datos de referencia; programación: sintaxis BSL). Probar en 10–20 consultas de la caché. Monitorear puntuaciones >8.5 para aprobación. Evitar sobreajuste—limitar mutaciones por ciclo.

— Editorial Team

Advertisement 728x90

Leer después