Class: KairosMcp::VectorSearch::FallbackSearch
- Defined in:
- lib/kairos_mcp/vector_search/fallback_search.rb
Overview
Fallback search implementation using regex matching
Used when hnswlib/informers gems are not installed. Provides basic keyword matching without semantic understanding.
Instance Method Summary collapse
- #add(id, text, metadata: {}) ⇒ Object
- #count ⇒ Object
-
#initialize ⇒ FallbackSearch
constructor
A new instance of FallbackSearch.
- #load ⇒ Object
- #ready? ⇒ Boolean
- #rebuild(documents) ⇒ Object
- #remove(id) ⇒ Object
- #save ⇒ Object
- #search(query, k: 5) ⇒ Object
- #semantic? ⇒ Boolean
Constructor Details
#initialize ⇒ FallbackSearch
Returns a new instance of FallbackSearch.
13 14 15 16 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 13 def initialize @documents = {} @ready = true end |
Instance Method Details
#add(id, text, metadata: {}) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 18 def add(id, text, metadata: {}) @documents[id.to_s] = { text: text.to_s.downcase, original_text: text.to_s, metadata: } true end |
#count ⇒ Object
71 72 73 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 71 def count @documents.size end |
#load ⇒ Object
62 63 64 65 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 62 def load # Fallback search doesn't persist true end |
#ready? ⇒ Boolean
67 68 69 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 67 def ready? @ready end |
#rebuild(documents) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 49 def rebuild(documents) @documents.clear documents.each do |doc| add(doc[:id], doc[:text], metadata: doc[:metadata] || {}) end true end |
#remove(id) ⇒ Object
27 28 29 30 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 27 def remove(id) @documents.delete(id.to_s) true end |
#save ⇒ Object
57 58 59 60 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 57 def save # Fallback search doesn't persist - documents are rebuilt on startup true end |
#search(query, k: 5) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 32 def search(query, k: 5) return [] if @documents.empty? query_terms = tokenize(query.to_s.downcase) return [] if query_terms.empty? scored = @documents.map do |id, doc| score = calculate_score(query_terms, doc[:text]) { id: id, score: score, metadata: doc[:metadata] } end scored .select { |r| r[:score] > 0 } .sort_by { |r| -r[:score] } .first(k) end |
#semantic? ⇒ Boolean
75 76 77 |
# File 'lib/kairos_mcp/vector_search/fallback_search.rb', line 75 def semantic? false end |