{"record":{"id":"7a3d9b5faaebd4b2","repo":"continuedev/continue","slug":"no-reranker-set-up","errorCode":null,"errorMessage":"No reranker set up","messagePattern":"No reranker set up","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"core/context/retrieval/pipelines/RerankerRetrievalPipeline.ts","lineNumber":90,"sourceCode":"    }\n\n    if (filterDirectory) {\n      // Backup if the individual retrieval methods don't listen\n      retrievalResults = retrievalResults.filter(\n        (chunk) =>\n          !!findUriInDirs(chunk.filepath, [filterDirectory]).foundInDir,\n      );\n    }\n\n    const deduplicatedRetrievalResults: Chunk[] =\n      deduplicateChunks(retrievalResults);\n\n    return deduplicatedRetrievalResults;\n  }\n\n  private async _rerank(input: string, chunks: Chunk[]): Promise<Chunk[]> {\n    if (!this.options.config.selectedModelByRole.rerank) {\n      throw new Error(\"No reranker set up\");\n    }\n\n    // remove empty chunks -- some APIs fail on that\n    chunks = chunks.filter((chunk) => chunk.content);\n\n    try {\n      let scores: number[] =\n        await this.options.config.selectedModelByRole.rerank.rerank(\n          input,\n          chunks,\n        );\n\n      // Filter out low-scoring results\n      let results = chunks;\n      // let results = chunks.filter(\n      //   (_, i) => scores[i] >= RETRIEVAL_PARAMS.rerankThreshold,\n      // );\n      // scores = scores.filter(","sourceCodeStart":72,"sourceCodeEnd":108,"githubUrl":"https://github.com/continuedev/continue/blob/5522c6f44ca0ac3528b37244818fbfa39b5af470/core/context/retrieval/pipelines/RerankerRetrievalPipeline.ts#L72-L108","documentation":"RerankerRetrievalPipeline._rerank requires a model selected for the 'rerank' role in config; if selectedModelByRole.rerank is unset this throws before any reranking call. It happens during run(), i.e. while producing codebase retrieval results.","triggerScenarios":"A retrieval pipeline with reranking enabled (e.g. context retrieval with reranker) but no model assigned the rerank role — no reranker entry in config models/roles and no default available.","commonSituations":"User enables reranking flags or copies a config that expects Cohere/LLM reranker but never defines the reranker model; model role names changed between versions.","solutions":["Add a reranker model to config (e.g. a Cohere rerank model with roles: [rerank])","Or remove/disable reranking in the retrieval pipeline settings so _rerank is skipped","Validate config with `continue config validate` or reload and check for role warnings"],"exampleFix":"# config.yaml\n# before\nname: My Reranker\nroles: []\n# after\nname: My Reranker\nprovider: cohere\nmodel: rerank-v3.5\napiKey: ...\nroles: [rerank]\n","handlingStrategy":"validation","validationCode":"const rerankModel = config.selectedModelByRole.rerank;\nif (!rerankModel) pipelineOptions.disableReranking = true;","typeGuard":"function hasReranker(config: Config): boolean {\n  return !!config.selectedModelByRole.rerank;\n}","tryCatchPattern":null,"preventionTips":["Always define a rerank-role model when enabling reranking pipelines","Lint config for required model roles at startup"],"tags":["reranker","retrieval","config","missing-model"],"backgroundTag":"missing-model-role-config","analyzedSha":"5522c6f44ca0ac3528b37244818fbfa39b5af470","analyzedAt":"2026-08-27T11:28:54.683Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}