Skip to content

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. GLiNER es un modelo basado en el codificador BERT que lee un tramo de texto y devuelve los tramos de entidades con sus clasificaciones. 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 es de 130 a 208 milisegundos por documento, dos o tres órdenes de magnitud más rápido que la inferencia generativa.

Los documentos se dividen en fragmentos con límite de oración de hasta 2.000 caracteres cada uno antes del envío. El codificador BERT 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 oscila entre 30 y 137 segundos por documento según la longitud del documento y la carga concurrente. 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 extracción 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) Detección extractiva 130–208 ms Por defecto — primera vía
A service-slm (OLMo 7B CPU) Completado generativo 30–137 s Extracción: Nivel 0 inalcanzable; Entrenamiento: cada documento (asíncrono)
B service-slm (nodo GPU) Enriquecimiento generativo 10–30 s Circuito cerrado + nodo saludable
Important Information

Important Information

Corporate structure. PointSav Digital Systems ("PointSav") is a trade name of Woodfine Capital Projects Inc. ("Woodfine"). PointSav does not itself offer, sell, or solicit any security. Any securities offering associated with Woodfine's real-property direct-hold solutions is made exclusively by Woodfine, and only by means of the applicable Private Placement Memorandum.

No investment advice. This wiki's content is provided for engineering, operational, research, and development purposes. Nothing on this wiki constitutes investment advice or a solicitation to invest in any Woodfine partnership or direct-hold solution.

Intellectual property. The PointSav name, trade name, wordmark, and marks, together with all current and future PointSav- and Totebox-branded products, services, and offerings — and the software, source code, documentation, design system, and all related materials — are proprietary to Woodfine and its affiliates, except for components identified as open source. No rights are granted except as expressly set out in a written license or agreement. See TRADEMARK.md in this repository for the full trademark notice.

Open source components. Portions of the platform are made available under permissive open-source licenses identified in the accompanying repository. Use of those components is governed by their respective license terms.

No warranty; informational use. Content on this wiki is provided for general informational purposes only and does not constitute a representation, warranty, or commitment with respect to product functionality, availability, pricing, or roadmap. Some articles describe planned or intended features, capabilities, and milestones — language such as "planned," "intended," "targeted," "may," and "expected" marks this forward-looking content, which is subject to change and does not constitute a commitment regarding future performance.

Confidentiality. Where an article describes an operational or deployment detail that is not intended for public disclosure, that article is not published on this wiki. Content here is general-purpose engineering documentation, not customer-specific configuration.

Jurisdiction. Woodfine Capital Projects Inc. is organized in British Columbia, Canada. References to the Sovereign Data Foundation on this wiki describe a planned or intended initiative only, not a current equity holder or active governance body.

Changes to this notice. PointSav may update this notice from time to time; the version posted on this page governs.

Not a filing system. This wiki is not a securities filing system, an electronic disclosure repository, or a substitute for SEDAR+ or any other regulatory filing system. Formal securities filings are made through the applicable regulatory filing system, not through this wiki.

Full disclaimer. This notice supplements, and does not replace, the full Disclaimers article. In the event of any conflict, the full Disclaimers article governs.

Read the full disclaimer →