Exactamente como se diseñó. La respuesta seguía siendo incorrecta.
Quiero contarles sobre el momento en que dejé de confiar en las partituras de recuperación.
Estaba ejecutando una consulta en una base de conocimientos que había creado cuidadosamente. Buen trozo. Búsqueda híbrida. Reclasificación. Los documentos top-k arrojaron similitudes de cosenos de hasta 0,86. Todos los indicadores decían que el oleoducto estaba funcionando. Pasé esos documentos a un modelo de control de calidad, obtuve una respuesta segura y seguí adelante.
La respuesta fue incorrecta.
No alucinado, mal. No recuperación-fallida-mal. Los documentos correctos habían regresado. Ellos dos. Una cifra preliminar de ganancias y la revisión auditada que la reemplazó, ubicadas una al lado de la otra en la misma ventana contextual. El modelo leyó ambos, eligió uno y lo informó con un 80% de confianza. No tenía ningún mecanismo para decirme que le habían pedido que arbitrara una disputa para la que nunca estuvo diseñado.
Ese es el modo de falla del que trata este artículo. No aparece en sus métricas de recuperación. No activa tus detectores de alucinaciones. Vive en la brecha entre el ensamblaje del contexto y la generación, el único paso en el proceso de RAG que casi nadie evalúa.
Construí un experimento reproducible para aislarlo. Todo lo contenido en este artículo se ejecuta en una CPU de aproximadamente 220 MB. Sin clave API. Ninguna nube. Sin GPU. El resultado que ve en las capturas de pantalla del terminal no está modificado.
Código fuente completo: https://github.com/Emmimal/rag-conflict-demo
Lo que prueba el experimento
La configuración es deliberadamente clínica. Tres preguntas. Una base de conocimientos que contiene tres pares de documentos contradictorios que hacen afirmaciones directamente contradictorias sobre el mismo hecho. La recuperación está optimizada para devolver ambos documentos en conflicto cada vez.
La pregunta no es si la recuperación funciona. Lo hace. La pregunta es: ¿qué hace el modelo cuando le entregas un informe contradictorio y le pides que responda con confianza?
La respuesta, como verá, es que elige un bando. Silenciosamente. Con confianza. Sin decirte que tenía que tomar una decisión.
Tres escenarios, cada uno extraído de la producción
Escenario A: la reformulación de la que nadie le habló al modelo
La publicación de resultados del cuarto trimestre de una empresa informa ingresos anuales de 4,2 millones de dólares para el año fiscal 2023. Tres meses después, los auditores externos reafirman esa cifra en 6,8 millones de dólares. Ambos documentos se encuentran en la base de conocimientos. Ambos están indexados. Cuando alguien pregunta "¿Cuáles fueron los ingresos de Acme Corp para el año fiscal 2023?" – ambos regresan, con puntuaciones de similitud de 0,863 y 0,820 respectivamente.
El modelo responde a 4,2 millones de dólares.
Eligió la cifra preliminar en lugar de la revisión auditada porque el documento preliminar obtuvo una puntuación ligeramente superior en recuperación. Nada en la respuesta indica que una fuente más autorizada no esté de acuerdo.
Escenario B: La actualización de la política llegó demasiado tarde
Una política de recursos humanos de junio de 2023 exige tres días a la semana en la oficina. Una revisión de noviembre de 2023 lo revierte explícitamente: ahora se permite el control totalmente remoto. Ambos documentos se recuperan (puntuaciones de similitud de 0,806 y 0,776) cuando un empleado pregunta sobre la política actual de trabajo remoto.
El modelo responde con la política de junio. La regla más estricta y antigua. El que ya no aplica.
Escenario C: los documentos API que nunca quedaron obsoletos
La versión 1.2 de una referencia de API establece un límite de velocidad de 100 solicitudes por minuto. La versión 2.0, publicada después de una actualización de la infraestructura, lo eleva a 500. Ambos se recuperan (puntuaciones 0,788 y 0,732).
El modelo responde 100. Un desarrollador que utilice esta respuesta para configurar su limitador de velocidad se limitará a una quinta parte de su asignación real.
Ninguno de estos son casos extremos. Cada base de conocimiento de producción acumula exactamente estos patrones a lo largo del tiempo: reformulaciones financieras, revisiones de políticas, documentación versionada. La tubería no tiene ninguna capa que los detecte o maneje.
Ejecutando el experimento
pip install -r requisitos.txt python rag_conflict_demo.py
requisitos.txt
frase-transformers>=2.7.0 # transformadores all-MiniLM-L6-v2 (~90 MB)>=4.40.0 # deepset/minilm-uncased-squad2 (~130 MB) antorcha>=2.0.0 # Solo CPU está bien numpy>=1.24.0 colorama>=0.4.6
Dos modelos. Uno para incrustaciones, otro para control de calidad extractivo. Ambos se descargan automáticamente en la primera ejecución y se almacenan en caché localmente. Total: ~220 MB. No se requiere autenticación.
Fase 1: Qué hace Naive RAG
Aquí está la salida del terminal sin modificar de la Fase 1: RAG estándar sin manejo de conflictos:
────────────────────────────────── ────────────────────────────────── INGENUO | Escenario A: Conflicto numérico ────────────────────────────────── ────────────────────────────────── Consulta: ¿Cuáles fueron los ingresos anuales de Acme Corp para el año fiscal 2023? Respuesta: 4,2 millones de dólares Confianza: 80,3 % Conflicto: SÍ; consulte la advertencia Fuentes recuperadas [0.863] Publicación de resultados del cuarto trimestre de 2023 (2024-01-15) [0.820] Informe-anual-revisado-de-2023 (03-04-2024) [0.589] Descripción general de la empresa-2024 (2024-01-01) Pares de conflicto fin-001 ↔ fin-002 contradicción numérica (topic_sim=0.83) [Comunicado de resultados del cuarto trimestre de 2023: {'$4.2M'}] vs [2023-Informe-anual-revisado: {'$6.8M'}] ────────────────────────────────── ────────────────────────────────── ────────────────────────────────── ────────────────────────────────── INGENUO | Escenario B: Conflicto de políticas ────────────────────────────────── ────────────────────────────────── Consulta: ¿Cuál es la política actual de trabajo remoto para los empleados? Respuesta: todos los empleados deben estar presentes en la oficina un mínimo de 3 días a la semana Confianza: 78,3% Conflicto: SÍ – ver advertencia Fuentes recuperadas [0.806] HR-Policy-junio-2023 (2023-06-01) [0.776] HR-Policy-noviembre-2023 (2023-11-15) [0.196] Política-RRHH-noviembre-2023 (2023-11-15) ────────────────────────────────── ────────────────────────────────── ────────────────────────────────── ────────────────────────────────── INGENUO | Escenario C: Conflicto técnico ────────────────────────────────── ────────────────────────────────── Consulta: ¿Cuál es el límite de tasa de API para el nivel estándar? Respuesta: 100 solicitudes por minuto Confianza: 81,0 % Conflicto: SÍ: consulte la advertencia Fuentes recuperadas [0.788] API-Reference-v1.2 (2023-02-10) [0.732] API-Reference-v2.0 (2023-09-20) [0.383] API-Reference-v2.0 (2023-09-20) ────────────────────────────────── ──────────────────────────────────
Tres preguntas. Tres respuestas equivocadas. Confianza entre el 78% y el 81% en cada uno de ellos.
Observe lo que sucede en los registros antes de cada respuesta:
09:02:20 | ADVERTENCIA | Conflicto detectado: {('fin-001', 'fin-002'): "contradicción numérica…"} 09:02:24 | ADVERTENCIA | Conflicto detectado: {('hr-001', 'hr-002'): "asimetría de señal de contradicción…"} 09:02:25 | ADVERTENCIA | Conflicto detectado: {('api-001', 'api-002'): "asimetría de señal de contradicción…"}
Los conflictos se detectan. Están registrados. Y luego, como resolve_conflicts=False, la canalización pasa el contexto contradictorio completo al modelo y responde de todos modos. Esa advertencia no va a ninguna parte. En un sistema de producción sin una capa de detección de conflictos, ni siquiera recibiría la advertencia.
Por qué el modelo se comporta de esta manera
Esto requiere un momento de explicación, porque el modelo no está roto. Está haciendo exactamente aquello para lo que fue entrenado.
deepset/minilm-uncased-squad2 es un modelo de control de calidad extractivo. Lee una cadena de contexto y selecciona el intervalo con la puntuación logit inicial y logit final combinada más alta. No tiene clase de salida para "Veo dos afirmaciones contradictorias". Cuando el contexto contiene $4,2 millones y $6,8 millones, el modelo calcula puntuaciones a nivel de token en toda la cadena y selecciona el tramo que gane.
Esa selección está impulsada por factores que no tienen nada que ver con la corrección.[8]. Los dos impulsores principales son:
Sesgo de posición. Los intervalos anteriores en el contexto reciben puntuaciones de atención ligeramente más altas debido a la arquitectura del codificador. El documento preliminar obtuvo una clasificación más alta en términos de recuperación y, por lo tanto, apareció en primer lugar.
Fortaleza del lenguaje. Las declaraciones declarativas directas (“ingresos de 4,2 millones de dólares”) superan las frases cubiertas o condicionales (“después de la reformulación… son 6,8 millones de dólares”).
Un tercer factor que contribuye es la alineación léxica: los tramos cuyo vocabulario se superpone más estrechamente con los tokens de preguntas obtienen una puntuación más alta independientemente de si la afirmación subyacente es actual o autorizada.
Fundamentalmente, lo que el modelo no considera en absoluto: fecha de origen, autoridad del documento, estado de la auditoría o si una afirmación reemplaza a otra. Estas señales son simplemente invisibles para el modelo extractivo.
La misma dinámica se desarrolla en los LLM generativos, pero de manera menos visible: el modelo parafrasea en lugar de extraer fragmentos palabra por palabra, por lo que la respuesta incorrecta se viste con una prosa fluida. El mecanismo es el mismo. Joren et al. (2025) demostraron en ICLR 2025 que los modelos de frontera, incluidos Gemini 1.5 Pro, GPT-4o y Claude 3.5, con frecuencia producen respuestas incorrectas en lugar de abstenerse cuando el contexto recuperado es insuficiente para responder la consulta, y que esta falla no se refleja en la confianza expresada por el modelo.
El fracaso no es una deficiencia del modelo. Es una brecha arquitectónica: el oleoducto no tiene una etapa que detecte las contradicciones antes de pasar el contexto a la generación.
Construyendo la capa de detección de conflictos
El detector se sitúa entre la recuperación y la generación. Examina cada par de documentos recuperados y señala las contradicciones antes de que el modelo de control de calidad vea el contexto. Fundamentalmente, las incrustaciones de todos los documentos recuperados se calculan en un único pase por lotes antes de que comience la comparación de pares: cada documento se codifica exactamente una vez, independientemente de en cuántos pares participe.
Dos heurísticas hacen el trabajo.
Heurística 1: Contradicción numérica
Se marcan dos documentos de temas similares que contienen números significativos que no se superponen. La implementación filtra años (1900–2099) y números enteros pequeños (1–9), que aparecen de manera ubicua en el texto empresarial y generarían constantes falsos positivos si se trataran como valores de reclamo.
@classmethod def _extract_meaningful_numbers(cls, text: str) -> set[str]: resultados = set() para m en cls._NUM_RE.finditer(text): raw = m.group().strip() numeric_core = re.sub(r"[$€£MBK%,]", "", raw, flags=re.IGNORECASE).strip() prueba: val = float(numeric_core) excepto ValueError: continúa si 1900 <= val <= 2099 y "." no en numeric_core: continuar # omitir años si val < 10 y re.fullmatch(r"d+", raw): continuar # omitir resultados de números enteros pequeños.add(raw) devuelve resultados
Aplicado al escenario A: fin-001 produce {'$4,2 millones'}, fin-002 produce {'$6,8 millones'}. Intersección vacía: conflicto detectado.
Heurística 2: Asimetría de señales de contradicción
Se marcan dos documentos que tratan el mismo tema, donde uno contiene señales de contradicción y el otro no. El conjunto de tokens se divide en dos grupos que se mantienen como objetos congelados separados:
_NEGATION_TOKENS: “no”, “nunca”, “no”, “no puedo”, “no”, “no es” y formas relacionadas _DIRECTIONAL_TOKENS: “aumentado”, “disminuido”, “reducido”, “eliminado”, “eliminado”, “descontinuado”
Estos se unen en CONTRADICTION_SIGNALS. Mantenerlos separados facilita el ajuste de dominios específicos: un corpus legal podría necesitar un conjunto de negaciones más amplio; un corpus de registro de cambios podría necesitar más tokens direccionales.
Aplicado al Escenario B: hr-002 contiene “no” (de “ya no es necesario”); hr-001 no lo hace. Asimetría detectada. Aplicado al Escenario C: api-002 contiene "aumentado"; api-001 no lo hace. Asimetría detectada.
Ambas heurísticas requieren topic_sim >= 0,68 antes de activarse. Este umbral excluye documentos no relacionados que comparten un número o una palabra de negación. El valor 0,68 se calibró para este conjunto de documentos con All-MiniLM-L6-v2; trátelo como un punto de partida, no como una constante universal. Diferentes modelos de integración y diferentes dominios requerirán recalibración.
La estrategia de resolución: actualidad consciente de los clústeres
Cuando se detectan conflictos, la canalización los resuelve manteniendo el documento con la marca de tiempo más reciente de cada grupo de conflictos. La decisión de diseño clave tiene en cuenta los clústeres.
Un resultado top-k puede contener múltiples grupos de conflictos independientes: dos documentos financieros que no están de acuerdo con los ingresos y dos documentos API que no están de acuerdo con los límites de tasas, todos en el mismo resultado de los 3 primeros. Un enfoque ingenuo (mantener sólo el documento más reciente del conjunto en conflicto combinado) descartaría silenciosamente el documento ganador de cada grupo excepto el publicado más recientemente en general.
En cambio, la implementación crea un gráfico de conflictos, encuentra componentes conectados mediante DFS iterativo y resuelve cada componente de forma independiente:
@staticmethod def _resolve_by_recency( contextos: lista[RetrievedContext], conflicto: ConflictReport, ) -> lista[RetrievedContext]: # Construir lista de adyacencia adj: dict[str, set[str]] = defaultdict(set) para a_id, b_id en conflicto.conflict_pairs: adj[a_id].add(b_id) adj[b_id].add(a_id) # Componentes conectados a través de DFS iterativo visitados: set[str] = set() clusters: list[set[str]] =[]para comenzar en adj: si el inicio no está en visitado: clúster: set[str] = set() pila = [inicio] while pila: nodo = stack.pop() si el nodo no está visitado: visitado.add(nodo) cluster.add(nodo) pila.extend(adj[nodo] – visitado) clusters.append(cluster) all_conflicting_ids = set().union(*clusters) si los clústeres demás set() non_conflicting = [c for c en contextos si c.document.doc_id no está en all_conflicting_ids] resolve_docs =[]para clúster en clústeres: cluster_ctxs = [c para c en contextos si c.document.doc_id en clúster] # Las marcas de tiempo ISO-8601 se ordenan lexicográficamente: max() proporciona lo mejor más reciente = max(cluster_ctxs, key=lambda c: c.document.timestamp) resolve_docs.append(best) return non_conflicting + resolve_docs
Los documentos que no entran en conflicto pasan sin cambios. Cada grupo de conflictos aporta exactamente un ganador.
Fase 2: Qué hace el RAG consciente de los conflictos
────────────────────────────────── ────────────────────────────────── RESUELTO | Escenario A: Conflicto numérico ────────────────────────────────── ────────────────────────────────── Consulta: ¿Cuáles fueron los ingresos anuales de Acme Corp para el año fiscal 2023? Respuesta: 6,8 millones de dólares Confianza: 79,6 % Conflicto: RESUELTO ⚠ Se detectaron fuentes en conflicto: respuesta derivada del documento más reciente por grupo de conflictos. Fuentes recuperadas [0.820] 2023-Annual-Report-Revised (2024-04-03) [0.589] Company-Overview-2024 (2024-01-01) Grupo de conflictos resuelto: se mantuvo el '2023-Annual-Report-Revised' (2024-04-03), se descartaron 1 documento(s) anterior. ────────────────────────────────── ────────────────────────────────── ────────────────────────────────── ────────────────────────────────── RESUELTO | Escenario B: Conflicto de políticas ────────────────────────────────── ────────────────────────────────── Respuesta: los empleados ya no están obligados a mantener un horario fijo en la oficina Confianza: 78,0 % Conflicto: RESUELTO Grupo de conflictos resuelto: se mantuvo la 'Política de recursos humanos-noviembre-2023' (15 de noviembre de 2023), se descartaron 1 documento(s) anterior. ────────────────────────────────── ────────────────────────────────── ────────────────────────────────── ────────────────────────────────── RESUELTO | Escenario C: Conflicto técnico ────────────────────────────────── ────────────────────────────────── Respuesta: 500 solicitudes por minuto Confianza: 80,9% Conflicto: RESUELTO Grupo de conflictos resuelto: se mantuvo 'API-Reference-v2.0' (2023-09-20), se descartaron 1 documento(s) anterior. ────────────────────────────────── ──────────────────────────────────
Tres preguntas. Tres respuestas correctas. Las puntuaciones de confianza son casi idénticas a las de la Fase 1 (78-81%), lo que subraya el punto original: la confianza nunca fue la señal de que algo había salido mal. Todavía no lo es. Lo único que cambió es la arquitectura.
Lo que la heurística no puede captar
Quiero ser preciso acerca de la envolvente del fracaso, porque un método que subestima sus propias limitaciones no es útil.
Conflictos parafraseados. La heurística detecta diferencias numéricas y señales de contradicción explícitas. No captarán "el servicio fue retirado" versus "el servicio está actualmente disponible". Se trata de un conflicto real sin diferencia numérica ni token de negación. Para estos, un modelo de inferencia del lenguaje natural (cross-encoder/nli-deberta-v3-small de ~80 MB) puede calificar la vinculación versus la contradicción entre pares de oraciones. Esta es la ruta más sólida descrita en la literatura académica (Asai et al., 2023), y la clase ConflictDetector está diseñada para extenderse en el método _pair_conflict_reason exactamente para este propósito.
Conflictos atemporales. La resolución basada en lo reciente es apropiada para documentos versionados y actualizaciones de políticas. No es apropiado para desacuerdos de opiniones de expertos (la opinión minoritaria puede ser correcta), conflictos de datos entre metodologías (la actualidad es irrelevante) o consultas de múltiples perspectivas (donde sacar a la luz ambas opiniones es la respuesta correcta). En estos casos, la estructura de datos de ConflictReport proporciona la materia prima para construir una respuesta diferente: sacar a la luz ambas afirmaciones, marcar para revisión humana o pedir una aclaración al usuario.
Escala. La comparación de pares es O(k²) en los documentos recuperados. Para k=3 esto es trivial; para k=20 todavía está bien. Para las canalizaciones que recuperan k=100 o más, es necesaria una indexación previa de pares de conflictos conocidos o una detección basada en clústeres.
Hacia dónde está llevando esto la comunidad investigadora
Lo que hemos visto aquí es una aproximación heurística práctica a un problema que la investigación activa está atacando a un nivel mucho más sofisticado.
Cattan et al. (2025) introdujeron el punto de referencia CONFLICTS, el primero diseñado específicamente para rastrear cómo los modelos manejan los conflictos de conocimiento en entornos RAG realistas. Su taxonomía identifica cuatro categorías de conflicto (frescura, opiniones contradictorias, información complementaria y desinformación), cada una de las cuales requiere un comportamiento modelo distinto. Sus experimentos muestran que los LLM con frecuencia no logran resolver conflictos de manera adecuada en todas las categorías, y que incitar explícitamente a los modelos a razonar sobre conflictos potenciales mejora sustancialmente la calidad de la respuesta, aunque aún queda un margen sustancial de mejora.
Ye et al. (2026) introdujeron TCR (Resolución transparente de conflictos), un marco plug-and-play que separa la relevancia semántica de la coherencia fáctica a través de codificadores contrastivos duales. La estimación de la capacidad de respuesta automática mide la confianza en la memoria paramétrica del modelo y las señales escalares resultantes se inyectan en el generador mediante un ajuste ligero y suave. En siete puntos de referencia, TCR mejora la detección de conflictos entre 5 y 18 puntos F1 y agrega solo un 0,3% de parámetros.
Gao et al. (2025) introdujeron CLEAR (Atención mejorada y localizada en conflictos para RAG), que investiga los estados ocultos de LLM en el nivel de representación de oraciones para detectar dónde se manifiesta internamente el conocimiento conflictivo. Su análisis revela que la integración del conocimiento ocurre jerárquicamente y que el conocimiento en conflicto versus el alineado exhibe patrones de distribución distintos dentro de las representaciones a nivel de oración. CLEAR utiliza estas señales para un ajuste preciso teniendo en cuenta los conflictos que guía el modelo hacia una integración precisa de la evidencia.
El hallazgo consistente en todo este trabajo coincide con lo que este experimento demuestra directamente: la calidad de la recuperación y la calidad de las respuestas son dimensiones distintas, y la brecha entre ellas es mayor de lo que la comunidad ha reconocido históricamente.
La diferencia entre esa investigación y este artículo es 220 MB y sin autenticación.
Lo que realmente deberías hacer con esto
1. Agregue una capa de detección de conflictos antes de la generación. La clase ConflictDetector está diseñada para insertarse en una canalización existente en el punto donde ensambla su cadena de contexto. Incluso las dos heurísticas simples aquí captarán los patrones que aparecen con mayor frecuencia en los corpus empresariales: reformulaciones, actualizaciones de políticas, documentación versionada.
2. Distinguir tipos de conflictos antes de resolverlos. Un conflicto temporal (use el documento más reciente) es un problema diferente de una disputa de hechos (marcar para revisión humana) o un conflicto de opinión (sacar a la superficie ambos puntos de vista). Una estrategia de resolución única aplicada a ciegas crea nuevos modos de falla.
3. Registre cada informe de conflicto. Después de una semana de tráfico de producción, sabrá con qué frecuencia su corpus específico genera conjuntos recuperados conflictivos, qué pares de documentos entran en conflicto con mayor frecuencia y qué patrones de consulta desencadenan conflictos. Esos datos son más procesables que cualquier punto de referencia sintético.
4. Saque a la superficie la incertidumbre cuando no pueda resolverla. La respuesta correcta a un conflicto irresoluble es no elegir uno y ocultar la elección. El campo de advertencia en RAGResponse está ahí precisamente para respaldar respuestas como: "Encontré información contradictoria sobre este tema. La política de junio de 2023 establece X; la actualización de noviembre de 2023 indica Y. El documento de noviembre es más reciente".
Ejecutando la demostración completa
# Salida completa con registros INFO python rag_conflict_demo.py # Salida de demostración solamente (suprime los registros de carga de modelos) python rag_conflict_demo.py –quiet # Ejecuta pruebas unitarias sin descargar modelos python rag_conflict_demo.py –test # Salida de terminal simple para captura de registros/CI python rag_conflict_demo.py –no-color
Todos los resultados que se muestran en este artículo son resultados no modificados de una máquina Windows local que ejecuta Python 3.9+ en un entorno virtual. El código y el resultado son totalmente reproducibles por cualquier lector que tenga instaladas las dependencias enumeradas.
La comida para llevar
El problema de la recuperación está en gran medida resuelto. La búsqueda de vectores es rápida, precisa y bien comprendida. La comunidad ha pasado años optimizándolo.
El problema del ensamblaje del contexto no está resuelto. Nadie lo está midiendo. La brecha entre “documentos correctos recuperados” y “respuesta correcta producida” es real, es común y produce respuestas incorrectas seguras sin ninguna señal de que algo salió mal.
La solución no requiere un modelo más grande, una nueva arquitectura ni capacitación adicional. Requiere una etapa de canalización adicional, que se ejecuta en incorporaciones que ya tiene, con latencia marginal cero.
El experimento anterior se ejecuta en unos treinta segundos en una computadora portátil. La pregunta es si su sistema de producción tiene la capa equivalente y, en caso contrario, qué es lo que silenciosamente está respondiendo mal en este momento.
Referencias
[1]Ye, H., Chen, S., Zhong, Z., Xiao, C., Zhang, H., Wu, Y. y Shen, F. (2026). Ver a través del conflicto: manejo transparente de conflictos de conocimiento en generación de recuperación aumentada. arXiv:2601.06842. https://doi.org/10.48550/arXiv.2601.06842
[2]Asai, A., Wu, Z., Wang, Y., Sil, A. y Hajishirzi, H. (2023). Self-RAG: Aprender a recuperar, generar y criticar a través de la autorreflexión. arXiv:2310.11511. https://doi.org/10.48550/arXiv.2310.11511
[3]Cattan, A., Jacovi, A., Ram, O., Herzig, J., Aharoni, R., Goldshtein, S., Ofek, E., Szpektor, I. y Caciularu, A. (2025). Arrastrado a conflictos: detectar y abordar fuentes conflictivas en LLM con búsqueda aumentada. arXiv:2506.08500. https://doi.org/10.48550/arXiv.2506.08500
[4]Gao, L., Bi, B., Yuan, Z., Wang, L., Chen, Z., Wei, Z., Liu, S., Zhang, Q. y Su, J. (2025). Sondear el conflicto de conocimiento latente para una generación fiel de recuperación aumentada. arXiv:2510.12460. https://doi.org/10.48550/arXiv.2510.12460
[5]Jin, Z., Cao, P., Chen, Y., Liu, K., Jiang, X., Xu, J., Li, Q. y Zhao, J. (2024). Tira y afloja entre conocimientos: exploración y resolución de conflictos de conocimiento en modelos de lenguaje de recuperación aumentada. arXiv:2402.14409. https://doi.org/10.48550/arXiv.2402.14409
[6]Joren, H., Zhang, J., Ferng, C.-S., Juan, D.-C., Taly, A. y Rashtchian, C. (2025). Contexto suficiente: una nueva lente sobre los sistemas de recuperación de generación aumentada. arXiv:2411.06037. https://doi.org/10.48550/arXiv.2411.06037
[7]Lewis, P., Pérez, E., Piktus, A., Petroni, F., Karpukhin, V., Goyal, N.,… y Kiela, D. (2020). Generación aumentada de recuperación para tareas de PNL intensivas en conocimiento. arXiv:2005.11401. https://doi.org/10.48550/arXiv.2005.11401
[8]Mallen, A., Asai, A., Zhong, V., Das, R., Khashabi, D. y Hajishirzi, H. (2023). Cuándo no confiar en los modelos lingüísticos: investigación de la eficacia de las memorias paramétricas y no paramétricas. arXiv:2212.10511. https://doi.org/10.48550/arXiv.2212.10511
[9]Reimers, N. y Gurevych, I. (2019). Sentence-BERT: incrustaciones de oraciones utilizando redes BERT siamesas. arXiv:1908.10084. https://doi.org/10.48550/arXiv.1908.10084
[10]Xu, R., Qi, Z., Guo, Z., Wang, C., Wang, H., Zhang, Y. y Xu, W. (2024). Conflictos de conocimiento para LLM: una encuesta. arXiv:2403.08319. https://doi.org/10.48550/arXiv.2403.08319
[11]Xie, J., Zhang, K., Chen, J., Lou, R. y Su, Y. (2023). Camaleón adaptativo o perezoso testarudo: revelando el comportamiento de grandes modelos lingüísticos en conflictos de conocimiento. arXiv:2305.13300. https://doi.org/10.48550/arXiv.2305.13300
Código fuente completo: https://github.com/Emmimal/rag-conflict-demo
Modelos utilizados
Ambos modelos se descargan automáticamente en la primera ejecución y almacenan en caché localmente. No se requiere clave API ni autenticación HuggingFace.
Divulgación
Todo el código fue escrito, depurado y validado por el autor a través de múltiples iteraciones de ejecución real. Todos los resultados de terminal en este artículo son resultados no modificados de una máquina Windows local que ejecuta Python 3.9+ en un entorno virtual. El código y el resultado son totalmente reproducibles por cualquier lector que tenga instaladas las dependencias enumeradas.
El autor no tiene ninguna relación financiera con Hugging Face, Deepset ni con ninguna organización a la que se hace referencia en este artículo. La elección del modelo y la biblioteca se realizó únicamente en función del tamaño, la licencia y la compatibilidad de la CPU.