29 lines
866 B
Ruby
29 lines
866 B
Ruby
# frozen_string_literal: true
|
|
|
|
class CreateAiTopicEmbeddingsTable < ActiveRecord::Migration[7.0]
|
|
def change
|
|
models = [
|
|
DiscourseAi::Embeddings::Models::AllMpnetBaseV2,
|
|
DiscourseAi::Embeddings::Models::TextEmbeddingAda002,
|
|
]
|
|
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
|