Class: Llmemory::Retrieval::FeedbackStore

Inherits:
Object
  • Object
show all
Defined in:
lib/llmemory/retrieval/feedback_store.rb

Overview

Persists retrieval feedback: a net utility signal per (user, memory item), accumulated from agents marking retrieved items useful (+1) or harmful (-1).

CoALA flags adaptive retrieval — “learning better retrieval procedures” — as understudied. This is the minimal substrate for it: a feedback ledger the Engine consults to boost repeatedly-useful items and dampen noise.

Backed by the same pluggable short-term stores as Checkpoint/WorkingMemory, under a per-user pseudo-session key.

Constant Summary collapse

SESSION_KEY =
"__retrieval_feedback__"

Instance Method Summary collapse

Constructor Details

#initialize(store: nil) ⇒ FeedbackStore

Returns a new instance of FeedbackStore.



19
20
21
# File 'lib/llmemory/retrieval/feedback_store.rb', line 19

def initialize(store: nil)
  @store = store || ShortTerm::Stores.build
end

Instance Method Details

#all(user_id) ⇒ Object



37
38
39
# File 'lib/llmemory/retrieval/feedback_store.rb', line 37

def all(user_id)
  load(user_id)
end

#net(user_id, item_id) ⇒ Object



32
33
34
35
# File 'lib/llmemory/retrieval/feedback_store.rb', line 32

def net(user_id, item_id)
  return 0 if user_id.nil? || item_id.nil?
  load(user_id)[item_id.to_s] || 0
end

#record(user_id, item_id, delta) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/llmemory/retrieval/feedback_store.rb', line 23

def record(user_id, item_id, delta)
  return if user_id.nil? || item_id.nil?
  state = load(user_id)
  key = item_id.to_s
  state[key] = (state[key] || 0) + delta.to_i
  @store.save(user_id, SESSION_KEY, state)
  state[key]
end