cache

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package cache содержит in-memory LRU-кэш для эмбеддингов.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type EmbedderCache

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

EmbedderCache обёртка над Embedder с LRU in-memory кэшем и опциональным Redis. Реализует интерфейс domain.Embedder. @ds-task T1.1: Основная структура кэша (AC-001, RQ-001)

func NewEmbedderCache

func NewEmbedderCache(embedder domain.Embedder, opts ...Option) (*EmbedderCache, error)

NewEmbedderCache создаёт новый кэширующий embedder. @ds-task T1.1, T1.4, T2.4: Конструктор с валидацией (AC-001, RQ-002)

func (*EmbedderCache) Embed

func (c *EmbedderCache) Embed(ctx context.Context, text string) ([]float64, error)

Embed преобразует текст в векторное представление с использованием кэша. Сначала проверяет in-memory LRU (L1), затем Redis (L2, если настроен), при miss вызывает базовый embedder и сохраняет результат в кэш. @ds-task T1.1, T2.1, T3.2: Двухуровневый lookup с fallback (AC-001, RQ-003, RQ-005, RQ-009)

func (*EmbedderCache) Stats

func (c *EmbedderCache) Stats() Stats

Stats возвращает текущие метрики кэша. @ds-task T2.5: Метод получения статистики (AC-007)

type Option

type Option func(*EmbedderCache)

Option функциональная опция для конфигурации EmbedderCache. @ds-task T1.4: Тип функциональной опции (AC-001)

func WithCacheSize

func WithCacheSize(size int) Option

WithCacheSize устанавливает размер in-memory LRU кэша. Минимальное значение — 1. По умолчанию 1000. @ds-task T1.4, T2.4: Опция размера кэша с валидацией (AC-001, RQ-004)

func WithLogger

func WithLogger(logger domain.Logger) Option

WithLogger настраивает опциональный структурированный логгер. nil означает no-op.

func WithRedis

func WithRedis(client RedisClient, ttl time.Duration, keyPrefix string) Option

WithRedis настраивает Redis как second-level cache (L2). client может быть nil — в этом случае Redis не используется. ttl задаёт время жизни записей в Redis (0 — без TTL). keyPrefix задаёт префикс keyspace ("" → дефолт `draftrag:embedder:`). @ds-task T3.2: Опция для Redis second-level cache (AC-004, AC-005)

type RedisClient

type RedisClient interface {
	GetBytes(ctx context.Context, key string) ([]byte, error)
	SetBytes(ctx context.Context, key string, value []byte, ttl time.Duration) error
}

RedisClient — минимальный адаптер-интерфейс для Redis.

Контракт: - GetBytes: если ключ отсутствует, должен возвращать (nil, nil). - Любая ошибка должна означать проблему с доступом/исполнением операции.

@ds-task T1.1: Адаптер-интерфейс Redis клиента (RQ-002.1)

type Stats

type Stats struct {
	Hits      uint64 // количество попаданий в кэш
	Misses    uint64 // количество промахов
	Evictions uint64 // количество вытесненных записей
}

Stats содержит метрики работы кэша. @ds-task T1.3: Структура для сбора статистики кэша (AC-007)

func (Stats) HitRate

func (s Stats) HitRate() float64

HitRate возвращает долю попаданий в кэш (от 0 до 1). Возвращает 0, если не было ни одного обращения. @ds-task T1.3: Метод вычисления hit rate (AC-007)

Jump to

Keyboard shortcuts

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