tinyhumansai/openhuman · error

memory_vector_search: load embeddings failed: {e}

Error message

memory_vector_search: load embeddings failed: {e}

What it means

After chunks were listed successfully, loading the stored embedding vectors for those chunk ids failed. The tool needs the precomputed vectors to score against the embedded query; this fires in the vector-fetch step and typically indicates missing/stale embeddings for the listed chunks or a store read fault, with `{e}` giving the exact cause.

Source

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

            exclude_dropped: false,
        };

        let chunks = chunk_reader
            .list_chunks(&query, None)
            .await
            .map_err(|e| anyhow::anyhow!("memory_vector_search: list chunks failed: {e}"))?;

        if chunks.is_empty() {
            return Ok(ToolResult::success("No chunks found matching filters."));
        }

        // Get embeddings for these chunks
        let chunk_ids: Vec<String> = chunks.iter().map(|c| c.id.clone()).collect();
        let model_sig = embedder.signature();
        let embeddings: std::collections::HashMap<String, Vec<f32>> = chunk_reader
            .chunk_embeddings(&chunk_ids, &model_sig)
            .await
            .map_err(|e| anyhow::anyhow!("memory_vector_search: load embeddings failed: {e}"))?
            .into_iter()
            .map(|embedding| (embedding.chunk_id, embedding.vector))
            .collect();

        // Score each chunk
        let mut scored: Vec<(usize, f64, &[f32])> = Vec::new();

        for (idx, chunk) in chunks.iter().enumerate() {
            let Some(emb) = embeddings.get(&chunk.id) else {
                continue;
            };
            if emb.len() != query_vec.len() {
                continue;
            }
            let score = cosine_similarity(&query_vec, emb);
            if score >= min_score {
                scored.push((idx, score, emb.as_slice()));
            }

View on GitHub (pinned to 7491200858)

Solutions

  1. Check `{e}` for whether embeddings are missing vs unreadable
  2. Rebuild embeddings for the affected chunks (re-ingest or embedding backfill)
  3. Verify the embedding model signature matches the one that produced the stored vectors
  4. Retry for transient store faults
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src/openhuman/memory/tools/search/vector_search.rs:191 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/beb70a97e0f762a9. Report an issue: GitHub.