Module: ClaudeMemory::Embeddings

Defined in:
lib/claude_memory/embeddings/resolver.rb,
lib/claude_memory/embeddings/generator.rb,
lib/claude_memory/embeddings/inspector.rb,
lib/claude_memory/embeddings/similarity.rb,
lib/claude_memory/embeddings/api_adapter.rb,
lib/claude_memory/embeddings/model_registry.rb,
lib/claude_memory/embeddings/dimension_check.rb,
lib/claude_memory/embeddings/fastembed_adapter.rb

Defined Under Namespace

Classes: ApiAdapter, DimensionCheck, FastembedAdapter, Generator, Inspector, ModelRegistry, Similarity

Class Method Summary collapse

Class Method Details

.resolve(name = nil, model: nil, env: ENV) ⇒ Object

Resolves an embedding provider by name, model, or ENV.

Provider selection (in priority order):

1. Explicit name parameter
2. CLAUDE_MEMORY_EMBEDDING_PROVIDER env var
3. Default: "tfidf"

Model selection is forwarded to the provider via CLAUDE_MEMORY_EMBEDDING_MODEL or the model parameter. The model can also imply the provider:

- "BAAI/bge-small-en-v1.5" → fastembed
- "text-embedding-3-small" → api

Examples:

Embeddings.resolve                                    # tfidf default
Embeddings.resolve("fastembed")                       # fastembed with default model
Embeddings.resolve("fastembed", model: "BAAI/bge-base-en-v1.5")
Embeddings.resolve(model: "text-embedding-3-small")   # auto-detects api provider


23
24
25
26
27
28
29
30
31
32
33
# File 'lib/claude_memory/embeddings/resolver.rb', line 23

def self.resolve(name = nil, model: nil, env: ENV)
  model ||= env["CLAUDE_MEMORY_EMBEDDING_MODEL"]
  provider = name || env["CLAUDE_MEMORY_EMBEDDING_PROVIDER"] || infer_provider(model) || "tfidf"

  case provider
  when "tfidf" then Generator.new
  when "fastembed" then FastembedAdapter.new(model_name: model, env: env)
  when "api" then ApiAdapter.new(model: model, env: env)
  else raise ArgumentError, "Unknown embedding provider: #{provider}. Available: tfidf, fastembed, api"
  end
end