Class: Llmemory::LongTerm::FileBased::Retrieval

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

Instance Method Summary collapse

Constructor Details

#initialize(user_id:, storage:, llm: nil) ⇒ Retrieval

Returns a new instance of Retrieval.



9
10
11
12
13
# File 'lib/llmemory/long_term/file_based/retrieval.rb', line 9

def initialize(user_id:, storage:, llm: nil)
  @user_id = user_id
  @storage = storage
  @llm = llm || Llmemory::LLM.client
end

Instance Method Details

#retrieve(query) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/llmemory/long_term/file_based/retrieval.rb', line 15

def retrieve(query)
  all_categories = @storage.list_categories(@user_id)
  return {} if all_categories.empty?

  relevant_categories = select_relevant_categories(query, all_categories)
  summaries = {}
  relevant_categories.each { |cat| summaries[cat] = @storage.load_category(@user_id, cat) }

  return summaries if is_sufficient?(query, summaries)

  search_query = generate_search_query(query, summaries)
  items = @storage.search_items(@user_id, search_query)
  return format_items(items) if items.any?

  resources = @storage.search_resources(@user_id, search_query)
  format_resources(resources)
end