Class: Phronomy::VectorStore::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/phronomy/vector_store/base.rb

Overview

Abstract interface for vector stores.

Implementations manage a collection of (embedding, metadata) pairs and support similarity search.

Direct Known Subclasses

InMemory, Pgvector, RedisSearch

Instance Method Summary collapse

Instance Method Details

#add(id:, embedding:, metadata: {}) ⇒ Object

Add a document with its vector embedding.

Parameters:

  • id (String)

    unique document identifier

  • embedding (Array<Float>)

    vector embedding

  • metadata (Hash) (defaults to: {})

    arbitrary metadata (e.g. the original message object)

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/phronomy/vector_store/base.rb', line 15

def add(id:, embedding:, metadata: {})
  raise NotImplementedError, "#{self.class}#add is not implemented"
end

#clearObject

Remove all documents.

Raises:

  • (NotImplementedError)


36
37
38
# File 'lib/phronomy/vector_store/base.rb', line 36

def clear
  raise NotImplementedError, "#{self.class}#clear is not implemented"
end

#remove(id:) ⇒ Object

Remove a single document by id.

Parameters:

  • id (String)

    document identifier

Raises:

  • (NotImplementedError)


31
32
33
# File 'lib/phronomy/vector_store/base.rb', line 31

def remove(id:)
  raise NotImplementedError, "#{self.class}#remove is not implemented"
end

#search(query_embedding:, k: 5) ⇒ Array<Hash>

Return the k most similar documents to the query embedding.

Parameters:

  • query_embedding (Array<Float>)
  • k (Integer) (defaults to: 5)

    number of results

Returns:

  • (Array<Hash>)

    each element: { id:, score:, metadata: }

Raises:

  • (NotImplementedError)


24
25
26
# File 'lib/phronomy/vector_store/base.rb', line 24

def search(query_embedding:, k: 5)
  raise NotImplementedError, "#{self.class}#search is not implemented"
end