{"record":{"id":"0835918a5aee3259","repo":"Tencent/WeKnora","slug":"rerank-call-failed-w","errorCode":null,"errorMessage":"rerank call failed: %w","messagePattern":"rerank call failed: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/agent/tools/knowledge_search.go","lineNumber":695,"sourceCode":"\treturn meta, nil\n}\n\n// rerankScores scores the candidates with the configured rerank model and\n// returns the raw relevance scores, leaving threshold filtering and composite\n// scoring to the caller.\nfunc (t *KnowledgeSearchTool) rerankScores(\n\tctx context.Context,\n\tquery string,\n\tresults []*searchResultWithMeta,\n) ([]rerank.RankResult, error) {\n\tpassages := make([]string, len(results))\n\tfor i, result := range results {\n\t\tpassages[i] = t.getEnrichedPassage(ctx, result.SearchResult)\n\t}\n\n\trerankResp, err := t.rerankModel.Rerank(ctx, query, passages)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"rerank call failed: %w\", err)\n\t}\n\treturn rerankResp, nil\n}\n\nfunc (t *KnowledgeSearchTool) rerankThreshold() float64 {\n\tif t.config != nil && t.config.Conversation != nil && t.config.Conversation.RerankThreshold > 0 {\n\t\treturn t.config.Conversation.RerankThreshold\n\t}\n\treturn 0.3\n}\n\nconst agentRerankFallbackMinScore = 0.15\n\nfunc filterRerankRankResults(\n\trankResults []rerank.RankResult,\n\tthreshold float64,\n\tpreserveTop bool,\n) []rerank.RankResult {","sourceCodeStart":677,"sourceCodeEnd":713,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/agent/tools/knowledge_search.go#L677-L713","documentation":"rerankScores calls the configured rerank model to rescore retrieved passages; any error returned by rerankModel.Rerank is wrapped as 'rerank call failed: %w'. This is a downstream-model invocation failure, not a validation error — the search results exist but the reranking step could not complete.","triggerScenarios":"t.rerankModel.Rerank returns an error: rerank provider HTTP failure, auth rejection, timeout, oversized payload (too many/long passages), or rerank model misconfigured while rerank is enabled.","commonSituations":"Rerank API key expired or missing; provider outage or rate limiting; passage list exceeds provider limits; network egress blocked in the deployment environment.","solutions":["Inspect the wrapped cause (%w) via errors.Unwrap or %v of the returned error for the provider-level reason","Verify rerank provider credentials and endpoint configuration","Check provider status/rate limits; retry with backoff on transient failures","Shrink the number/size of passages sent to the reranker","Disable rerank or add a fallback path that returns un-reranked results when reranking fails"],"exampleFix":"// before\nrerankResp, err := t.rerankModel.Rerank(ctx, query, passages)\nif err != nil { return nil, fmt.Errorf(\"rerank call failed: %w\", err) }\n// after\nrerankResp, err := t.rerankModel.Rerank(ctx, query, passages)\nif err != nil {\n    logger.Warnf(ctx, \"rerank failed, falling back to unranked results: %v\", err)\n    return results, nil // graceful degradation\n}","handlingStrategy":"fallback","validationCode":"if rerankEnabled && (rerankEndpoint == \"\" || rerankAPIKey == \"\") {\n    return errors.New(\"rerank configured but endpoint/key missing\")\n}","typeGuard":null,"tryCatchPattern":"res, err := tool.Execute(ctx, input)\nif err != nil && strings.Contains(err.Error(), \"rerank call failed\") {\n    log.Printf(\"rerank unavailable: %v\", err) // error wraps provider cause\n    return executeWithoutRerank(ctx, input) // graceful degradation\n}","preventionTips":["Verify rerank credentials and endpoint at startup","Set rerank call timeouts and retry transient failures with backoff","Cap passage count/size sent to the reranker","Implement a code path that returns un-reranked results on rerank failure","Monitor provider status/rate limits"],"tags":["go","knowledge-search","rerank","network","api-call"],"backgroundTag":"rerank-api-call-failed","analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}