trustgraph/docs/tech-specs/extraction-flows.ru.md
Alex Jenkins 8954fa3ad7 Feat: TrustGraph i18n & Documentation Translation Updates (#781)
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.
2026-04-14 12:08:32 +01:00

17 KiB
Raw Blame History

layout title parent
default Потоки извлечения данных Russian (Beta)

Потоки извлечения данных

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.

Этот документ описывает, как данные передаются через конвейер извлечения данных TrustGraph, начиная с отправки документов и заканчивая хранением в хранилищах знаний.

Обзор

┌──────────┐     ┌─────────────┐     ┌─────────┐     ┌────────────────────┐
│ Librarian│────▶│ PDF Decoder │────▶│ Chunker │────▶│ Knowledge          │
│          │     │ (PDF only)  │     │         │     │ Extraction         │
│          │────────────────────────▶│         │     │                    │
└──────────┘     └─────────────┘     └─────────┘     └────────────────────┘
                                          │                    │
                                          │                    ├──▶ Triples
                                          │                    ├──▶ Entity Contexts
                                          │                    └──▶ Rows
                                          │
                                          └──▶ Document Embeddings

Хранение контента

Blob-хранилище (S3/Minio)

Содержимое документов хранится в блочном хранилище, совместимом с S3: Формат пути: doc/{object_id}, где object_id - это UUID Все типы документов хранятся здесь: исходные документы, страницы, фрагменты

Хранилище метаданных (Cassandra)

Метаданные документов, хранящиеся в Cassandra, включают: Идентификатор документа, заголовок, тип (MIME-тип) Ссылку object_id на блочное хранилище Ссылку parent_id для дочерних документов (страниц, фрагментов) Тип document_type: "source", "page", "chunk", "answer"

Порог для встроенных данных и потоковой передачи

Передача контента использует стратегию, основанную на размере: < 2 МБ: Контент включается непосредственно в сообщение (в кодировке base64) ≥ 2 МБ: Отправляется только document_id; процессор извлекает данные через API librarian

Этап 1: Отправка документа (Librarian)

Точка входа

Документы поступают в систему через операцию add-document librarian:

  1. Контент загружается в блочное хранилище
  2. Создается запись метаданных в Cassandra
  3. Возвращается идентификатор документа

Запуск извлечения

Операция add-processing запускает извлечение: Указывает document_id, flow (идентификатор конвейера), collection (целевое хранилище) Операция load_document() librarian извлекает контент и публикует его в очередь ввода конвейера

Схема: Document

Document
├── metadata: Metadata
│   ├── id: str              # Document identifier
│   ├── user: str            # Tenant/user ID
│   ├── collection: str      # Target collection
│   └── metadata: list[Triple]  # (largely unused, historical)
├── data: bytes              # PDF content (base64, if inline)
└── document_id: str         # Librarian reference (if streaming)

Маршрутизация: Основана на поле kind: application/pdf → очередь document-load → Декодер PDF text/plain → очередь text-load → Разделитель (Chunker)

Этап 2: Декодер PDF

Преобразует документы PDF в текстовые страницы.

Процесс

  1. Получение содержимого (встроенное data или через document_id от библиотекаря)
  2. Извлечение страниц с использованием PyPDF
  3. Для каждой страницы: Сохранение как дочерний документ в библиотеке ({doc_id}/p{page_num}) Отправка информации о происхождении (страница получена из документа) Передача разделителю (chunker)

Схема: TextDocument

TextDocument
├── metadata: Metadata
│   ├── id: str              # Page URI (e.g., https://trustgraph.ai/doc/xxx/p1)
│   ├── user: str
│   ├── collection: str
│   └── metadata: list[Triple]
├── text: bytes              # Page text content (if inline)
└── document_id: str         # Librarian reference (e.g., "doc123/p1")

Этап 3: Разделение на фрагменты

Разделяет текст на фрагменты заданного размера.

Параметры (настраиваются в процессе выполнения)

chunk_size: Целевой размер фрагмента в символах (по умолчанию: 2000) chunk_overlap: Перекрытие между фрагментами (по умолчанию: 100)

Процесс

  1. Получение содержимого текста (встроенного или через библиотеку)
  2. Разделение с использованием рекурсивного разделителя символов
  3. Для каждого фрагмента: Сохранение как дочерний документ в библиотеке ({parent_id}/c{index}) Вывод информации о происхождении (фрагмент получен из страницы/документа) Передача на этапы обработки извлечения

Схема: Фрагмент

Chunk
├── metadata: Metadata
│   ├── id: str              # Chunk URI
│   ├── user: str
│   ├── collection: str
│   └── metadata: list[Triple]
├── chunk: bytes             # Chunk text content
└── document_id: str         # Librarian chunk ID (e.g., "doc123/p1/c3")

Иерархия идентификаторов документов

Дочерние документы кодируют свою родословную в идентификаторе: Источник: doc123 Страница: doc123/p5 Часть страницы: doc123/p5/c2 Часть текста: doc123/c2

Этап 4: Извлечение знаний

Доступно несколько шаблонов извлечения, выбираемых конфигурацией потока.

Шаблон A: Базовый GraphRAG

Два параллельных процессора:

kg-extract-definitions Вход: Часть текста Выход: Тройки (определения сущностей), Контексты сущностей Извлекает: метки сущностей, определения

kg-extract-relationships Вход: Часть текста Выход: Тройки (отношения), Контексты сущностей Извлекает: отношения субъект-предикат-объект

Шаблон B: Основанный на онтологии (kg-extract-ontology)

Вход: Часть текста Выход: Тройки, Контексты сущностей Использует настроенную онтологию для управления извлечением

Шаблон C: Основанный на агентах (kg-extract-agent)

Вход: Часть текста Выход: Тройки, Контексты сущностей Использует агентную платформу для извлечения

Шаблон D: Извлечение строк (kg-extract-rows)

Вход: Часть текста Выход: Строки (структурированные данные, а не тройки) Использует определение схемы для извлечения структурированных записей

Схема: Тройки

Triples
├── metadata: Metadata
│   ├── id: str
│   ├── user: str
│   ├── collection: str
│   └── metadata: list[Triple]  # (set to [] by extractors)
└── triples: list[Triple]
    └── Triple
        ├── s: Term              # Subject
        ├── p: Term              # Predicate
        ├── o: Term              # Object
        └── g: str | None        # Named graph

Схема: EntityContexts

EntityContexts
├── metadata: Metadata
└── entities: list[EntityContext]
    └── EntityContext
        ├── entity: Term         # Entity identifier (IRI)
        ├── context: str         # Textual description for embedding
        └── chunk_id: str        # Source chunk ID (provenance)

Схема: Строки

Rows
├── metadata: Metadata
├── row_schema: RowSchema
│   ├── name: str
│   ├── description: str
│   └── fields: list[Field]
└── rows: list[dict[str, str]]   # Extracted records

Этап 5: Генерация векторных представлений (эмбеддингов)

Векторные представления графа

Преобразует контексты сущностей в векторные представления.

Процесс:

  1. Получение контекстов сущностей (EntityContexts)
  2. Вызов сервиса генерации векторных представлений с текстом контекста
  3. Вывод векторных представлений графа (отображение сущности во вектор)

Схема: Векторные представления графа (GraphEmbeddings)

GraphEmbeddings
├── metadata: Metadata
└── entities: list[EntityEmbeddings]
    └── EntityEmbeddings
        ├── entity: Term         # Entity identifier
        ├── vector: list[float]  # Embedding vector
        └── chunk_id: str        # Source chunk (provenance)

Векторные представления документов

Преобразует текстовые фрагменты непосредственно в векторные представления.

Процесс:

  1. Получение фрагмента текста
  2. Вызов сервиса векторизации с текстом фрагмента
  3. Вывод векторного представления документа

Схема: Векторное представление документа

DocumentEmbeddings
├── metadata: Metadata
└── chunks: list[ChunkEmbeddings]
    └── ChunkEmbeddings
        ├── chunk_id: str        # Chunk identifier
        └── vector: list[float]  # Embedding vector

Встраивания строк

Преобразует поля индекса строк в векторные представления.

Процесс:

  1. Получение строк
  2. Встраивание настроенных полей индекса
  3. Вывод в хранилище векторов строк

Этап 6: Хранение

Тройной магазин

Получает: Тройки Хранение: Cassandra (таблицы, ориентированные на сущности) Именованные графы разделяют основные знания от информации об источнике: "" (по умолчанию): Факты основных знаний urn:graph:source: Информация об источнике извлечения urn:graph:retrieval: Объяснимость во время запроса

Хранилище векторов (Встраивания графов)

Получает: Встраивания графов Хранение: Qdrant, Milvus или Pinecone Индексируется по: IRI сущности Метаданные: chunk_id для информации об источнике

Хранилище векторов (Встраивания документов)

Получает: Встраивания документов Хранение: Qdrant, Milvus или Pinecone Индексируется по: chunk_id

Хранилище строк

Получает: Строки Хранение: Cassandra Структура таблицы, определяемая схемой

Хранилище векторов строк

Получает: Встраивания строк Хранение: Векторная база данных Индексируется по: полям индекса строк

Анализ полей метаданных

Активно используемые поля

Поле Использование
metadata.id Идентификатор документа/фрагмента, ведение журнала, информация об источнике
metadata.user Многопользовательский режим, маршрутизация хранения
metadata.collection Выбор целевой коллекции
document_id Ссылка на библиотекаря, связывание с информацией об источнике
chunk_id Отслеживание информации об источнике через конвейер

<<<<<<< HEAD

Потенциально избыточные поля

Поле Статус
metadata.metadata Устанавливается в [] всеми извлекателями; метаданные на уровне документа теперь обрабатываются библиотекарем при отправке

=======

Удаленные поля

Поле Статус
metadata.metadata Удалено из класса Metadata. Тройки метаданных на уровне документа теперь напрямую выдаются библиотекарем в тройной магазин при отправке, а не передаются через конвейер извлечения.

e3bcbf73 (The metadata field (list of triples) in the pipeline Metadata class)

Шаблон полей байтов

Все поля содержимого (data, text, chunk) являются bytes, но немедленно декодируются в строки UTF-8 всеми процессорами. Ни один процессор не использует необработанные байты.

Конфигурация потока

Потоки определяются внешне и предоставляются библиотекарию через сервис конфигурации. Каждый поток определяет:

Входные очереди (text-load, document-load) Цепочка процессоров Параметры (размер фрагмента, метод извлечения и т. д.)

Пример шаблонов потоков: pdf-graphrag: PDF → Decoder → Chunker → Definitions + Relationships → Embeddings text-graphrag: Text → Chunker → Definitions + Relationships → Embeddings pdf-ontology: PDF → Decoder → Chunker → Ontology Extraction → Embeddings text-rows: Text → Chunker → Row Extraction → Row Store