MCPcopy
hub / github.com/docker/docker-agent / CreateEmbeddingProvider

Function CreateEmbeddingProvider

pkg/rag/strategy/embedding.go:25–72  ·  view source on GitHub ↗

CreateEmbeddingProvider creates an embedding model provider from configuration. Supports "auto" for auto-detection, inline "provider/model" format, or named model references.

(ctx context.Context, modelName string, buildCtx BuildContext)

Source from the content-addressed store, hash-verified

23// CreateEmbeddingProvider creates an embedding model provider from configuration.
24// Supports "auto" for auto-detection, inline "provider/model" format, or named model references.
25func CreateEmbeddingProvider(ctx context.Context, modelName string, buildCtx BuildContext) (*EmbeddingConfig, error) {
26 var embedModel provider.Provider
27 var modelCfg latest.ModelConfig
28 var err error
29
30 if modelName == "auto" {
31 // Auto-detect embedding model (try OpenAI first, fall back to DMR)
32 embedModel, err = createAutoEmbeddingModel(ctx, buildCtx)
33 if err != nil {
34 return nil, fmt.Errorf("failed to create auto embedding model: %w", err)
35 }
36 } else {
37 // Look up or parse model config
38 modelCfg, err = ResolveModelConfig(modelName, buildCtx.Models)
39 if err != nil {
40 return nil, fmt.Errorf("model '%s' not found: %w", modelName, err)
41 }
42
43 embedModel, err = buildCtx.NewProvider(ctx, &modelCfg)
44 if err != nil {
45 return nil, fmt.Errorf("failed to create embedding model: %w", err)
46 }
47 }
48
49 // Determine model ID for pricing lookup
50 var modelID modelsdev.ID
51 if modelName == "auto" {
52 modelID = embedModel.ID()
53 } else {
54 modelID = modelsdev.NewID(modelCfg.Provider, modelCfg.Model)
55 }
56
57 var modelsStore *modelsdev.Store
58 if buildCtx.RuntimeConfig != nil {
59 var err error
60 modelsStore, err = buildCtx.RuntimeConfig.ModelsDevStore()
61 if err != nil {
62 slog.DebugContext(ctx, "Failed to create models.dev store for RAG pricing; cost tracking disabled",
63 "error", err)
64 }
65 }
66
67 return &EmbeddingConfig{
68 Provider: embedModel,
69 ModelID: modelID,
70 ModelsStore: modelsStore,
71 }, nil
72}
73
74// createAutoEmbeddingModel creates an auto-detected embedding model.
75func createAutoEmbeddingModel(ctx context.Context, buildCtx BuildContext) (provider.Provider, error) {

Callers 2

Calls 6

IDMethod · 0.95
NewIDFunction · 0.92
createAutoEmbeddingModelFunction · 0.85
ResolveModelConfigFunction · 0.85
NewProviderMethod · 0.45
ModelsDevStoreMethod · 0.45

Tested by

no test coverage detected