Module: ActiveRecordVector::Model

Extended by:
ActiveSupport::Concern
Defined in:
lib/active_record_vector/model.rb

Overview

Module included in ActiveRecord models to provide vector capabilities.

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



8
9
10
# File 'lib/active_record_vector/model.rb', line 8

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#generate_vector_embeddings(attribute = :embedding) ⇒ Object

Instance Methods



119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/active_record_vector/model.rb', line 119

def generate_vector_embeddings(attribute = :embedding)
  cfg = self.class.vector_configs[attribute.to_sym]
  return unless cfg

  source_text = vector_source_text(attribute)
  return if source_text.strip.empty?

  provider = ActiveRecordVector.provider_for(cfg[:provider], cfg[:provider_options])
  vector = provider.embed(source_text)

  public_send("#{attribute}=", vector)
end

#vector_source_text(attribute = :embedding) ⇒ Object



132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/active_record_vector/model.rb', line 132

def vector_source_text(attribute = :embedding)
  cfg = self.class.vector_configs[attribute.to_sym]
  return "" unless cfg

  from_attrs = cfg[:from]
  parts = from_attrs.filter_map do |attr|
    val = respond_to?(attr) ? public_send(attr) : nil
    val.to_s.strip unless val.nil? || val.to_s.strip.empty?
  end

  parts.join("\n\n")
end