mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
refact: go mcp tool in containerd
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package embeddings
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/memohai/memoh/internal/models"
|
||||
)
|
||||
|
||||
// ResolverTextEmbedder adapts Resolver to the Embedder interface for text embeddings.
|
||||
type ResolverTextEmbedder struct {
|
||||
Resolver *Resolver
|
||||
ModelID string
|
||||
Dims int
|
||||
}
|
||||
|
||||
func (e *ResolverTextEmbedder) Embed(ctx context.Context, input string) ([]float32, error) {
|
||||
result, err := e.Resolver.Embed(ctx, Request{
|
||||
Type: TypeText,
|
||||
Model: e.ModelID,
|
||||
Input: Input{Text: input},
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return result.Embedding, nil
|
||||
}
|
||||
|
||||
func (e *ResolverTextEmbedder) Dimensions() int {
|
||||
return e.Dims
|
||||
}
|
||||
|
||||
// CollectEmbeddingVectors gathers embedding model dimensions and defaults.
|
||||
func CollectEmbeddingVectors(ctx context.Context, service *models.Service) (map[string]int, models.GetResponse, models.GetResponse, bool, error) {
|
||||
candidates, err := service.ListByType(ctx, models.ModelTypeEmbedding)
|
||||
if err != nil {
|
||||
return nil, models.GetResponse{}, models.GetResponse{}, false, err
|
||||
}
|
||||
vectors := map[string]int{}
|
||||
var textModel models.GetResponse
|
||||
var multimodalModel models.GetResponse
|
||||
for _, model := range candidates {
|
||||
if model.Dimensions > 0 && model.ModelID != "" {
|
||||
vectors[model.ModelID] = model.Dimensions
|
||||
}
|
||||
if model.IsMultimodal {
|
||||
if multimodalModel.ModelID == "" {
|
||||
multimodalModel = model
|
||||
}
|
||||
continue
|
||||
}
|
||||
if textModel.ModelID == "" {
|
||||
textModel = model
|
||||
}
|
||||
}
|
||||
|
||||
hasTextModel := textModel.ModelID != ""
|
||||
hasMultimodalModel := multimodalModel.ModelID != ""
|
||||
hasAnyModel := hasTextModel || hasMultimodalModel
|
||||
|
||||
return vectors, textModel, multimodalModel, hasAnyModel, nil
|
||||
}
|
||||
Reference in New Issue
Block a user