models

package
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 6, 2025 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package models provides AI model management functionality

internal/models/manager.go

Index

Constants

This section is empty.

Variables

View Source
var PredefinedEmbeddingModels = []EmbeddingModel{
	{
		Name:       "nomic-embed-text",
		Size:       "274MB",
		Dimensions: 768,
		Family:     "bert",
	},
	{
		Name:       "mxbai-embed-large",
		Size:       "670MB",
		Dimensions: 1024,
		Family:     "bert",
	},
	{
		Name:       "all-minilm",
		Size:       "46MB",
		Dimensions: 384,
		Family:     "bert",
	},
	{
		Name:       "bge-base",
		Size:       "420MB",
		Dimensions: 768,
		Family:     "bert",
	},
	{
		Name:       "bge-large",
		Size:       "1.3GB",
		Dimensions: 1024,
		Family:     "bert",
	},
	{
		Name:       "e5-base",
		Size:       "438MB",
		Dimensions: 768,
		Family:     "bert",
	},
	{
		Name:       "e5-large",
		Size:       "1.3GB",
		Dimensions: 1024,
		Family:     "bert",
	},
}

PredefinedEmbeddingModels contains known embedding models

Functions

func GetRecommendedModels

func GetRecommendedModels() []struct {
	Name        string
	Size        string
	Description string
}

GetRecommendedModels returns a list of recommended models

func IsEmbeddingModel

func IsEmbeddingModel(modelName string) bool

IsEmbeddingModel checks if a model is an embedding model

Types

type EmbeddingModel

type EmbeddingModel struct {
	Name       string
	Size       string
	Dimensions int
	Family     string
}

EmbeddingModel represents an embedding model

func GetEmbeddingModelInfo

func GetEmbeddingModelInfo(modelName string) *EmbeddingModel

GetEmbeddingModelInfo returns information about an embedding model

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager handles AI model operations

func NewManager

func NewManager(ollamaEndpoint string) *Manager

NewManager creates a new model manager

func (*Manager) CheckModelType

func (m *Manager) CheckModelType(modelName string) string

CheckModelType determines the type of a model (llm, embedding, etc)

func (*Manager) DetectProvider

func (m *Manager) DetectProvider() Provider

DetectProvider detects which AI provider is available

func (*Manager) GetActiveModel

func (m *Manager) GetActiveModel(configDefault string) (string, error)

GetActiveModel returns the currently active model from config

func (*Manager) GetAvailableEmbeddingModels

func (m *Manager) GetAvailableEmbeddingModels() ([]Model, error)

GetAvailableEmbeddingModels returns all installed embedding models

func (*Manager) GetModelDetails

func (m *Manager) GetModelDetails(modelName string) (map[string]interface{}, error)

GetModelDetails fetches detailed information about a model from Ollama

func (*Manager) IsOllamaAvailable

func (m *Manager) IsOllamaAvailable() bool

IsOllamaAvailable checks if Ollama service is running

func (*Manager) List

func (m *Manager) List() ([]Model, error)

List returns all available models

func (*Manager) ListEmbeddingModels

func (m *Manager) ListEmbeddingModels() (installed []Model, available []EmbeddingModel, err error)

ListEmbeddingModels returns both installed and available embedding models

func (*Manager) Pull

func (m *Manager) Pull(modelName string, progress chan<- PullProgress) error

Pull downloads a model with progress updates

func (*Manager) Remove

func (m *Manager) Remove(modelName string) error

Remove deletes a model

func (*Manager) SetActiveModel

func (m *Manager) SetActiveModel(modelName string) error

SetActiveModel sets the active model

type Model

type Model struct {
	Name        string    `json:"name"`
	Model       string    `json:"model"`
	Size        int64     `json:"size"`
	Digest      string    `json:"digest"`
	ModifiedAt  time.Time `json:"modified_at"`
	Description string    `json:"description,omitempty"`
}

Model represents an AI model

type Provider

type Provider string

Provider represents an AI provider

const (
	ProviderOllama Provider = "ollama"
	ProviderOpenAI Provider = "openai"
)

type PullProgress

type PullProgress struct {
	Status     string `json:"status"`
	Digest     string `json:"digest,omitempty"`
	Total      int64  `json:"total,omitempty"`
	Completed  int64  `json:"completed,omitempty"`
	Percentage int    `json:"percentage,omitempty"`
}

PullProgress represents download progress

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL