{"record":{"id":"da42cf797d8bb347","repo":"run-llama/llama_index","slug":"unknown-retriever-mode-retriever-mode-da42cf","errorCode":null,"errorMessage":"Unknown retriever mode: {retriever_mode}","messagePattern":"Unknown retriever mode: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"llama-index-core/llama_index/core/indices/keyword_table/base.py","lineNumber":127,"sourceCode":"            KeywordTableGPTRetriever,\n            KeywordTableRAKERetriever,\n            KeywordTableSimpleRetriever,\n        )\n\n        if retriever_mode == KeywordTableRetrieverMode.DEFAULT:\n            return KeywordTableGPTRetriever(\n                self, object_map=self._object_map, llm=self._llm, **kwargs\n            )\n        elif retriever_mode == KeywordTableRetrieverMode.SIMPLE:\n            return KeywordTableSimpleRetriever(\n                self, object_map=self._object_map, **kwargs\n            )\n        elif retriever_mode == KeywordTableRetrieverMode.RAKE:\n            return KeywordTableRAKERetriever(\n                self, object_map=self._object_map, **kwargs\n            )\n        else:\n            raise ValueError(f\"Unknown retriever mode: {retriever_mode}\")\n\n    @abstractmethod\n    def _extract_keywords(self, text: str) -> Set[str]:\n        \"\"\"Extract keywords from text.\"\"\"\n\n    async def _async_extract_keywords(self, text: str) -> Set[str]:\n        \"\"\"Extract keywords from text.\"\"\"\n        # by default just call sync version\n        return self._extract_keywords(text)\n\n    def _add_nodes_to_index(\n        self,\n        index_struct: KeywordTable,\n        nodes: Sequence[BaseNode],\n        show_progress: bool = False,\n    ) -> None:\n        \"\"\"Add document to index.\"\"\"\n        nodes_with_progress = get_tqdm_iterable(","sourceCodeStart":109,"sourceCodeEnd":145,"githubUrl":"https://github.com/run-llama/llama_index/blob/afd0fef371831f9bda13e5af7167cf4e981278ab/llama-index-core/llama_index/core/indices/keyword_table/base.py#L109-L145","documentation":"KeywordTableIndex.as_retriever() dispatches on a retriever_mode string/enum and only accepts KeywordTableRetrieverMode.DEFAULT ('default'), SIMPLE, and RAKE. Any other value falls through the elif chain and raises ValueError with the offending mode interpolated into the message.","triggerScenarios":"KeywordTableIndex(...).as_retriever(retriever_mode='embedding'), 'llm', or a typo like 'rake ' / 'Simple'; passing a mode valid for a different index type (e.g. a ListIndex mode) into a keyword table index; constructing the retriever from a config string that has drifted from the enum values.","commonSituations":"Config-driven retriever selection where the same mode string is applied to several index types; copy-pasting retriever code between VectorStoreIndex and KeywordTableIndex; newer/renamed modes after a llama-index version upgrade.","solutions":["Use a valid KeywordTableRetrieverMode value: KeywordTableRetrieverMode.DEFAULT, .SIMPLE, or .RAKE (or the strings 'default', 'simple', 'rake').","Import and reference the enum instead of hardcoding strings: from llama_index.core.indices.keyword_table import KeywordTableRetrieverMode.","If you need embedding-based retrieval, use a VectorStoreIndex or SummaryIndex(embedding mode) rather than a keyword table mode."],"exampleFix":"# before\nretriever = kt_index.as_retriever(retriever_mode=\"embedding\")\n\n# after\nfrom llama_index.core.indices.keyword_table import KeywordTableRetrieverMode\nretriever = kt_index.as_retriever(retriever_mode=KeywordTableRetrieverMode.RAKE)","handlingStrategy":"validation","validationCode":"from llama_index.core.indices.keyword_table import KeywordTableRetrieverMode\n\nVALID = {m.value for m in KeywordTableRetrieverMode}\nassert retriever_mode in VALID or retriever_mode in list(KeywordTableRetrieverMode), retriever_mode\nretriever = kt_index.as_retriever(retriever_mode=retriever_mode)","typeGuard":null,"tryCatchPattern":"try:\n    retriever = kt_index.as_retriever(retriever_mode=mode)\nexcept ValueError as e:\n    if \"Unknown retriever mode\" in str(e):\n        retriever = kt_index.as_retriever()  # fall back to default mode\n    else:\n        raise","preventionTips":["Always pass the enum (KeywordTableRetrieverMode.X) rather than raw strings.","Validate mode strings against the enum at config-load time, before any index call.","Keep per-index-type allowed modes in one lookup table for config validation."],"tags":["llama-index","keyword-table","retriever","configuration","validation"],"backgroundTag":null,"analyzedSha":"afd0fef371831f9bda13e5af7167cf4e981278ab","analyzedAt":"2026-08-15T05:42:58.429Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}