mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 08:26:21 +02:00
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.
7.2 KiB
7.2 KiB
| 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- Использует StructuredDataSubmissiontrustgraph-flow/trustgraph/query/nlp_query/cassandra- Использует схемы запросов NLPtrustgraph-flow/trustgraph/query/objects/cassandra- Использует схемы структурированных запросовtrustgraph-flow/trustgraph/extract/object/row/- Потребляет Chunk, производит ExtractedObjecttrustgraph-flow/trustgraph/storage/objects/cassandra- Использует схему Rowstrustgraph-flow/trustgraph/embeddings/object_embeddings/qdrant- Использует схемы встраивания объектов
Примечания по реализации
- Версионирование схемы: Рассмотрите возможность добавления поля
versionк схеме RowSchema для поддержки будущих миграций. - Система типов:
Field.typeдолжна поддерживать все родные типы Cassandra. - Операции пакета: Большинство сервисов должны поддерживать как одиночные, так и пакетные операции.
- Обработка ошибок: Необходимо обеспечить единообразное сообщение об ошибках во всех новых сервисах.
- Совместимость с существующими схемами: Существующие схемы остаются неизменными, за исключением незначительных улучшений поля.
Следующие шаги
- Реализуйте файлы схем в новой структуре.
- Обновите существующие сервисы для распознавания новых типов схем.
- Реализуйте модули потоков, использующие эти схемы.
- Добавьте конечные точки gateway/rev-gateway для новых сервисов.
- Создайте модульные тесты для проверки схемы.