Native CLI i18n: The TrustGraph CLI has built-in translation support that dynamically loads language strings. You can test and use different languages by simply passing the --lang flag (e.g., --lang es for Spanish, --lang ru for Russian) or by configuring your environment's LANG variable. Automated Docs Translations: This PR introduces autonomously translated Markdown documentation into several target languages, including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew, Arabic, Simplified Chinese, and Russian.
5.5 KiB
| layout | title | parent |
|---|---|---|
| default | Cambios en el Esquema de Datos Estructurados en Pulsar | Spanish (Beta) |
Cambios en el Esquema de Datos Estructurados en Pulsar
Beta Translation: This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
Visión general
Basado en la especificación STRUCTURED_DATA.md, este documento propone las adiciones y modificaciones necesarias en el esquema de Pulsar para soportar las capacidades de datos estructurados en TrustGraph.
Cambios de Esquema Requeridos
1. Mejoras en el Esquema Central
Definición de Campo Mejorada
La clase Field existente en core/primitives.py necesita propiedades adicionales:
class Field(Record):
name = String()
type = String() # int, string, long, bool, float, double, timestamp
size = Integer()
primary = Boolean()
description = String()
# CAMPOS NUEVOS:
required = Boolean() # Indica si el campo es obligatorio
enum_values = Array(String()) # Para campos de tipo enum
indexed = Boolean() # Indica si el campo debe ser indexado
2. Nuevos Esquemas de Conocimiento
2.1 Envío de Datos Estructurados
Nuevo archivo: knowledge/structured.py
from pulsar.schema import Record, String, Bytes, Map
from ..core.metadata import Metadata
class StructuredDataSubmission(Record):
metadata = Metadata()
format = String() # "json", "csv", "xml"
schema_name = String() # Referencia al esquema en la configuración
data = Bytes() # Datos brutos para ingerir
options = Map(String()) # Opciones específicas del formato
2.2 Nuevo Servicio de Consulta Estructurada
Nuevo archivo: services/nlp_query.py
from pulsar.schema import Record, String, Array, Map, Integer, Double
from ..core.primitives import Error
class NLPToStructuredQueryRequest(Record):
natural_language_query = String()
max_results = Integer()
context_hints = Map(String()) # Contexto opcional para la generación de consulta
class NLPToStructuredQueryResponse(Record):
error = Error()
graphql_query = String() # Consulta GraphQL generada
variables = Map(String()) # Variables de GraphQL si existen
detected_schemas = Array(String()) # Esquemas a los que apunta la consulta
confidence = Double()
2.2 Servicio de Consulta Estructurada
Nuevo archivo: services/structured_query.py
from pulsar.schema import Record, String, Map, Array
from ..core.primitives import Error
class StructuredQueryRequest(Record):
query = String() # Consulta GraphQL
variables = Map(String()) # Variables de GraphQL
operation_name = String() # Nombre opcional de operación para documentos con múltiples operaciones
class StructuredQueryResponse(Record):
error = Error()
data = String() # Datos de respuesta GraphQL codificados en JSON
errors = Array(String()) # Errores GraphQL si existen
2.2 Salida de Extracción de Objetos
Nuevo archivo: knowledge/object.py
from pulsar.schema import Record, String, Map, Double
from ..core.metadata import Metadata
class ExtractedObject(Record):
metadata = Metadata()
schema_name = String() # Esquema al que pertenece este objeto
values = Map(String()) # Nombre del campo -> valor
confidence = Double()
source_span = String() # Rango de texto donde se encontró el objeto
4. Esquemas de Conocimiento Mejorados
4.1 Mejora en la Incorporación de Objetos
Actualiza knowledge/embeddings.py para soportar una mejor incorporación de objetos estructurados:
class StructuredObjectEmbedding(Record):
metadata = Metadata()
vectors = Array(Array(Double()))
schema_name = String()
object_id = String() # Valor clave primaria
field_embeddings = Map(Array(Double())) # Incorporaciones por campo
Puntos de Integración
Integración de Flujo
Los esquemas se utilizarán en nuevos módulos de flujo:
trustgraph-flow/trustgraph/decoding/structured- Utiliza StructuredDataSubmissiontrustgraph-flow/trustgraph/query/nlp_query/cassandra- Utiliza esquemas de consulta NLPtrustgraph-flow/trustgraph/query/objects/cassandra- Utiliza esquemas de consulta estructuradatrustgraph-flow/trustgraph/extract/object/row/- Consumo de Chunk, produce ExtractedObjecttrustgraph-flow/trustgraph/storage/objects/cassandra- Utiliza Esquema de Filastrustgraph-flow/trustgraph/embeddings/object_embeddings/qdrant- Utiliza esquemas de incorporación de objetos
Notas de Implementación
- Versionado del Esquema: Considerar añadir un campo
versional Esquema de Fila para soporte de migración futuro. - Sistema de Tipos: El
Field.typedebería soportar todos los tipos nativos de Cassandra. - Operaciones en Lotes: La mayoría de los servicios deben soportar tanto operaciones individuales como en lote.
- Manejo de Errores: Reporte de errores consistente en todos los nuevos servicios.
- Compatibilidad hacia atrás: Los esquemas existentes permanecen sin cambios, excepto por las pequeñas mejoras en los Campos.
Próximos Pasos
- Implementar los archivos de esquema en la nueva estructura.
- Actualizar los servicios existentes para reconocer los nuevos tipos de esquema.
- Implementar los módulos de flujo que utilicen estos esquemas.
- Añadir puntos finales gateway/rev-gateway para los nuevos servicios.
- Crear pruebas unitarias para la validación del esquema.