Volver al blog

Embeddings para codificación clínica: ¿generales o específicos?

Un médico veterano

Un estudio de Tietai que muestra que un bi-encoder biomédico en español con reranking por cross-encoder supera a los embeddings públicos y a BM25 en la búsqueda de códigos CIE-10 / CIE-10-ES.

Nota de investigación. Este estudio evalúa modelos de recuperación en benchmarks públicos. No describe un producto disponible ni su rendimiento clínico.

Mención clínica

Una consulta breve en EN, ES, CA, IT, PT o FR

Fase 1 · Bi-encoder (multilingüe)

Codifica la consulta y cada descripción CIE-10 por separado y las ordena por similitud del coseno. Entrenado con 19.502 ejemplos sintéticos depurados de 17 capítulos de la CIE-10.

Los k mejores candidatos

Fase 2 · Reranker cross-encoder (español)

Lee cada par consulta–código conjuntamente y reordena la lista corta. Entrenado con 10.628 grupos listwise con negativos difíciles clínicamente plausibles.

Códigos CIE-10-ES ordenados

Lateralidad, gravedad, etiología y tipo de episodio resueltos en el orden final

Recuperación CIE en dos fases. Un bi-encoder multilingüe recupera códigos CIE-10 candidatos y, después, un cross-encoder ajustado al español reordena la lista corta para recuperar distinciones clínicamente relevantes como la lateralidad, la gravedad, la etiología y el tipo de episodio.

01 - La pregunta

¿Pueden los recuperadores compactos y específicos de la tarea superar a los embeddings públicos generalistas?

Los embeddings de frases funcionan bien para la búsqueda semántica amplia, pero la codificación CIE no es búsqueda semántica amplia. El modelo debe asignar menciones clínicas breves a un vocabulario controlado donde los códigos vecinos suelen diferir por un calificador: localización anatómica, lateralidad, gravedad, tipo de encuentro o etiología.

El artículo se pregunta si una supervisión sintética de alta calidad puede cerrar esa brecha en la codificación clínica en español. Usamos un LLM de frontera para generar ejemplos multilingües basados en la jerarquía de la CIE-10, ajustamos un bi-encoder biomédico en español y, después, entrenamos un reranker cross-encoder sobre grupos listwise con negativos difíciles clínicamente plausibles.

El hallazgo principal: para la recuperación CIE-10/CIE-10-ES en español, una supervisión alineada con la tarea y unos negativos clínicamente significativos importan más que el tamaño del embedding o el preentrenamiento biomédico genérico en inglés.

02 - Método

Un bi-encoder para la exhaustividad, un cross-encoder para la precisión del código exacto.

El recuperador usa una arquitectura estándar en dos fases, pero cuidadosamente alineada. La fase 1 codifica cada consulta y cada descripción CIE-10 por separado y ordena por similitud del coseno. La fase 2 lee conjuntamente cada par consulta-código y reordena los mejores candidatos con un objetivo listwise.

Los datos de entrenamiento no se trataron como salida sintética en bruto. Depuramos los ejemplos generados con validación basada en reglas, deduplicación semántica, comprobaciones de coherencia lingüística e inspección manual por muestreo antes de usarlos para construir el bi-encoder y los clasificadores de reordenación. Esa depuración es central en el artículo: el objetivo no es simplemente generar más datos, sino crear ejemplos y negativos difíciles que reflejen las distinciones clínicas codificadas en la CIE-10.

Ejemplos sintéticos para el bi-encoder en 17 capítulos de la CIE-10.
19.502
Idiomas usados para la supervisión sintética: EN, ES, CA, IT, PT y FR.
6
Grupos listwise del cross-encoder en español, con un positivo y negativos difíciles.
10.628
Resoluciones de evaluación: código completo, categoría de 3 caracteres y capítulo.
3

Estrategias de recuperación comparadas

EstrategiaPapel en el estudio
Tietai Cross-EncoderReordena la lista corta del bi-encoder y optimiza el orden del código exacto.
Tietai Bi-EncoderBase de recuperación densa biomédica en español ajustada con supervisión sintética.
BM25 (Postgres FTS)Referencia léxica de texto completo sobre las descripciones de la CIE-10-ES.
ST MiniLM-L6-v2Referencia pública de sentence-transformer de propósito general.
ST BioBERTReferencia de sentence-transformer biomédico en inglés.
ST MPNet-v2Referencia de sentence-transformer general más grande, de 768 dimensiones.

03 - Resultados

F1 y MAP@10 ponen el foco en la calidad del ranking.

En CodiESP v4, el cross-encoder de Tietai alcanza F1 = 0,709 y MAP@10 = 0,747 con resolución de código exacto. En DISTEMIST, alcanza F1 = 0,776 y MAP@10 = 0,812. La versión actualizada del artículo trata MAP@10 como métrica de ranking y F1 como métrica de decisión top-1.

F1 de código exacto en CodiESP del Tietai Cross-Encoder.
0,709
MAP@10 de código exacto en CodiESP del Tietai Cross-Encoder.
0,747
F1 de código exacto en DISTEMIST del Tietai Cross-Encoder.
0,776
MAP@10 de código exacto en DISTEMIST del Tietai Cross-Encoder.
0,812

F1 y MAP@10 en CodiESP v4

ModeloF1 exactoF1 categoríaMAP@10 exactoMAP@10 categoría
Tietai Cross-Encoder0,7090,8230,7470,851
Tietai Bi-Encoder0,3590,6170,4610,694
BM25 (Postgres FTS)0,2390,3760,3220,471
ST MiniLM-L6-v20,2250,3710,2870,426
ST BioBERT0,1930,3140,2520,373
ST MPNet-v20,1610,3170,2260,376
F1 y MAP@10 en CodiESP a nivel de código exacto y de categoría.Tietai Cross-EncoderTietai Bi-EncoderBM25 (Postgres FTS)ST MiniLM-L6-v2ST BioBERTST MPNet-v20%20%40%60%80%100%F1 exactoF1 categoríaMAP@10 exactoMAP@10 categoría
F1 y MAP@10 en CodiESP. El cross-encoder de Tietai lidera todas las métricas. MAP@10 es mayor que F1, lo que muestra que muchos fallos en top-1 siguen teniendo el código correcto en la lista corta de los 10 primeros.

Precisión, recall y F1 top-1 de código exacto en CodiESP

ModeloPrecisiónRecallF1
Tietai Cross-Encoder0,7090,7090,709
Tietai Bi-Encoder0,3590,3590,359
BM25 (Postgres FTS)0,2540,2270,239
ST MiniLM-L6-v20,2250,2250,225
ST BioBERT0,1930,1930,193
ST MPNet-v20,1610,1610,161
Precisión, recall y F1 top-1 en CodiESP con resolución de código exacto.Tietai Cross-EncoderTietai Bi-EncoderBM25 (Postgres FTS)ST MiniLM-L6-v2ST BioBERTST MPNet-v20%20%40%60%80%100%PrecisiónRecallF1
Precisión, recall y F1 top-1 de código exacto en CodiESP. Los recuperadores densos emiten una predicción por consulta, así que las tres métricas coinciden. BM25 se desvía porque no devuelve ningún candidato para alrededor del 11 % de las consultas de CodiESP.
Precisión en k por modelo de recuperación en CodiESP, para coincidencias de código exacto y de categoría.Tietai Cross-EncoderTietai Bi-EncoderBM25 (Postgres FTS)ST MiniLM-L6-v2ST BioBERTST MPNet-v2Código exacto0%20%40%60%80%100%13510kCategoría (3 caracteres)13510k
Precision@k en CodiESP. La precisión disminuye con k porque cada consulta suele tener un único código correcto, pero el orden de los modelos es estable tanto en código exacto como en categoría.
Recall en k por modelo de recuperación en CodiESP, para coincidencias de código exacto y de categoría.Tietai Cross-EncoderTietai Bi-EncoderBM25 (Postgres FTS)ST MiniLM-L6-v2ST BioBERTST MPNet-v2Código exacto0%20%40%60%80%100%13510kCategoría (3 caracteres)13510k
Recall@k en CodiESP. El cross-encoder alcanza R@10 = 0,813 en código exacto y 0,903 en categoría, mientras que el bi-encoder recorta buena parte de la diferencia en posiciones más profundas.

Exactitud top-1 por jerarquía en CodiESP

Exactitud top-1 en CodiESP a nivel de código exacto, categoría y capítulo.Tietai Cross-EncoderTietai Bi-EncoderBM25 (Postgres FTS)ST MiniLM-L6-v2ST BioBERTST MPNet-v20%20%40%60%80%100%Código exactoCategoría (3 caracteres)Capítulo
Exactitud jerárquica en CodiESP. La misma decisión top-1 mejora del código exacto a la categoría y al capítulo, lo que refleja con qué frecuencia los modelos encuentran la familia de enfermedad correcta aunque el código completo sea erróneo.

F1 y MAP@10 en DISTEMIST

ModeloF1 exactoF1 categoríaMAP@10 exactoMAP@10 categoría
Tietai Cross-Encoder0,7760,8180,8120,846
Tietai Bi-Encoder0,6030,6900,6820,747
BM25 (Postgres FTS)0,4310,4700,5040,537
F1 y MAP@10 en DISTEMIST a nivel de código exacto y de categoría.Tietai Cross-EncoderTietai Bi-EncoderBM25 (Postgres FTS)0%20%40%60%80%100%F1 exactoF1 categoríaMAP@10 exactoMAP@10 categoría
F1 y MAP@10 en DISTEMIST. El orden relativo entre cross-encoder, bi-encoder y BM25 no cambia en un corpus clínico español independiente.
Precisión en k por modelo de recuperación en DISTEMIST, para coincidencias de código exacto y de categoría.Tietai Cross-EncoderTietai Bi-EncoderBM25 (Postgres FTS)Código exacto0%20%40%60%80%100%13510kCategoría (3 caracteres)13510k
Precision@k en DISTEMIST. La precisión cae a medida que crece k, pero los modelos densos específicos de la tarea siguen por delante de la referencia léxica BM25 tanto en código exacto como en categoría.
Exactitud top-1 en DISTEMIST a nivel de código exacto, categoría y capítulo.Tietai Cross-EncoderTietai Bi-EncoderBM25 (Postgres FTS)0%20%40%60%80%100%Código exactoCategoría (3 caracteres)Capítulo
Exactitud jerárquica en DISTEMIST. La exactitud sube del código exacto a la categoría y al capítulo, mientras el orden de los modelos se mantiene: cross-encoder, bi-encoder y después BM25.

04 - Interpretación

El cuello de botella es la alineación con la tarea, no la escala del embedding.

El orden de las referencias públicas es el resultado negativo importante. BioBERT-ST tiene preentrenamiento biomédico, pero está centrado en el inglés. MPNet-v2 tiene embeddings más grandes, pero sigue por detrás de MiniLM-L6-v2. Ni la escala ni el preentrenamiento genérico de dominio resuelven por sí solos la recuperación de códigos clínicos en español.

La recuperación CIE exige que los modelos separen conceptos hermanos semánticamente cercanos pero operativamente distintos. El bi-encoder capta bien la información temática a nivel de capítulo, pero el ranking de código exacto necesita un reranker entrenado con negativos difíciles extraídos de códigos CIE-10 vecinos.

  • La alineación con la tarea importa. Los ejemplos sintéticos deben reflejar la jerarquía de la CIE, no solo una relación biomédica amplia.
  • Los negativos difíciles importan. Los códigos vecinos enseñan al modelo a distinguir etiología, anatomía, gravedad y tipo de episodio.
  • La reordenación importa. El cross-encoder añade la discriminación a nivel de calificador que exigen las normas de la CIE-10-ES.
  • Pocos datos pueden bastar. Un corpus sintético compacto puede entrenar un recuperador competitivo cuando los ejemplos están alineados con la estructura del vocabulario objetivo.
  • El preentrenamiento biomédico no se transfiere automáticamente. Los codificadores biomédicos en inglés siguen teniendo dificultades cuando tanto la consulta como el vocabulario objetivo están en español.

Para la búsqueda de codificación clínica en producción, la lección práctica es entrenar para el vocabulario objetivo, el idioma objetivo y el problema de ranking objetivo. La unidad útil no es un modelo de embeddings más grande; es un recuperador entrenado en las distinciones que los codificadores realmente necesitan hacer.

Leer el artículo completo

Despeja el camino para la salud.