> **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.
Este documento describe cómo los datos fluyen a través de la canalización de extracción de TrustGraph, desde la presentación del documento hasta el almacenamiento en almacenes de conocimiento.
Divide el texto en fragmentos de un tamaño configurado.
### Parámetros (configurables)
`chunk_size`: Tamaño de fragmento objetivo en caracteres (predeterminado: 2000)
`chunk_overlap`: Solapamiento entre fragmentos (predeterminado: 100)
### Proceso
1. Obtener el contenido del texto (en línea o a través del bibliotecario)
2. Dividir utilizando un divisor de caracteres recursivo
3. Para cada fragmento:
Guardar como documento hijo en el bibliotecario (`{parent_id}/c{index}`)
Emitir triples de procedencia (fragmento derivado de página/documento)
Enviar a los procesadores de extracción
### Esquema: Fragmento
```
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")
```
### Jerarquía de Identificadores de Documentos
Los documentos secundarios codifican su linaje en el identificador:
Fuente: `doc123`
Página: `doc123/p5`
Fragmento de página: `doc123/p5/c2`
Fragmento de texto: `doc123/c2`
## Etapa 4: Extracción de Conocimiento
Múltiples patrones de extracción disponibles, seleccionados por la configuración del flujo.
### Patrón A: Basic GraphRAG
Dos procesadores paralelos:
**kg-extract-definitions**
Entrada: Fragmento
Salida: Triples (definiciones de entidades), EntityContexts
Extrae: etiquetas de entidades, definiciones
**kg-extract-relationships**
Entrada: Fragmento
Salida: Triples (relaciones), EntityContexts
Extrae: relaciones sujeto-predicado-objeto
### Patrón B: Basado en Ontología (kg-extract-ontology)
Entrada: Fragmento
Salida: Triples, EntityContexts
Utiliza una ontología configurada para guiar la extracción
### Patrón C: Basado en Agente (kg-extract-agent)
Entrada: Fragmento
Salida: Triples, EntityContexts
Utiliza un marco de agente para la extracción
### Patrón D: Extracción de Filas (kg-extract-rows)
Entrada: Fragmento
Salida: Filas (datos estructurados, no triples)
Utiliza una definición de esquema para extraer registros estructurados
### Esquema: Triples
```
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
```
### Esquema: 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)
```
### Esquema: Filas
```
Rows
├── metadata: Metadata
├── row_schema: RowSchema
│ ├── name: str
│ ├── description: str
│ └── fields: list[Field]
└── rows: list[dict[str, str]] # Extracted records
```
## Etapa 5: Generación de Incrustaciones (Embeddings)
### Incrustaciones de Grafos (Graph Embeddings)
Convierte los contextos de las entidades en incrustaciones vectoriales.
**Proceso:**
1. Recibir EntityContexts (Contextos de Entidades)
2. Llamar al servicio de incrustaciones con el texto del contexto
3. Salida: GraphEmbeddings (mapeo de entidad a vector)
**Esquema: GraphEmbeddings**
```
GraphEmbeddings
├── metadata: Metadata
└── entities: list[EntityEmbeddings]
└── EntityEmbeddings
├── entity: Term # Entity identifier
├── vector: list[float] # Embedding vector
└── chunk_id: str # Source chunk (provenance)
```
### Incrustaciones de documentos
Convierte texto de fragmentos directamente en incrustaciones vectoriales.
**Proceso:**
1. Recibir fragmento
2. Llamar al servicio de incrustaciones con el texto del fragmento
3. Salida: Incrustaciones de documentos
**Esquema: Incrustaciones de documentos**
```
DocumentEmbeddings
├── metadata: Metadata
└── chunks: list[ChunkEmbeddings]
└── ChunkEmbeddings
├── chunk_id: str # Chunk identifier
└── vector: list[float] # Embedding vector
```
### Incrustaciones de filas
Convierte los campos de índice de fila en incrustaciones vectoriales.
**Proceso:**
1. Recibir filas
2. Incrustar campos de índice configurados
3. Salida a la tienda de vectores de filas
## Etapa 6: Almacenamiento
### Triple Store
Recibe: Triples
Almacenamiento: Cassandra (tablas centradas en entidades)
Los grafos con nombre separan el conocimiento central de la procedencia:
`""` (predeterminado): Hechos de conocimiento central
`urn:graph:source`: Procedencia de extracción
`urn:graph:retrieval`: Explicabilidad en tiempo de consulta
### Tienda de vectores (Incrustaciones de grafos)
Recibe: GraphEmbeddings
Almacenamiento: Qdrant, Milvus o Pinecone
Indexado por: IRI de entidad
Metadatos: chunk_id para la procedencia
### Tienda de vectores (Incrustaciones de documentos)
Recibe: DocumentEmbeddings
Almacenamiento: Qdrant, Milvus o Pinecone
Indexado por: chunk_id
### Tienda de filas
Recibe: Filas
Almacenamiento: Cassandra
Estructura de tabla basada en esquema
### Tienda de vectores de filas
Recibe: Incrustaciones de filas
Almacenamiento: Base de datos de vectores
Indexado por: Campos de índice de fila
## Análisis de campos de metadatos
### Campos utilizados activamente
| Campo | Uso |
|-------|-------|
| `metadata.id` | Identificador de documento/fragmento, registro, procedencia |
| `metadata.user` | Multitenencia, enrutamiento de almacenamiento |
| `metadata.collection` | Selección de colección de destino |
| `document_id` | Referencia de bibliotecario, enlace de procedencia |
| `chunk_id` | Seguimiento de la procedencia a través de la canalización |
<<<<<<<HEAD
### Campos potencialmente redundantes
| Campo | Estado |
|-------|--------|
| `metadata.metadata` | Establecido en `[]` por todos los extractores; los metadatos a nivel de documento ahora se gestionan por el bibliotecario en el momento de la presentación |
=======
### Campos eliminados
| Campo | Estado |
|-------|--------|
| `metadata.metadata` | Eliminado de la clase `Metadata`. Los triples de metadatos a nivel de documento ahora se emiten directamente por el bibliotecario a la triple store en el momento de la presentación, y no se transmiten a través de la canalización de extracción. |
>>>>>>> e3bcbf73 (The metadata field (list of triples) in the pipeline Metadata class)
### Patrón de campos de bytes
Todos los campos de contenido (`data`, `text`, `chunk`) son `bytes`, pero se decodifican inmediatamente a cadenas UTF-8 por todos los procesadores. Ningún procesador utiliza bytes sin procesar.
## Configuración del flujo
Los flujos se definen externamente y se proporcionan al bibliotecario a través del servicio de configuración. Cada flujo especifica:
Colas de entrada (`text-load`, `document-load`)
Cadena de procesadores
Parámetros (tamaño del fragmento, método de extracción, etc.)