Class: Llmemory::Retrieval::Engine
- Inherits:
-
Object
- Object
- Llmemory::Retrieval::Engine
- Defined in:
- lib/llmemory/retrieval/engine.rb
Constant Summary collapse
- RELEVANCE_THRESHOLD =
0.7
Instance Method Summary collapse
-
#initialize(memory, llm: nil) ⇒ Engine
constructor
A new instance of Engine.
- #retrieve_for_inference(user_message, user_id: nil, max_tokens: nil) ⇒ Object
Constructor Details
#initialize(memory, llm: nil) ⇒ Engine
Returns a new instance of Engine.
13 14 15 16 17 18 19 20 |
# File 'lib/llmemory/retrieval/engine.rb', line 13 def initialize(memory, llm: nil) @memory = memory @llm = llm || Llmemory::LLM.client @ranker = TemporalRanker.new @assembler = ContextAssembler.new @bm25_scorer = Bm25Scorer.new @mmr_reranker = MmrReranker.new(lambda: Llmemory.configuration.mmr_lambda) end |
Instance Method Details
#retrieve_for_inference(user_message, user_id: nil, max_tokens: nil) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/llmemory/retrieval/engine.rb', line 22 def retrieve_for_inference(, user_id: nil, max_tokens: nil) user_id ||= @memory.respond_to?(:user_id) ? @memory.user_id : nil search_query = generate_query() candidates = fetch_candidates(search_query, user_id) candidates = apply_hybrid_scoring(candidates, search_query) if Llmemory.configuration.hybrid_search_enabled relevant = filter_by_relevance(candidates, ) ranked = @ranker.rank(relevant) ranked = @mmr_reranker.rerank(ranked) if Llmemory.configuration.mmr_enabled @assembler.assemble(ranked, max_tokens: max_tokens) end |