Extract Entities
ExtractEntities uses a language model to extract entity facts from chunks.
It only extracts entities. Relation extraction, deduplication, and graph persistence are separate steps.
Contract
ExtractEntities uses:
Default input artifact:
In graph procedures, it commonly consumes:
Execution flow:
read chunk keys
-> load ParsedChunk JSON
-> ask LLM for strict JSON entities
-> validate and normalize fields
-> write entities/{chunk_id}/{entity_id}.json
-> expose entity_keys
Output
Each record is an ExtractedEntity:
ExtractedEntity(
entity_id="entity_...",
chunk_id="chunk_...",
document_id="doc_...",
name="Shanghai",
type="objective_entity",
subtype="administrative_division",
description="Shanghai is a municipality in China.",
attributes={"country": "China"},
source_chunk_ids=("chunk_...",),
)
The LLM produces semantic fields such as name, type, subtype, description, and attributes. The framework adds IDs, source chunk links, and validation.
Artifacts
entity_keys is consumed by ExtractRelations, DeduplicateEntities, or BuildGraph.
Failure Handling
LLM output is validated. Recoverable invalid output is recorded as StepIssue and the step continues when possible. A chunk with no valid entities can still be a valid result.
This behavior keeps long RAG builds from failing because a single chunk produces weak extraction output.