Recollect.Config (recollect v0.5.1)

Copy Markdown View Source

Runtime configuration resolution for Recollect.

The host application provides all configuration via config :recollect. Recollect never starts its own Repo, stores API keys, or makes assumptions about the host app's secret management.

Credentials Resolution

Instead of static API keys, Recollect uses a :credentials_fn callback that the host app provides. This function is called at runtime to fetch credentials from whatever secret system the host app uses.

Example Configuration

# Homunculus (uses SecretStore)
config :recollect,
  repo: Homunculus.Repo,
  embedding: [
    provider: Recollect.Embedding.OpenRouter,
    credentials_fn: fn ->
      case Homunculus.SecretStore.get("openrouter", "api_key") do
        {:ok, key} -> %{api_key: key, model: "google/text-embedding-004", dimensions: 768}
        _ -> :disabled
      end
    end
  ]

# Strategic Change Engine (uses LlmCredential)
config :recollect,
  repo: StrategicChangeEngine.Repo,
  embedding: [
    provider: Recollect.Embedding.OpenRouter,
    credentials_fn: fn ->
      case StrategicChangeEngine.Admin.LlmCredential.active_for_provider(:openrouter, authorize?: false) do
        {:ok, cred} -> %{api_key: cred.api_key, model: "google/text-embedding-004", dimensions: 768}
        _ -> :disabled
      end
    end
  ]

Summary

Functions

The configured database adapter module.

Embedding vector dimensions (resolved from credentials, static config, or provider default).

Resolve embedding credentials at runtime via the host app's secret system.

Check if embedding is available.

Build embedding opts by merging resolved credentials with static config.

Embedding provider module (implements Recollect.EmbeddingProvider).

Extraction provider options (includes llm_fn from host app).

Extraction provider module (implements Recollect.ExtractionProvider).

The Ecto Repo module provided by the host app.

Table name prefix for all Recollect tables.

TaskSupervisor name for async operations.

Functions

adapter()

The configured database adapter module.

dimensions()

Embedding vector dimensions (resolved from credentials, static config, or provider default).

embedding_credentials()

Resolve embedding credentials at runtime via the host app's secret system.

Calls the :credentials_fn from config. Returns a map with at minimum :api_key, plus optional :model, :base_url, :dimensions.

Returns :disabled if no credentials are available.

embedding_enabled?()

Check if embedding is available.

embedding_opts()

Build embedding opts by merging resolved credentials with static config.

This is what gets passed to the embedding provider's generate/2 callback.

embedding_provider()

Embedding provider module (implements Recollect.EmbeddingProvider).

The host application must configure a provider via config :recollect.

extraction_opts()

Extraction provider options (includes llm_fn from host app).

extraction_provider()

Extraction provider module (implements Recollect.ExtractionProvider).

repo()

The Ecto Repo module provided by the host app.

table_prefix()

Table name prefix for all Recollect tables.

task_supervisor()

TaskSupervisor name for async operations.