{"record":{"id":"52ee009ab63c6a7f","repo":"run-llama/llama_index","slug":"unknown-extractor-name-extractor-name","errorCode":null,"errorMessage":"Unknown extractor name: {extractor_name}","messagePattern":"Unknown extractor name: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"llama-index-core/llama_index/core/extractors/loading.py","lineNumber":29,"sourceCode":"    data: dict,\n) -> BaseExtractor:\n    if isinstance(data, BaseExtractor):\n        return data\n\n    extractor_name = data.get(\"class_name\")\n    if extractor_name is None:\n        raise ValueError(\"Extractor loading requires a class_name\")\n\n    if extractor_name == SummaryExtractor.class_name():\n        return SummaryExtractor.from_dict(data)\n    elif extractor_name == QuestionsAnsweredExtractor.class_name():\n        return QuestionsAnsweredExtractor.from_dict(data)\n    elif extractor_name == TitleExtractor.class_name():\n        return TitleExtractor.from_dict(data)\n    elif extractor_name == KeywordExtractor.class_name():\n        return KeywordExtractor.from_dict(data)\n    else:\n        raise ValueError(f\"Unknown extractor name: {extractor_name}\")\n","sourceCodeStart":11,"sourceCodeEnd":30,"githubUrl":"https://github.com/run-llama/llama_index/blob/afd0fef371831f9bda13e5af7167cf4e981278ab/llama-index-core/llama_index/core/extractors/loading.py#L11-L30","documentation":"Raised by load_extractor() when the dict's class_name does not match any of the four supported extractors: SummaryExtractor, QuestionsAnsweredExtractor, TitleExtractor, KeywordExtractor. The loader is a hardcoded if/elif chain over those class_name() strings, so any other extractor (built-in or custom) cannot be deserialized through it.","triggerScenarios":"Calling load_extractor({'class_name': 'DocumentContextExtractor', ...}) or with a custom extractor's name; also triggered by exact-string mismatches such as 'TitleExtractor ' (trailing space) or wrong casing.","commonSituations":"Serializing newer extractors (DocumentContextExtractor lives in the same package but is not in the chain) and assuming the loader handles everything; custom BaseExtractor subclasses that need round-tripping; version drift where class_name strings changed.","solutions":["For the four supported extractors, ensure class_name matches exactly: 'SummaryExtractor', 'QuestionsAnsweredExtractor', 'TitleExtractor', 'KeywordExtractor'.","For unsupported/custom extractors, deserialize directly with YourExtractor.from_dict(data) instead of load_extractor.","Extend your own loader (mapping name -> class) rather than relying on the hardcoded chain."],"exampleFix":"# before\nextractor = load_extractor({\"class_name\": \"DocumentContextExtractor\", ...})\n\n# after\nfrom llama_index.core.extractors import DocumentContextExtractor\nextractor = DocumentContextExtractor.from_dict(data)","handlingStrategy":"type-guard","validationCode":"SUPPORTED = {\"SummaryExtractor\", \"QuestionsAnsweredExtractor\", \"TitleExtractor\", \"KeywordExtractor\"}\nname = data.get(\"class_name\")\nif name not in SUPPORTED:\n    extractor = EXTRACTOR_CLASSES[name].from_dict(data)  # your own registry\nelse:\n    extractor = load_extractor(data)","typeGuard":"def is_loadable_extractor_name(name: str) -> bool:\n    return name in {\"SummaryExtractor\", \"QuestionsAnsweredExtractor\", \"TitleExtractor\", \"KeywordExtractor\"}","tryCatchPattern":"try:\n    extractor = load_extractor(data)\nexcept ValueError as e:\n    if \"Unknown extractor name\" in str(e):\n        extractor = CUSTOM_EXTRACTORS[data[\"class_name\"]].from_dict(data)\n    else:\n        raise","preventionTips":["Maintain your own name->class registry for extractors beyond the four built-ins.","Deserialize unsupported extractors with TheirClass.from_dict directly.","Pin the llama-index version so the supported set does not shift silently."],"tags":["serialization","unsupported-type","configuration","registry"],"backgroundTag":null,"analyzedSha":"afd0fef371831f9bda13e5af7167cf4e981278ab","analyzedAt":"2026-08-15T05:42:58.429Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}