Class: RubyLLM::SemanticCache::VectorStores::Memory
- Defined in:
- lib/ruby_llm/semantic_cache/vector_stores/memory.rb
Instance Method Summary collapse
- #add(id, embedding) ⇒ Object
- #clear! ⇒ Object
- #delete(id) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(config) ⇒ Memory
constructor
A new instance of Memory.
- #search(embedding, limit: 5) ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize(config) ⇒ Memory
9 10 11 12 13 |
# File 'lib/ruby_llm/semantic_cache/vector_stores/memory.rb', line 9 def initialize(config) super @vectors = {} @mutex = Mutex.new end |
Instance Method Details
#add(id, embedding) ⇒ Object
15 16 17 18 19 |
# File 'lib/ruby_llm/semantic_cache/vector_stores/memory.rb', line 15 def add(id, ) @mutex.synchronize do @vectors[id] = end end |
#clear! ⇒ Object
42 43 44 45 46 |
# File 'lib/ruby_llm/semantic_cache/vector_stores/memory.rb', line 42 def clear! @mutex.synchronize do @vectors.clear end end |
#delete(id) ⇒ Object
36 37 38 39 40 |
# File 'lib/ruby_llm/semantic_cache/vector_stores/memory.rb', line 36 def delete(id) @mutex.synchronize do @vectors.delete(id) end end |
#empty? ⇒ Boolean
48 49 50 51 52 |
# File 'lib/ruby_llm/semantic_cache/vector_stores/memory.rb', line 48 def empty? @mutex.synchronize do @vectors.empty? end end |
#search(embedding, limit: 5) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/ruby_llm/semantic_cache/vector_stores/memory.rb', line 21 def search(, limit: 5) @mutex.synchronize do return [] if @vectors.empty? results = @vectors.map do |id, | similarity = cosine_similarity(, ) { id: id, similarity: similarity } end results .sort_by { |r| -r[:similarity] } .first(limit) end end |
#size ⇒ Object
54 55 56 57 58 |
# File 'lib/ruby_llm/semantic_cache/vector_stores/memory.rb', line 54 def size @mutex.synchronize do @vectors.size end end |