26 lines
836 B
Ruby
26 lines
836 B
Ruby
# frozen_string_literal: true
|
|
|
|
class CreateAiTopicEmbeddingsTable < ActiveRecord::Migration[7.0]
|
|
def change
|
|
truncation = DiscourseAi::Embeddings::Strategies::Truncation.new
|
|
vector_reps =
|
|
[
|
|
DiscourseAi::Embeddings::VectorRepresentations::AllMpnetBaseV2,
|
|
DiscourseAi::Embeddings::VectorRepresentations::TextEmbeddingAda002,
|
|
].map { |k| k.new(truncation) }
|
|
|
|
vector_reps.each do |vector_rep|
|
|
create_table vector_rep.table_name.to_sym, 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(#{vector_rep.dimensions})", null: false
|
|
t.timestamps
|
|
|
|
t.index :topic_id, unique: true
|
|
end
|
|
end
|
|
end
|
|
end
|