Class: Desiru::Optimizers::KNNFewShot

Inherits:
Base
  • Object
show all
Defined in:
lib/desiru/optimizers/knn_few_shot.rb

Overview

KNNFewShot optimizer that uses k-Nearest Neighbors to find similar examples for few-shot learning. It finds the most similar training examples to each input and uses them as demonstrations.

Instance Attribute Summary

Attributes inherited from Base

#config, #metric

Instance Method Summary collapse

Methods inherited from Base

#evaluate, #optimize_module

Constructor Details

#initialize(config = {}) ⇒ KNNFewShot

Returns a new instance of KNNFewShot.



9
10
11
12
13
14
# File 'lib/desiru/optimizers/knn_few_shot.rb', line 9

def initialize(config = {})
  super
  @k = config[:k] || 3 # Number of nearest neighbors
  @similarity_metric = config[:similarity_metric] || :cosine
  @embedding_cache = {}
end

Instance Method Details

#compile(program, trainset, **_kwargs) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/desiru/optimizers/knn_few_shot.rb', line 16

def compile(program, trainset, **_kwargs)
  # Build index of training examples
  build_example_index(trainset)

  # Create optimized program with KNN-based few-shot selection
  optimized_program = program.dup

  # Wrap each predict module with KNN few-shot enhancement
  optimized_program.predictors.each do |name, predictor|
    optimized_predictor = create_knn_predictor(predictor, name)
    optimized_program.instance_variable_set("@#{name}", optimized_predictor)
  end

  optimized_program
end