gomcp/internal/infrastructure/onnx/factory.go

27 lines
771 B
Go
Raw Normal View History

//go:build onnx
package onnx
import (
"log"
"github.com/syntrex-lab/gomcp/internal/domain/vectorstore"
)
// NewEmbedderWithFallback attempts to create an ONNX embedder.
// If ONNX Runtime or model is not available, falls back to FTS5Embedder.
// Always returns a working Embedder — never nil.
func NewEmbedderWithFallback(rlmDir string) vectorstore.Embedder {
// Try ONNX first.
onnxEmb, err := NewEmbedder(Config{RlmDir: rlmDir})
if err == nil {
log.Printf("Oracle: ONNX embedder active (%s, dim=%d) [ORACLE: FULL]",
onnxEmb.Name(), onnxEmb.Dimension())
return onnxEmb
}
// ONNX unavailable — degrade gracefully.
log.Printf("Oracle: ONNX unavailable (%v) — falling back to FTS5 [ORACLE: DEGRADED]", err)
return vectorstore.NewFTS5Embedder()
}