MCPcopy Index your code
hub / github.com/docker/docker-agent / buildRerankingConfig

Function buildRerankingConfig

pkg/rag/builder.go:144–222  ·  view source on GitHub ↗

buildRerankingConfig constructs a RerankingConfig from the configuration.

(
	ctx context.Context,
	rerankCfg *latest.RAGRerankingConfig,
	buildCfg ManagersBuildConfig,
	globalLimit int,
)

Source from the content-addressed store, hash-verified

142
143// buildRerankingConfig constructs a RerankingConfig from the configuration.
144func buildRerankingConfig(
145 ctx context.Context,
146 rerankCfg *latest.RAGRerankingConfig,
147 buildCfg ManagersBuildConfig,
148 globalLimit int,
149) (*RerankingConfig, error) {
150 if rerankCfg == nil {
151 return nil, nil
152 }
153
154 if rerankCfg.Model == "" {
155 slog.ErrorContext(ctx, "Reranking model name is empty")
156 return nil, errors.New("reranking model is required")
157 }
158
159 slog.DebugContext(ctx, "Resolving reranking model",
160 "model_ref", rerankCfg.Model)
161
162 // Resolve model config - check if it's a reference to a defined model or inline
163 modelCfgVal, err := strategy.ResolveModelConfig(rerankCfg.Model, buildCfg.Models)
164 if err != nil {
165 slog.ErrorContext(ctx, "Failed to resolve reranking model",
166 "model_ref", rerankCfg.Model,
167 "error", err)
168 return nil, fmt.Errorf("failed to resolve reranking model %q: %w", rerankCfg.Model, err)
169 }
170 modelCfg := &modelCfgVal
171
172 slog.DebugContext(ctx, "Resolved reranking model config",
173 "provider", modelCfg.Provider,
174 "model", modelCfg.Model)
175
176 // Create provider for reranking model
177 rerankProvider, err := buildCfg.NewProvider(ctx, modelCfg)
178 if err != nil {
179 slog.ErrorContext(ctx, "Failed to create reranking provider",
180 "provider", modelCfg.Provider,
181 "model", modelCfg.Model,
182 "error", err)
183 return nil, fmt.Errorf("failed to create reranking provider: %w", err)
184 }
185
186 slog.DebugContext(ctx, "Created reranking provider",
187 "provider_id", rerankProvider.ID())
188
189 // Determine effective TopK:
190 // - If user provided a positive top_k, respect it.
191 // - Otherwise, default to the global results limit when set.
192 // This avoids reranking unbounded result sets while still
193 // using a sensible, user-controlled cap.
194 effectiveTopK := rerankCfg.TopK
195 if effectiveTopK <= 0 && globalLimit > 0 {
196 effectiveTopK = globalLimit
197 }
198
199 // Create reranker
200 reranker, err := rerank.NewLLMReranker(rerank.Config{
201 Model: rerankProvider,

Callers 1

buildManagerConfigFunction · 0.85

Calls 5

IDMethod · 0.95
ResolveModelConfigFunction · 0.92
NewLLMRerankerFunction · 0.92
NewMethod · 0.45
NewProviderMethod · 0.45

Tested by

no test coverage detected