tinyhumansai/openhuman · error

memory_vector_search: embedding provider failed: {e}

Error message

memory_vector_search: embedding provider failed: {e}

What it means

Constructing or initializing the embedding provider for the query failed. `memory_vector_search` must embed the query text before comparing it to chunk vectors; this fires when provider resolution or setup errors (missing API key, unknown provider name, unreachable configured endpoint), with `{e}` naming the provider-side cause.

Source

Thrown at src/openhuman/memory/tools/search/vector_search.rs:139

        let config = config_rpc::load_config_with_timeout()
            .await
            .map_err(|e| anyhow::anyhow!("memory_vector_search: load config failed: {e}"))?;

        // Chunks are read through the bound driver, not by opening the store
        // in this process. Before the module port this called
        // `list_chunks(&config, …)` directly, which resolved the workspace path
        // and opened the same SQLite database the loaded module already had
        // open — two engine instances over one file, with the module not
        // authoritative. See `docs/specs/2026-08-13-memory-module-port.md` §2.1.
        let guard = active_memory_guard()
            .await
            .map_err(|e| anyhow::anyhow!("memory_vector_search: {e}"))?;
        let chunk_reader = guard.as_chunks().ok_or_else(|| {
            anyhow::anyhow!("memory_vector_search: memory driver does not support the chunk family")
        })?;

        let embedder = provider_from_config(&config)
            .map_err(|e| anyhow::anyhow!("memory_vector_search: embedding provider failed: {e}"))?;

        let query_vec = embedder
            .embed_one(&parsed.query)
            .await
            .map_err(|e| anyhow::anyhow!("memory_vector_search: embedding query failed: {e}"))?;

        let source_kind = match parsed.source_kind.as_deref() {
            Some(s) => Some(
                SourceKind::parse(s).map_err(|e| anyhow::anyhow!("memory_vector_search: {e}"))?,
            ),
            None => None,
        };

        let since_ms = parsed.time_window_days.map(|days| {
            let now_ms = chrono::Utc::now().timestamp_millis();
            now_ms - (i64::from(days) * 86_400_000)
        });

View on GitHub (pinned to 7491200858)

Solutions

  1. Check `{e}` for the provider-specific cause
  2. Verify embedding provider config (API key, base URL, model) in settings
  3. Confirm network reachability for hosted embedding endpoints
  4. Retry once for transient provider errors
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src/openhuman/memory/tools/search/vector_search.rs:139 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/eb50e92294d86224. Report an issue: GitHub.