Module: Whoosh::VectorStore

Defined in:
lib/whoosh/vector_store.rb,
lib/whoosh/vector_store/memory_store.rb

Defined Under Namespace

Classes: MemoryStore

Class Method Summary collapse

Class Method Details

.build(config_data = {}) ⇒ Object

Auto-detect: zvec gem → use it, otherwise → in-memory



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/whoosh/vector_store.rb', line 8

def self.build(config_data = {})
  vector_config = config_data["vector"] || {}
  adapter = vector_config["adapter"] || "auto"

  case adapter
  when "auto"
    # Try zvec first, fall back to memory
    if zvec_available?
      require "whoosh/vector_store/zvec_store"
      ZvecStore.new(**zvec_options(vector_config))
    else
      MemoryStore.new
    end
  when "memory"
    MemoryStore.new
  when "zvec"
    require "whoosh/vector_store/zvec_store"
    ZvecStore.new(**zvec_options(vector_config))
  else
    MemoryStore.new
  end
end

.zvec_available?Boolean

Returns:

  • (Boolean)


31
32
33
34
35
36
# File 'lib/whoosh/vector_store.rb', line 31

def self.zvec_available?
  require "zvec"
  true
rescue LoadError
  false
end

.zvec_options(config) ⇒ Object



38
39
40
# File 'lib/whoosh/vector_store.rb', line 38

def self.zvec_options(config)
  { path: config["path"] || "db/vectors" }
end