Class: Leann::Backend::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/leann/backend/base.rb

Overview

Base class for vector storage backends

Subclasses must implement:

  • #build(embeddings, ids, path) - build index from embeddings

  • #search(query_embedding, limit:) - search for nearest neighbors

  • .load(path) - load existing index

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dimensions:) ⇒ Base

Returns a new instance of Base.

Parameters:

  • dimensions (Integer)


17
18
19
# File 'lib/leann/backend/base.rb', line 17

def initialize(dimensions:)
  @dimensions = dimensions
end

Instance Attribute Details

#dimensionsInteger (readonly)

Returns Embedding dimensions.

Returns:

  • (Integer)

    Embedding dimensions



14
15
16
# File 'lib/leann/backend/base.rb', line 14

def dimensions
  @dimensions
end

Class Method Details

.load(path) ⇒ Base

Load an existing index

Parameters:

  • path (String)

Returns:

Raises:

  • (NotImplementedError)


46
47
48
# File 'lib/leann/backend/base.rb', line 46

def self.load(path)
  raise NotImplementedError, "Subclasses must implement .load"
end

Instance Method Details

#build(embeddings, ids, path) ⇒ Object

Build an index from embeddings

Parameters:

  • embeddings (Array<Array<Float>>)
  • ids (Array<String>)
  • path (String)

    Index path

Raises:

  • (NotImplementedError)


27
28
29
# File 'lib/leann/backend/base.rb', line 27

def build(embeddings, ids, path)
  raise NotImplementedError, "Subclasses must implement #build"
end

#search(query_embedding, limit:) ⇒ Array<Array(String, Float)>

Search for nearest neighbors

Parameters:

  • query_embedding (Array<Float>)
  • limit (Integer)

Returns:

  • (Array<Array(String, Float)>)

    Array of [id, score] pairs

Raises:

  • (NotImplementedError)


37
38
39
# File 'lib/leann/backend/base.rb', line 37

def search(query_embedding, limit:)
  raise NotImplementedError, "Subclasses must implement #search"
end