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