mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 08:26:21 +02:00
305 lines
11 KiB
Markdown
305 lines
11 KiB
Markdown
|
|
---
|
||
|
|
layout: default
|
||
|
|
title: "Especificación de la Definición del Esquema de Flujo"
|
||
|
|
parent: "Spanish (Beta)"
|
||
|
|
---
|
||
|
|
|
||
|
|
<<<<<<< HEAD
|
||
|
|
# Especificación de la Definición del Esquema de Flujo
|
||
|
|
|
||
|
|
> **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.
|
||
|
|
|
||
|
|
## Resumen
|
||
|
|
|
||
|
|
Un esquema de flujo define una plantilla de patrón de flujo de datos completo en el sistema TrustGraph. Cuando se instancia, crea una red interconectada de procesadores que manejan la ingesta de datos, el procesamiento, el almacenamiento y la consulta como un sistema unificado.
|
||
|
|
|
||
|
|
## Estructura
|
||
|
|
|
||
|
|
Una definición de esquema de flujo consta de cinco secciones principales:
|
||
|
|
|
||
|
|
### 1. Sección de Clase
|
||
|
|
Define procesadores de servicios compartidos que se instancian una vez por esquema de flujo. Estos procesadores manejan las solicitudes de todas las instancias de flujo de esta clase.
|
||
|
|
=======
|
||
|
|
# Especificación de la Definición de la Hoja de Flujo
|
||
|
|
|
||
|
|
## Resumen
|
||
|
|
|
||
|
|
Una hoja de flujo define una plantilla de patrón de flujo de datos completo en el sistema TrustGraph. Cuando se instancia, crea una red interconectada de procesadores que manejan la ingesta de datos, el procesamiento, el almacenamiento y la consulta como un sistema unificado.
|
||
|
|
|
||
|
|
## Estructura
|
||
|
|
|
||
|
|
Una definición de hoja de flujo consta de cinco secciones principales:
|
||
|
|
|
||
|
|
### 1. Sección de Clase
|
||
|
|
Define procesadores de servicios compartidos que se instancian una vez por hoja de flujo. Estos procesadores manejan las solicitudes de todas las instancias de flujo de esta clase.
|
||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
||
|
|
|
||
|
|
```json
|
||
|
|
"class": {
|
||
|
|
"service-name:{class}": {
|
||
|
|
"request": "queue-pattern:{class}",
|
||
|
|
"response": "queue-pattern:{class}",
|
||
|
|
"settings": {
|
||
|
|
"setting-name": "fixed-value",
|
||
|
|
"parameterized-setting": "{parameter-name}"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Características:**
|
||
|
|
Compartidas entre todas las instancias de flujo de la misma clase.
|
||
|
|
Típicamente servicios costosos o sin estado (modelos de lenguaje grandes, modelos de embedding).
|
||
|
|
Utilice la variable de plantilla `{class}` para el nombre de la cola.
|
||
|
|
Los ajustes pueden ser valores fijos o parametrizados con la sintaxis `{parameter-name}`.
|
||
|
|
Ejemplos: `embeddings:{class}`, `text-completion:{class}`, `graph-rag:{class}`.
|
||
|
|
|
||
|
|
### 2. Sección de Flujo
|
||
|
|
Define los procesadores específicos del flujo que se instancian para cada instancia de flujo individual. Cada flujo obtiene su propio conjunto aislado de estos procesadores.
|
||
|
|
|
||
|
|
```json
|
||
|
|
"flow": {
|
||
|
|
"processor-name:{id}": {
|
||
|
|
"input": "queue-pattern:{id}",
|
||
|
|
"output": "queue-pattern:{id}",
|
||
|
|
"settings": {
|
||
|
|
"setting-name": "fixed-value",
|
||
|
|
"parameterized-setting": "{parameter-name}"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Características:**
|
||
|
|
Instancia única por flujo
|
||
|
|
Maneja datos y estado específicos del flujo
|
||
|
|
Utilice la variable de plantilla `{id}` para el nombre de la cola
|
||
|
|
Los ajustes pueden ser valores fijos o parametrizados con la sintaxis `{parameter-name}`
|
||
|
|
Ejemplos: `chunker:{id}`, `pdf-decoder:{id}`, `kg-extract-relationships:{id}`
|
||
|
|
|
||
|
|
### 3. Sección de Interfaces
|
||
|
|
Define los puntos de entrada y los contratos de interacción para el flujo. Estos forman la superficie de la API para sistemas externos y comunicación entre componentes internos.
|
||
|
|
|
||
|
|
Las interfaces pueden adoptar dos formas:
|
||
|
|
|
||
|
|
**Patrón de "Enviar y Olvidar"** (cola única):
|
||
|
|
```json
|
||
|
|
"interfaces": {
|
||
|
|
"document-load": "persistent://tg/flow/document-load:{id}",
|
||
|
|
"triples-store": "persistent://tg/flow/triples-store:{id}"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Patrón de solicitud/respuesta** (objeto con campos de solicitud/respuesta):
|
||
|
|
```json
|
||
|
|
"interfaces": {
|
||
|
|
"embeddings": {
|
||
|
|
"request": "non-persistent://tg/request/embeddings:{class}",
|
||
|
|
"response": "non-persistent://tg/response/embeddings:{class}"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Tipos de Interfaces:**
|
||
|
|
**Puntos de Entrada**: Lugares donde los sistemas externos inyectan datos (`document-load`, `agent`)
|
||
|
|
**Interfaces de Servicio**: Patrones de solicitud/respuesta para servicios (`embeddings`, `text-completion`)
|
||
|
|
**Interfaces de Datos**: Puntos de conexión de flujo de datos "dispara y olvida" (`triples-store`, `entity-contexts-load`)
|
||
|
|
|
||
|
|
### 4. Sección de Parámetros
|
||
|
|
Mapea los nombres de parámetros específicos del flujo a definiciones de parámetros almacenadas centralmente:
|
||
|
|
|
||
|
|
```json
|
||
|
|
"parameters": {
|
||
|
|
"model": "llm-model",
|
||
|
|
"temp": "temperature",
|
||
|
|
"chunk": "chunk-size"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Características:**
|
||
|
|
Las claves son nombres de parámetros utilizados en la configuración del procesador (por ejemplo, `{model}`)
|
||
|
|
Los valores hacen referencia a definiciones de parámetros almacenadas en schema/config
|
||
|
|
Permite la reutilización de definiciones de parámetros comunes en diferentes flujos
|
||
|
|
Reduce la duplicación de esquemas de parámetros
|
||
|
|
|
||
|
|
### 5. Metadatos
|
||
|
|
Información adicional sobre el plano del flujo:
|
||
|
|
|
||
|
|
```json
|
||
|
|
"description": "Human-readable description",
|
||
|
|
"tags": ["capability-1", "capability-2"]
|
||
|
|
```
|
||
|
|
|
||
|
|
## Variables de Plantilla
|
||
|
|
|
||
|
|
### Variables del Sistema
|
||
|
|
|
||
|
|
#### {id}
|
||
|
|
Reemplazado con el identificador único de la instancia del flujo.
|
||
|
|
Crea recursos aislados para cada flujo.
|
||
|
|
Ejemplo: `flow-123`, `customer-A-flow`
|
||
|
|
|
||
|
|
#### {class}
|
||
|
|
Reemplazado con el nombre de la plantilla del flujo.
|
||
|
|
Crea recursos compartidos entre flujos de la misma clase.
|
||
|
|
Ejemplo: `standard-rag`, `enterprise-rag`
|
||
|
|
|
||
|
|
### Variables de Parámetro
|
||
|
|
|
||
|
|
#### {parameter-name}
|
||
|
|
Parámetros personalizados definidos en el momento de la ejecución del flujo.
|
||
|
|
Los nombres de los parámetros coinciden con las claves en la sección `parameters` del flujo.
|
||
|
|
Se utilizan en la configuración de los procesadores para personalizar el comportamiento.
|
||
|
|
Ejemplos: `{model}`, `{temp}`, `{chunk}`
|
||
|
|
Reemplazado con los valores proporcionados al iniciar el flujo.
|
||
|
|
Validados contra definiciones de parámetros almacenadas centralmente.
|
||
|
|
|
||
|
|
## Configuración de Procesadores
|
||
|
|
|
||
|
|
La configuración proporciona valores de configuración a los procesadores en el momento de la creación. Pueden ser:
|
||
|
|
|
||
|
|
### Configuración Fija
|
||
|
|
Valores directos que no cambian:
|
||
|
|
```json
|
||
|
|
"settings": {
|
||
|
|
"model": "gemma3:12b",
|
||
|
|
"temperature": 0.7,
|
||
|
|
"max_retries": 3
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Configuración parametrizada
|
||
|
|
Valores que utilizan parámetros proporcionados al iniciar el flujo:
|
||
|
|
```json
|
||
|
|
"settings": {
|
||
|
|
"model": "{model}",
|
||
|
|
"temperature": "{temp}",
|
||
|
|
"endpoint": "https://{region}.api.example.com"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Los nombres de los parámetros en la configuración corresponden a las claves en la sección `parameters` del flujo.
|
||
|
|
|
||
|
|
### Ejemplos de configuración
|
||
|
|
|
||
|
|
**Procesador LLM con parámetros:**
|
||
|
|
```json
|
||
|
|
// In parameters section:
|
||
|
|
"parameters": {
|
||
|
|
"model": "llm-model",
|
||
|
|
"temp": "temperature",
|
||
|
|
"tokens": "max-tokens",
|
||
|
|
"key": "openai-api-key"
|
||
|
|
}
|
||
|
|
|
||
|
|
// In processor definition:
|
||
|
|
"text-completion:{class}": {
|
||
|
|
"request": "non-persistent://tg/request/text-completion:{class}",
|
||
|
|
"response": "non-persistent://tg/response/text-completion:{class}",
|
||
|
|
"settings": {
|
||
|
|
"model": "{model}",
|
||
|
|
"temperature": "{temp}",
|
||
|
|
"max_tokens": "{tokens}",
|
||
|
|
"api_key": "{key}"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Chunker con Configuraciones Fijas y Parametrizadas:**
|
||
|
|
```json
|
||
|
|
// In parameters section:
|
||
|
|
"parameters": {
|
||
|
|
"chunk": "chunk-size"
|
||
|
|
}
|
||
|
|
|
||
|
|
// In processor definition:
|
||
|
|
"chunker:{id}": {
|
||
|
|
"input": "persistent://tg/flow/chunk:{id}",
|
||
|
|
"output": "persistent://tg/flow/chunk-load:{id}",
|
||
|
|
"settings": {
|
||
|
|
"chunk_size": "{chunk}",
|
||
|
|
"chunk_overlap": 100,
|
||
|
|
"encoding": "utf-8"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Patrones de Colas (Pulsar)
|
||
|
|
|
||
|
|
Los planos de flujo utilizan Apache Pulsar para el envío de mensajes. Los nombres de las colas siguen el formato de Pulsar:
|
||
|
|
```
|
||
|
|
<persistence>://<tenant>/<namespace>/<topic>
|
||
|
|
```
|
||
|
|
|
||
|
|
### Componentes:
|
||
|
|
**persistencia**: `persistent` or `non-persistent` (Modo de persistencia de Pulsar)
|
||
|
|
**inquilino**: `tg` para definiciones de planos de flujo proporcionados por TrustGraph
|
||
|
|
**espacio de nombres**: Indica el patrón de mensajería
|
||
|
|
`flow`: Servicios de envío y olvido
|
||
|
|
`request`: Parte de solicitud de servicios de solicitud/respuesta
|
||
|
|
`response`: Parte de respuesta de servicios de solicitud/respuesta
|
||
|
|
**tema**: El nombre específico de la cola/tema con variables de plantilla
|
||
|
|
|
||
|
|
### Colas Persistentes
|
||
|
|
Patrón: `persistent://tg/flow/<topic>:{id}`
|
||
|
|
Utilizado para servicios de envío y olvido y flujo de datos duradero
|
||
|
|
Los datos persisten en el almacenamiento de Pulsar a través de reinicios
|
||
|
|
Ejemplo: `persistent://tg/flow/chunk-load:{id}`
|
||
|
|
|
||
|
|
### Colas No Persistentes
|
||
|
|
Patrón: `non-persistent://tg/request/<topic>:{class}` or `non-persistent://tg/response/<topic>:{class}`
|
||
|
|
Utilizado para patrones de mensajería de solicitud/respuesta
|
||
|
|
Efímero, no se persiste en disco por Pulsar
|
||
|
|
Menor latencia, adecuado para comunicación estilo RPC
|
||
|
|
Ejemplo: `non-persistent://tg/request/embeddings:{class}`
|
||
|
|
|
||
|
|
## Arquitectura del Flujo de Datos
|
||
|
|
|
||
|
|
El plano de flujo crea un flujo de datos unificado donde:
|
||
|
|
|
||
|
|
1. **Pipeline de Procesamiento de Documentos**: Fluye desde la ingesta hasta la transformación y el almacenamiento
|
||
|
|
<<<<<<< HEAD
|
||
|
|
2. **Servicios de Consulta**: Procesadores integrados que consultan las mismas bases de datos y servicios
|
||
|
|
=======
|
||
|
|
2. **Servicios de Consulta**: Procesadores integrados que consultan las mismas fuentes de datos y servicios
|
||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
||
|
|
3. **Servicios Compartidos**: Procesadores centralizados que todos los flujos pueden utilizar
|
||
|
|
4. **Escritores de Almacenamiento**: Persisten los datos procesados en los almacenes apropiados
|
||
|
|
|
||
|
|
Todos los procesadores (tanto `{id}` como `{class}`) trabajan juntos como un gráfico de flujo de datos cohesivo, no como sistemas separados.
|
||
|
|
|
||
|
|
## Ejemplo de Instanciación de Flujo
|
||
|
|
|
||
|
|
Dado:
|
||
|
|
ID de instancia de flujo: `customer-A-flow`
|
||
|
|
Plano de flujo: `standard-rag`
|
||
|
|
Mapeos de parámetros de flujo:
|
||
|
|
`"model": "llm-model"`
|
||
|
|
`"temp": "temperature"`
|
||
|
|
`"chunk": "chunk-size"`
|
||
|
|
Parámetros proporcionados por el usuario:
|
||
|
|
`model`: `gpt-4`
|
||
|
|
`temp`: `0.5`
|
||
|
|
`chunk`: `512`
|
||
|
|
|
||
|
|
Expansiones de plantilla:
|
||
|
|
`persistent://tg/flow/chunk-load:{id}` → `persistent://tg/flow/chunk-load:customer-A-flow`
|
||
|
|
`non-persistent://tg/request/embeddings:{class}` → `non-persistent://tg/request/embeddings:standard-rag`
|
||
|
|
`"model": "{model}"` → `"model": "gpt-4"`
|
||
|
|
`"temperature": "{temp}"` → `"temperature": "0.5"`
|
||
|
|
`"chunk_size": "{chunk}"` → `"chunk_size": "512"`
|
||
|
|
|
||
|
|
Esto crea:
|
||
|
|
Pipeline de procesamiento de documentos aislado para `customer-A-flow`
|
||
|
|
Servicio de incrustación compartido para todos los flujos `standard-rag`
|
||
|
|
Flujo de datos completo desde la ingesta de documentos hasta la consulta
|
||
|
|
Procesadores configurados con los valores de parámetro proporcionados
|
||
|
|
|
||
|
|
## Beneficios
|
||
|
|
|
||
|
|
1. **Eficiencia de Recursos**: Los servicios costosos se comparten entre los flujos
|
||
|
|
2. **Aislamiento de Flujos**: Cada flujo tiene su propio pipeline de procesamiento de datos
|
||
|
|
3. **Escalabilidad**: Se pueden instanciar múltiples flujos desde la misma plantilla
|
||
|
|
4. **Modularidad**: Clara separación entre componentes compartidos y específicos del flujo
|
||
|
|
5. **Arquitectura Unificada**: La consulta y el procesamiento son parte del mismo flujo de datos
|