Module: Legion::Extensions::Privatecore::Helpers::Similarity
- Defined in:
- lib/legion/extensions/privatecore/helpers/similarity.rb
Class Method Summary collapse
Class Method Details
.cosine_similarity(vec_a:, vec_b:) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/legion/extensions/privatecore/helpers/similarity.rb', line 10 def cosine_similarity(vec_a:, vec_b:) return 0.0 if vec_a.nil? || vec_b.nil? return 0.0 if vec_a.empty? || vec_b.empty? return 0.0 if vec_a.length != vec_b.length dot = vec_a.zip(vec_b).sum { |a, b| a * b } mag_a = Math.sqrt(vec_a.sum { |v| v * v }) mag_b = Math.sqrt(vec_b.sum { |v| v * v }) return 0.0 if mag_a.zero? || mag_b.zero? dot / (mag_a * mag_b) end |