semantic

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BytesToFloat32

func BytesToFloat32(data []byte) []float32

func CosineSimilarity

func CosineSimilarity(a, b []float32) float32

func Float32ToBytes

func Float32ToBytes(data []float32) []byte

Types

type ClaudeChatRequest added in v0.2.0

type ClaudeChatRequest struct {
	Model     string          `json:"model"`
	MaxTokens int             `json:"max_tokens"`
	System    string          `json:"system,omitempty"`
	Messages  []ClaudeMessage `json:"messages"`
	Stream    bool            `json:"stream"`
}

type ClaudeChatResponse added in v0.2.0

type ClaudeChatResponse struct {
	ID         string `json:"id"`
	Model      string `json:"model"`
	StopReason string `json:"stop_reason"`
	Content    []struct {
		Text string `json:"text"`
	} `json:"content"`
	Usage struct {
		InputTokens  int `json:"input_tokens"`
		OutputTokens int `json:"output_tokens"`
	} `json:"usage"`
}

type ClaudeMessage added in v0.2.0

type ClaudeMessage struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

type ClaudeProvider added in v0.2.0

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

ClaudeProvider implementation

func NewClaudeProvider added in v0.2.0

func NewClaudeProvider() *ClaudeProvider

func NewClaudeProviderWithConfig added in v0.3.0

func NewClaudeProviderWithConfig(cfg *ProviderConfig) *ClaudeProvider

func (*ClaudeProvider) CheckSimilarity added in v0.2.0

func (p *ClaudeProvider) CheckSimilarity(ctx context.Context, prompt1, prompt2 string) (bool, error)

func (*ClaudeProvider) Embed added in v0.2.0

func (p *ClaudeProvider) Embed(ctx context.Context, text string) ([]float32, error)

func (*ClaudeProvider) ForwardChatCompletion added in v0.3.0

func (p *ClaudeProvider) ForwardChatCompletion(ctx context.Context, requestBody []byte) ([]byte, int, error)

func (*ClaudeProvider) ForwardStreamingChatCompletion added in v0.4.0

func (p *ClaudeProvider) ForwardStreamingChatCompletion(ctx context.Context, requestBody []byte, w http.ResponseWriter) ([]byte, int, error)

type Config added in v0.2.0

type Config struct {
	HighThreshold          float32
	LowThreshold           float32
	EnableGrayZoneVerifier bool
	EmbeddingDimension     int  // Dimension of embeddings (e.g., 1536 for OpenAI, 1024 for Voyage)
	UseANNIndex            bool // Whether to use ANN index for similarity search
}

Config holds configuration for the semantic engine

func LoadConfig added in v0.2.0

func LoadConfig() *Config

LoadConfig loads configuration from environment variables with sensible defaults

type EmbeddingProvider

type EmbeddingProvider interface {
	Embed(ctx context.Context, text string) ([]float32, error)
}

type EmbeddingRequest

type EmbeddingRequest struct {
	Input string `json:"input"`
	Model string `json:"model"`
}

type EmbeddingResponse

type EmbeddingResponse struct {
	Data []struct {
		Embedding []float64 `json:"embedding"`
	} `json:"data"`
}

type Message

type Message struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

type MistralChatRequest added in v0.2.0

type MistralChatRequest struct {
	Model    string           `json:"model"`
	Messages []MistralMessage `json:"messages"`
}

type MistralChatResponse added in v0.2.0

type MistralChatResponse struct {
	Choices []struct {
		Message MistralMessage `json:"message"`
	} `json:"choices"`
}

type MistralEmbeddingRequest added in v0.2.0

type MistralEmbeddingRequest struct {
	Input          []string `json:"input"`
	Model          string   `json:"model"`
	EncodingFormat string   `json:"encoding_format"`
}

type MistralEmbeddingResponse added in v0.2.0

type MistralEmbeddingResponse struct {
	Data []struct {
		Embedding []float64 `json:"embedding"`
	} `json:"data"`
}

type MistralMessage added in v0.2.0

type MistralMessage struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

type MistralProvider added in v0.2.0

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

MistralProvider implementation

func NewMistralProvider added in v0.2.0

func NewMistralProvider() *MistralProvider

func NewMistralProviderWithConfig added in v0.3.0

func NewMistralProviderWithConfig(cfg *ProviderConfig) *MistralProvider

func (*MistralProvider) CheckSimilarity added in v0.2.0

func (p *MistralProvider) CheckSimilarity(ctx context.Context, prompt1, prompt2 string) (bool, error)

func (*MistralProvider) Embed added in v0.2.0

func (p *MistralProvider) Embed(ctx context.Context, text string) ([]float32, error)

func (*MistralProvider) ForwardChatCompletion added in v0.3.0

func (p *MistralProvider) ForwardChatCompletion(ctx context.Context, requestBody []byte) ([]byte, int, error)

func (*MistralProvider) ForwardStreamingChatCompletion added in v0.4.0

func (p *MistralProvider) ForwardStreamingChatCompletion(ctx context.Context, requestBody []byte, w http.ResponseWriter) ([]byte, int, error)

type OpenAIChatCompletionRequest added in v0.3.0

type OpenAIChatCompletionRequest struct {
	Model    string          `json:"model"`
	Messages []OpenAIMessage `json:"messages"`
	Stream   bool            `json:"stream"`
}

OpenAI-compatible structures for translation

type OpenAIChatCompletionResponse added in v0.3.0

type OpenAIChatCompletionResponse struct {
	ID      string         `json:"id"`
	Object  string         `json:"object"`
	Created int64          `json:"created"`
	Model   string         `json:"model"`
	Choices []OpenAIChoice `json:"choices"`
	Usage   any            `json:"usage"`
}

type OpenAIChoice added in v0.3.0

type OpenAIChoice struct {
	Index        int           `json:"index"`
	Message      OpenAIMessage `json:"message"`
	FinishReason string        `json:"finish_reason"`
}

type OpenAIMessage added in v0.3.0

type OpenAIMessage struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

type OpenAIProvider

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

OpenAIProvider implementation

func NewOpenAIProvider

func NewOpenAIProvider() *OpenAIProvider

func NewOpenAIProviderWithConfig added in v0.3.0

func NewOpenAIProviderWithConfig(cfg *ProviderConfig) *OpenAIProvider

func (*OpenAIProvider) CheckSimilarity

func (p *OpenAIProvider) CheckSimilarity(ctx context.Context, prompt1, prompt2 string) (bool, error)

func (*OpenAIProvider) Embed

func (p *OpenAIProvider) Embed(ctx context.Context, text string) ([]float32, error)

func (*OpenAIProvider) ForwardChatCompletion added in v0.3.0

func (p *OpenAIProvider) ForwardChatCompletion(ctx context.Context, requestBody []byte) ([]byte, int, error)

func (*OpenAIProvider) ForwardStreamingChatCompletion added in v0.4.0

func (p *OpenAIProvider) ForwardStreamingChatCompletion(ctx context.Context, requestBody []byte, w http.ResponseWriter) ([]byte, int, error)

type Provider added in v0.2.0

type Provider interface {
	EmbeddingProvider
	Verifier
	ForwardChatCompletion(ctx context.Context, requestBody []byte) ([]byte, int, error)
	// ForwardStreamingChatCompletion streams SSE events to w and returns a buffered
	// non-streaming JSON response suitable for caching.
	ForwardStreamingChatCompletion(ctx context.Context, requestBody []byte, w http.ResponseWriter) ([]byte, int, error)
}

Provider combines EmbeddingProvider and Verifier interfaces

func NewProvider added in v0.2.0

func NewProvider() (Provider, error)

NewProvider creates an embedding provider based on the EMBEDDING_PROVIDER environment variable Supported providers: openai (default), mistral, claude

type ProviderConfig added in v0.3.0

type ProviderConfig struct {
	HTTPTimeout       time.Duration
	HTTPMaxRetries    int
	HTTPRetryBaseWait time.Duration

	// OpenAI settings
	OpenAIEmbedModel  string
	OpenAIVerifyModel string

	// Mistral settings
	MistralEmbedModel  string
	MistralVerifyModel string

	// Claude settings
	ClaudeModel       string
	ClaudeVerifyModel string
	VoyageEmbedModel  string
}

ProviderConfig holds configuration for providers

func DefaultProviderConfig added in v0.3.0

func DefaultProviderConfig() *ProviderConfig

DefaultProviderConfig returns default provider configuration

type SemanticEngine

type SemanticEngine struct {
	Provider               Provider
	Store                  Storage
	Verifier               Verifier
	HighThreshold          float32
	LowThreshold           float32
	EnableGrayZoneVerifier bool
	// contains filtered or unexported fields
}

func NewSemanticEngine

func NewSemanticEngine(p Provider, s Storage, v Verifier, config *Config) *SemanticEngine

func (*SemanticEngine) AddToIndex added in v0.3.0

func (se *SemanticEngine) AddToIndex(key string, embedding []float32)

AddToIndex adds an embedding to the ANN index

func (*SemanticEngine) FindSimilar

func (se *SemanticEngine) FindSimilar(ctx context.Context, text string) (string, float32, error)

func (*SemanticEngine) ForwardChatCompletion added in v0.3.0

func (se *SemanticEngine) ForwardChatCompletion(ctx context.Context, requestBody []byte) ([]byte, int, error)

ForwardChatCompletion forwards the request to the current provider

func (*SemanticEngine) ForwardStreamingChatCompletion added in v0.4.0

func (se *SemanticEngine) ForwardStreamingChatCompletion(ctx context.Context, requestBody []byte, w http.ResponseWriter) ([]byte, int, error)

ForwardStreamingChatCompletion streams SSE events to w via the current provider. It returns a buffered full JSON response for caching and the HTTP status code.

func (*SemanticEngine) GetConfig added in v0.4.0

func (se *SemanticEngine) GetConfig() map[string]interface{}

GetConfig returns the current semantic configuration (thread-safe).

func (*SemanticEngine) GetCurrentProvider added in v0.2.0

func (se *SemanticEngine) GetCurrentProvider() string

GetCurrentProvider returns the name of the currently active provider

func (*SemanticEngine) GetProvider added in v0.2.0

func (se *SemanticEngine) GetProvider() Provider

GetProvider returns the current provider instance (thread-safe)

func (*SemanticEngine) SetProvider added in v0.2.0

func (se *SemanticEngine) SetProvider(providerName string) error

SetProvider dynamically changes the embedding provider at runtime

func (*SemanticEngine) UpdateThresholds added in v0.4.0

func (se *SemanticEngine) UpdateThresholds(high, low float32, enableGrayZone *bool) error

UpdateThresholds atomically updates the similarity thresholds and optionally the gray-zone verifier toggle. Returns an error if high <= low or values are out of range.

type Storage

type Storage interface {
	GetAllEmbeddings(ctx context.Context) (map[string][]byte, error)
	GetPrompt(ctx context.Context, key string) (string, error)
}

type VerificationRequest

type VerificationRequest struct {
	Model    string    `json:"model"`
	Messages []Message `json:"messages"`
}

type VerificationResponse

type VerificationResponse struct {
	Choices []struct {
		Message Message `json:"message"`
	} `json:"choices"`
}

type Verifier

type Verifier interface {
	CheckSimilarity(ctx context.Context, prompt1, prompt2 string) (bool, error)
}

type VoyageEmbeddingRequest added in v0.2.0

type VoyageEmbeddingRequest struct {
	Input []string `json:"input"`
	Model string   `json:"model"`
}

type VoyageEmbeddingResponse added in v0.2.0

type VoyageEmbeddingResponse struct {
	Data []struct {
		Embedding []float64 `json:"embedding"`
	} `json:"data"`
}

Jump to

Keyboard shortcuts

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