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
-
#generate_vector_embeddings(attribute = :embedding) ⇒ Object
Instance Methods.
- #vector_source_text(attribute = :embedding) ⇒ Object
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 (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.(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 |