# frozen_string_literal: true

module DiscourseAi
  module Embeddings
    module VectorRepresentations
      class BgeLargeEn < Base
        def vector_from(text)
          DiscourseAi::Inference::CloudflareWorkersAi
            .perform!(inference_model_name, { text: text })
            .dig(:result, :data)
            .first
        end

        def name
          "bge-large-en"
        end

        def inference_model_name
          "baai/bge-large-en-v1.5"
        end

        def dimensions
          1024
        end

        def max_sequence_length
          512
        end

        def id
          4
        end

        def version
          1
        end

        def pg_function
          "<#>"
        end

        def pg_index_type
          "vector_ip_ops"
        end

        def tokenizer
          DiscourseAi::Tokenizer::BgeLargeEnTokenizer
        end
      end
    end
  end
end
