26 lines
808 B
Ruby
26 lines
808 B
Ruby
# frozen_string_literal: true
|
|
|
|
class CreateMultilingualTopicEmbeddingsTable < ActiveRecord::Migration[7.0]
|
|
def change
|
|
models = [DiscourseAi::Embeddings::Models::MultilingualE5Large]
|
|
strategies = [DiscourseAi::Embeddings::Strategies::Truncation]
|
|
|
|
models.each do |model|
|
|
strategies.each do |strategy|
|
|
table_name = "ai_topic_embeddings_#{model.id}_#{strategy.id}".to_sym
|
|
|
|
create_table table_name, id: false do |t|
|
|
t.integer :topic_id, null: false
|
|
t.integer :model_version, null: false
|
|
t.integer :strategy_version, null: false
|
|
t.text :digest, null: false
|
|
t.column :embeddings, "vector(#{model.dimensions})", null: false
|
|
t.timestamps
|
|
|
|
t.index :topic_id, unique: true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|