Class: Llmemory::Retrieval::FeedbackStore
- Inherits:
-
Object
- Object
- Llmemory::Retrieval::FeedbackStore
- 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
- #all(user_id) ⇒ Object
-
#initialize(store: nil) ⇒ FeedbackStore
constructor
A new instance of FeedbackStore.
- #net(user_id, item_id) ⇒ Object
- #record(user_id, item_id, delta) ⇒ Object
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 |