trustgraph/docs/tech-specs/ru/structured-data-schemas.ru.md
cybermaggedon e7efb673ef
Structure the tech specs directory (#836)
Tech spec some subdirectories for different languages
2026-04-21 16:06:41 +01:00

7.2 KiB
Raw Blame History

layout title parent
default Структурированные данные Pulsar: Изменения схемы Russian (Beta)

Структурированные данные 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.

Обзор

На основе спецификации STRUCTURED_DATA.md, этот документ предлагает необходимые дополнения и изменения схемы Pulsar для поддержки возможностей работы со структурированными данными в TrustGraph.

Необходимые изменения схемы

1. Улучшения основной схемы

Улучшенное определение поля

Сущность Field в файле core/primitives.py требует дополнительных свойств:

class Field(Record):
    name = String()
    type = String()  # int, string, long, bool, float, double, timestamp
    size = Integer()
    primary = Boolean()
    description = String()
    # НОВЫЕ ПОЛЯ:
    required = Boolean()  # Требуется ли поле
    enum_values = Array(String())  # Для полей типа enum
    indexed = Boolean()  # Нужно ли индексировать поле

2. Новые схемы знаний

2.1 Отправка структурированных данных

Новый файл: 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()  # Ссылка на схему в конфигурации
    data = Bytes()  # Сырые данные для обработки
    options = Map(String())  # Опции, специфичные для формата

2.2 Структурированный запрос

3.1 Преобразование NLP в структурированный запрос

Новый файл: 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())  # Дополнительный контекст для генерации запроса

class NLPToStructuredQueryResponse(Record):
    error = Error()
    graphql_query = String()  # Сгенерированный GraphQL запрос
    variables = Map(String())  # Переменные GraphQL, если есть
    detected_schemas = Array(String())  # Какие схемы затрагивает запрос
    confidence = Double()

3.2 Структурированный запрос

Новый файл: services/structured_query.py

from pulsar.schema import Record, String, Map, Array
from ..core.primitives import Error

class StructuredQueryRequest(Record):
    query = String()  # GraphQL запрос
    variables = Map(String())  # Переменные GraphQL
    operation_name = String()  # Дополнительное имя операции для документов с несколькими операциями

class StructuredQueryResponse(Record):
    error = Error()
    data = String()  # JSON-кодированный формат данных GraphQL
    errors = Array(String())  # Ошибки GraphQL, если есть

2.2 Вывод извлечения объектов

Новый файл: knowledge/object.py

from pulsar.schema import Record, String, Map, Double
from ..core.metadata import Metadata

class ExtractedObject(Record):
    metadata = Metadata()
    schema_name = String()  # Какая схема принадлежит этому объекту
    values = Map(String())  # Имя поля -> значение
    confidence = Double()
    source_span = String()  # Текстовый фрагмент, где был найден объект

4. Улучшенные схемы знаний

4.1 Улучшение встраивания объектов

Обновите knowledge/embeddings.py для лучшей поддержки встраивания структурированных объектов:

class StructuredObjectEmbedding(Record):
    metadata = Metadata()
    vectors = Array(Array(Double()))
    schema_name = String()
    object_id = String()  # Основной ключ
    field_embeddings = Map(Array(Double()))  # Встраивание для каждого поля

Точки интеграции

Интеграция потоков

Схемы будут использоваться в новых модулях потоков:

  • trustgraph-flow/trustgraph/decoding/structured - Использует StructuredDataSubmission
  • trustgraph-flow/trustgraph/query/nlp_query/cassandra - Использует схемы запросов NLP
  • trustgraph-flow/trustgraph/query/objects/cassandra - Использует схемы структурированных запросов
  • trustgraph-flow/trustgraph/extract/object/row/ - Потребляет Chunk, производит ExtractedObject
  • trustgraph-flow/trustgraph/storage/objects/cassandra - Использует схему Rows
  • trustgraph-flow/trustgraph/embeddings/object_embeddings/qdrant - Использует схемы встраивания объектов

Примечания по реализации

  1. Версионирование схемы: Рассмотрите возможность добавления поля version к схеме RowSchema для поддержки будущих миграций.
  2. Система типов: Field.type должна поддерживать все родные типы Cassandra.
  3. Операции пакета: Большинство сервисов должны поддерживать как одиночные, так и пакетные операции.
  4. Обработка ошибок: Необходимо обеспечить единообразное сообщение об ошибках во всех новых сервисах.
  5. Совместимость с существующими схемами: Существующие схемы остаются неизменными, за исключением незначительных улучшений поля.

Следующие шаги

  1. Реализуйте файлы схем в новой структуре.
  2. Обновите существующие сервисы для распознавания новых типов схем.
  3. Реализуйте модули потоков, использующие эти схемы.
  4. Добавьте конечные точки gateway/rev-gateway для новых сервисов.
  5. Создайте модульные тесты для проверки схемы.