Class: RCrewAI::Knowledge::Store
- Inherits:
-
Object
- Object
- RCrewAI::Knowledge::Store
- 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
- #add(text, vector) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize ⇒ Store
constructor
A new instance of Store.
-
#search(query_vector, k: 3) ⇒ Object
Returns the texts of the top-k entries most similar to
query_vector. - #size ⇒ Object
Constructor Details
#initialize ⇒ Store
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
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 |
#size ⇒ Object
33 34 35 |
# File 'lib/rcrewai/knowledge/store.rb', line 33 def size @entries.length end |