Class: RCrewAI::Knowledge::Store

Inherits:
Object
  • Object
show all
Defined in:
lib/rcrewai/knowledge/store.rb

Overview

In-memory vector store with cosine-similarity search. The default backing store for Knowledge — no external service required. The interface (#add, #search) is intentionally small so a Chroma/Qdrant-backed store can be swapped in later.

Defined Under Namespace

Classes: Entry

Instance Method Summary collapse

Constructor Details

#initializeStore

Returns a new instance of Store.



14
15
16
# File 'lib/rcrewai/knowledge/store.rb', line 14

def initialize
  @entries = []
end

Instance Method Details

#add(text, vector) ⇒ Object



18
19
20
# File 'lib/rcrewai/knowledge/store.rb', line 18

def add(text, vector)
  @entries << Entry.new(text, vector)
end

#empty?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/rcrewai/knowledge/store.rb', line 37

def empty?
  @entries.empty?
end

#search(query_vector, k: 3) ⇒ Object

Returns the texts of the top-k entries most similar to query_vector.



23
24
25
26
27
28
29
30
31
# File 'lib/rcrewai/knowledge/store.rb', line 23

def search(query_vector, k: 3)
  return [] if @entries.empty?

  @entries
    .map { |e| [e.text, cosine_similarity(query_vector, e.vector)] }
    .sort_by { |(_text, score)| -score }
    .first(k)
    .map(&:first)
end

#sizeObject



33
34
35
# File 'lib/rcrewai/knowledge/store.rb', line 33

def size
  @entries.length
end