Class: ClaudeMemory::Embeddings::FastembedAdapter
- Inherits:
-
Object
- Object
- ClaudeMemory::Embeddings::FastembedAdapter
- Defined in:
- lib/claude_memory/embeddings/fastembed_adapter.rb
Overview
Adapter wrapping fastembed-rb for high-quality local embeddings. Supports any model available in fastembed-rb’s SUPPORTED_MODELS.
Model selection (in priority order):
1. Explicit model_name parameter
2. CLAUDE_MEMORY_EMBEDDING_MODEL env var
3. Default: BAAI/bge-small-en-v1.5 (384-dim, ~67MB ONNX)
Dimensions are resolved from the ModelRegistry for known models, or probed from fastembed’s ModelInfo for unknown models.
Usage:
adapter = FastembedAdapter.new
query_vec = adapter.generate("What database?") # query encoding
passage_vec = adapter.generate_passage("Uses PostgreSQL") # passage encoding
# Use a larger model:
adapter = FastembedAdapter.new(model_name: "BAAI/bge-base-en-v1.5")
adapter.dimensions # => 768
Constant Summary collapse
- DEFAULT_MODEL =
"BAAI/bge-small-en-v1.5"
Instance Attribute Summary collapse
-
#dimensions ⇒ Object
readonly
Returns the value of attribute dimensions.
-
#model_name ⇒ Object
readonly
Returns the value of attribute model_name.
Instance Method Summary collapse
-
#generate(text) ⇒ Array<Float>
Generate query embedding (optimized for search queries).
-
#generate_passage(text) ⇒ Array<Float>
Generate passage embedding (optimized for document/fact indexing).
-
#initialize(model_name: nil, env: ENV) ⇒ FastembedAdapter
constructor
A new instance of FastembedAdapter.
- #name ⇒ Object
Constructor Details
#initialize(model_name: nil, env: ENV) ⇒ FastembedAdapter
Returns a new instance of FastembedAdapter.
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/claude_memory/embeddings/fastembed_adapter.rb', line 32 def initialize(model_name: nil, env: ENV) @model_name = model_name || env["CLAUDE_MEMORY_EMBEDDING_MODEL"] || DEFAULT_MODEL @dimensions = resolve_dimensions(@model_name) require "fastembed" @model = Fastembed::TextEmbedding.new(model_name: @model_name) # If dimensions weren't known from registry, probe from fastembed @dimensions ||= rescue LoadError raise LoadError, "fastembed gem is required for FastembedAdapter. Add `gem 'fastembed'` to your Gemfile." end |
Instance Attribute Details
#dimensions ⇒ Object (readonly)
Returns the value of attribute dimensions.
28 29 30 |
# File 'lib/claude_memory/embeddings/fastembed_adapter.rb', line 28 def dimensions @dimensions end |
#model_name ⇒ Object (readonly)
Returns the value of attribute model_name.
28 29 30 |
# File 'lib/claude_memory/embeddings/fastembed_adapter.rb', line 28 def model_name @model_name end |
Instance Method Details
#generate(text) ⇒ Array<Float>
Generate query embedding (optimized for search queries)
49 50 51 52 53 |
# File 'lib/claude_memory/embeddings/fastembed_adapter.rb', line 49 def generate(text) return zero_vector if text.nil? || text.empty? @model.(text).first.to_a end |
#generate_passage(text) ⇒ Array<Float>
Generate passage embedding (optimized for document/fact indexing)
58 59 60 61 62 |
# File 'lib/claude_memory/embeddings/fastembed_adapter.rb', line 58 def generate_passage(text) return zero_vector if text.nil? || text.empty? @model.(text).first.to_a end |
#name ⇒ Object
30 |
# File 'lib/claude_memory/embeddings/fastembed_adapter.rb', line 30 def name = "fastembed" |