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: {}, cancellation_token: nil) ⇒ 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)

  • cancellation_token (Phronomy::CancellationToken, nil) (defaults to: nil)

    optional; raises CancellationError when cancelled

Raises:

  • (NotImplementedError)


17
18
19
20
# File 'lib/phronomy/vector_store/base.rb', line 17

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

#clearObject

Remove all documents.

Raises:

  • (NotImplementedError)


43
44
45
# File 'lib/phronomy/vector_store/base.rb', line 43

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)


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

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

#search(query_embedding:, k: 5, cancellation_token: nil) ⇒ 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

  • cancellation_token (Phronomy::CancellationToken, nil) (defaults to: nil)

    optional; raises CancellationError when cancelled

Returns:

  • (Array<Hash>)

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

Raises:

  • (NotImplementedError)


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

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

#sizeInteger

Return the number of documents stored.

Returns:

  • (Integer)

Raises:

  • (NotImplementedError)


51
52
53
# File 'lib/phronomy/vector_store/base.rb', line 51

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