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
40 41 42 |
# File 'lib/llmemory/retrieval/feedback_store.rb', line 40 def all(user_id) load(user_id) end |
#net(user_id, item_id) ⇒ Object
35 36 37 38 |
# File 'lib/llmemory/retrieval/feedback_store.rb', line 35 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 31 32 33 |
# File 'lib/llmemory/retrieval/feedback_store.rb', line 23 def record(user_id, item_id, delta) return if user_id.nil? || item_id.nil? key = item_id.to_s state = @store.update(user_id, SESSION_KEY) do |current| current = load_from_state(current) current[key] = (current[key] || 0) + delta.to_i current end state ? state[key] : nil end |