Skip to content

PointSav Documentation

The engineering library for the PointSav platform — operating systems and services for regulated businesses that own their data, their AI, and their record-keeping outright. Where the monorepo holds the code, this wiki holds the reasoning: architecture, services, security, and the governance commitments that bind future development.

Arquitectura de Extracción de Entidades por Niveles

La plataforma PointSav ejecuta tres niveles de extracción en secuencia sobre cada documento. El Nivel 0 proporciona detección extractiva rápida en CPU. El Nivel A ofrece una alternativa generativa cuando el Nivel 0 no está disponible. El Nivel B aplica un pase de enriquecimiento de mayor capacidad en GPU y registra las mejoras como señal de entrenamiento.

Nivel 0 — Detección Extractiva (GLiNER)

El Nivel 0 envía los documentos a service-gliner, un microservicio de reconocimiento de entidades nombradas GLiNER que se ejecuta localmente en la VM (urchade/gliner_medium-v2.1). GLiNER es un modelo basado en el codificador DeBERTa, no BERT — el propio comentario del código real señala DeBERTa específicamente porque libera el GIL de Python, una propiedad real de rendimiento que BERT no comparte. Lee un tramo de texto y devuelve los tramos de entidades con sus clasificaciones, y es puramente extractivo: sólo puede devolver tramos que aparecen literalmente en el texto de entrada y no puede generar ni inferir nombres que no estén presentes.

La latencia típica en CPU solo se describe de forma cualitativa — aproximadamente "150 veces más rápido que OLMo" — sin ninguna cifra específica en milisegundos publicada.

Los documentos se dividen en fragmentos con límite de oración de hasta 2.000 caracteres cada uno antes del envío, con un solapamiento de 150 caracteres entre fragmentos consecutivos. El codificador DeBERTa opera con un contexto fijo de 512 tokens; el texto en el límite de 2.000 caracteres ocupa aproximadamente 480 tokens, dejando margen para las cadenas de descripción de etiquetas sin truncación. Todos los fragmentos se envían en secuencia; los tramos de entidades de todos los fragmentos se fusionan y deduplican por clave (lower(entity_name), classification) antes de escribirlos en el almacén de grafo. Los artículos largos y los documentos de varias páginas quedan, por tanto, completamente cubiertos.

Las etiquetas se expresan como descripciones en lenguaje natural. El identificador de dominio del documento selecciona el conjunto de etiquetas:

  • projects — contenido de inversión inmobiliaria y propiedades comerciales. Reconoce Persona, Empresa, Proyecto (desarrollos, edificios, fondos), Ubicación y Cuenta.
  • corporate — contenido organizacional general. Reconoce Persona, Empresa, Proyecto, Ubicación y Cuenta.
  • documentation — contenido técnico y de ingeniería. Reconoce Persona, Empresa, Proyecto (proyectos de software), Ubicación y Cuenta.

El Nivel 0 produce uno de tres resultados. Cuando se encuentran entidades, el resultado se acepta y se reenvía al Nivel B para el enriquecimiento. Cuando el servicio es alcanzable pero no devuelve tramos de entidades — el resultado esperado para archivos de datos estructurados, código fuente y otras entradas que no son prosa — el documento se marca como procesado con éxito con cero entidades y no se llama a ningún nivel adicional. Cuando el servicio es inalcanzable o devuelve una respuesta inesperada, el flujo pasa al Nivel A con control de contrapresión.

Nivel A — Alternativa Generativa y Cola de Entrenamiento (OLMo)

El Nivel A envía los documentos a OLMo 7B ejecutándose en CPU a través del endpoint /v1/chat/completions del Doorman. El Nivel A desempeña dos funciones distintas.

Alternativa de extracción: El Nivel A se activa como ruta de extracción únicamente cuando el Nivel 0 es inalcanzable — un error de conexión, servicio inactivo o respuesta no 2xx. Una lista de entidades vacía de un servicio Nivel 0 operativo no activa la extracción del Nivel A; esos documentos se marcan como finalizados de inmediato.

Cola de entrenamiento asíncrona: Cada documento procesado por el Nivel 0 — independientemente del resultado de la extracción — se añade también a una cola de comparación OLMo asíncrona. La comparación genera un par de entrenamiento DPO (Optimización por Preferencia Directa): el resultado de GLiNER es la señal maestra elegida y el resultado de OLMo es la señal de estudiante rechazado. Esta cola opera de forma independiente a la ruta de extracción y acumula pares de preferencias para el ajuste fino futuro del modelo bajo el ciclo de entrenamiento Yo-Yo.

La extracción utiliza un prompt estructurado que restringe el modelo a las mismas cinco clasificaciones de entidades que usa el Nivel 0. Cuando las restricciones gramaticales están habilitadas, el modelo se ve obligado a emitir JSON válido conforme al esquema de extracción, eliminando los rechazos por violación de esquema. La llamada de inferencia utiliza temperature: 0.0 para producir resultados deterministas y cache_prompt: true para permitir la reutilización del caché KV entre llamadas consecutivas de extracción con el mismo prompt de sistema.

La latencia del Nivel A en CPU varía según la longitud del documento y la carga concurrente y no se publica como un rango específico. Cuando la cola de aprendiz del Doorman está activa, los slots del Nivel A pueden estar ocupados y las llamadas de extracción interactivas se pondrán en cola.

Nivel B — Enriquecimiento en GPU

El Nivel B enruta a través del endpoint /v1/extract del Doorman hacia un nodo de inferencia en GPU. Cuando el circuito del Nivel B está cerrado y el nodo reporta estado saludable, el Doorman reenvía el documento para un segundo pase de enriquecimiento de mayor capacidad.

Los resultados del Nivel B pasan por el mismo filtro de clasificación de entidades que los del Nivel 0 y Nivel A. Cuando el Nivel B tiene éxito estructuralmente pero todas las entidades devueltas fallan el filtro — una condición que surge cuando las restricciones gramaticales no están aplicadas en la ruta del Nivel B — el flujo aplica un comportamiento de rescate: utiliza el conjunto de entidades del Nivel 0 con una confianza reducida en lugar de escribir cero entidades en el grafo. El documento se marca para reintento de Nivel B para que una ejecución posterior pueda producir resultados enriquecidos cuando la aplicación de gramática esté disponible.

Los resultados del Nivel B y su referencia del Nivel A se registran como un par de retroalimentación DPO (Optimización por Preferencia Directa) para el ajuste fino futuro del modelo bajo el ciclo de entrenamiento Yo-Yo.

Ruta de Escritura al Grafo

Las entidades producidas por el nivel que genera el resultado aceptado se escriben en LadybugDB. Las entidades se identifican por módulo y nombre; los duplicados dentro de un módulo se actualizan mediante upsert. Se emite un punto de control después de cada lote de escritura para garantizar que las entidades escritas por el hilo de drenaje sean inmediatamente visibles para las consultas HTTP de lectura, que se ejecutan en un contexto de tiempo de ejecución separado.

El servicio de contenido registra los documentos procesados en un libro de contabilidad JSONL para evitar la re-extracción al reiniciar el servicio.

Contrapresión

Cuando el Doorman reporta una profundidad de cola que supera el umbral configurado y el Nivel 0 no está disponible, los documentos que caerían únicamente al Nivel A se difieren en lugar de procesarse. Esto evita que el retraso de documentos se marque permanentemente como procesado con baja calidad durante una interrupción del Nivel 0.

Los documentos para los que el Nivel 0 devuelve una lista de entidades no vacía siempre proceden al enriquecimiento del Nivel B independientemente de la profundidad de la cola.

Resumen por Niveles

Nivel Servicio Método Latencia típica Se activa cuando
0 service-gliner (GLiNER, DeBERTa) Detección extractiva No publicada — cualitativamente "~150x más rápido que OLMo" Por defecto — primera vía
A Servicio de inferencia de IA (OLMo 7B CPU) Completado generativo No publicada Extracción: Nivel 0 inalcanzable; Entrenamiento: cada documento (asíncrono)
B service-slm (nodo GPU) Enriquecimiento generativo No publicada Circuito cerrado + nodo saludable

Cite this record: /wiki/tiered-entity-extraction-architecture — revision 12ae2623, last updated 17 August 2026.

Important Information

Estructura corporativa. PointSav Digital Systems ("PointSav") es actualmente un nombre comercial de Woodfine Capital Projects Inc. ("Woodfine"), con previsión de convertirse en una subsidiaria de propiedad absoluta de Woodfine tras su incorporación. PointSav no ofrece, vende ni solicita por sí mismo valor alguno. Toda oferta de valores asociada a las soluciones inmobiliarias de tenencia directa de Woodfine se realiza exclusivamente por parte de Woodfine, y únicamente por medio del Memorando de Colocación Privada aplicable.

Sin asesoramiento de inversión. El contenido de este wiki se ofrece con fines de ingeniería, operativos, de investigación y de desarrollo. Nada de lo que figura en este wiki constituye asesoramiento de inversión ni una solicitud para invertir en ninguna sociedad o solución de tenencia directa de Woodfine.

Propiedad intelectual. El nombre, el nombre comercial, el logotipo y las marcas de PointSav, junto con todos los productos, servicios y ofertas actuales y futuros de las marcas PointSav y Totebox — así como el software, el código fuente, la documentación, el sistema de diseño y todos los materiales relacionados — son propiedad de Woodfine y sus filiales, salvo los componentes identificados como de código abierto. No se otorga ningún derecho salvo el expresamente establecido en una licencia o acuerdo por escrito. El aviso de marcas completo aparece en el pie de página de cada página de este sitio.

Componentes de código abierto. Algunas partes de la plataforma se ofrecen bajo licencias de código abierto permisivas identificadas en el repositorio correspondiente. El uso de esos componentes se rige por los términos de sus respectivas licencias.

Sin garantía; uso informativo. El contenido de este wiki se ofrece únicamente con fines informativos generales y no constituye una declaración, garantía ni compromiso respecto de la funcionalidad, disponibilidad, precio o hoja de ruta de ningún producto. Algunos artículos describen características, capacidades e hitos planificados o previstos — el lenguaje como "planificado", "previsto", "objetivo", "puede" y "esperado" marca este contenido prospectivo, que está sujeto a cambios y no constituye un compromiso respecto del rendimiento futuro.

Confidencialidad. Cuando un artículo describiría un detalle operativo o de implementación no destinado a divulgación pública, ese artículo no se publica en este wiki. El contenido aquí es documentación de ingeniería de uso general, no configuración específica de clientes.

Jurisdicción. Woodfine Capital Projects Inc. está constituida en Columbia Británica, Canadá. Las referencias a la Sovereign Data Foundation en este wiki describen una iniciativa planificada o prevista únicamente, no una titular de capital actual ni un órgano de gobierno activo.

Cambios a este aviso. PointSav podrá actualizar este aviso periódicamente; rige la versión publicada en esta página.

No es un sistema de presentación de documentos. Este wiki no es un sistema de presentación de valores, un repositorio de divulgación electrónica ni un sustituto de SEDAR+ ni de ningún otro sistema de presentación regulatorio. Las presentaciones formales de valores se realizan a través del sistema de presentación regulatorio correspondiente, no a través de este wiki.

Descargo completo. Este aviso complementa, y no sustituye, el artículo completo de Avisos Legales. En caso de cualquier conflicto, prevalece el artículo de Avisos Legales.

Read the full disclaimer →