mem0ai/mem0 · error · Error

Method 'list' not supported by LangchainVectorStore wrapper.

Error message

Method 'list' not supported by LangchainVectorStore wrapper.

What it means

list() is unimplemented because Langchain's core VectorStore interface has no enumeration/scroll capability, and the wrapper cannot generically enumerate documents across heterogeneous stores. It throws (with a console.error) instead of returning an incomplete or fabricated listing.

Source

Thrown at mem0-ts/src/oss/src/vector_stores/langchain.ts:205

    } else {
      console.error(
        `LangchainVectorStore: The underlying Langchain store instance does not seem to support a 'delete' method.`,
      );
      throw new Error(
        "Method 'delete' not available on the provided Langchain VectorStore client.",
      );
    }
  }

  async list(
    filters?: SearchFilters,
    topK: number = 100,
  ): Promise<[VectorStoreResult[], number]> {
    // No standard list method in Langchain core interface.
    console.error(
      `LangchainVectorStore: The 'list' method is not supported by the generic LangchainVectorStore wrapper.`,
    );
    throw new Error(
      "Method 'list' not supported by LangchainVectorStore wrapper.",
    );
    // Could potentially be implemented if the underlying store has a specific list/scroll/query capability.
  }

  async deleteCol(): Promise<void> {
    console.error(
      `LangchainVectorStore: The 'deleteCol' method is not supported by the generic LangchainVectorStore wrapper.`,
    );
    throw new Error(
      "Method 'deleteCol' not supported by LangchainVectorStore wrapper.",
    );
  }

  // --- Wrapper-Specific Methods (In-Memory User ID) ---

  async getUserId(): Promise<string> {
    return this.storeUserId;

View on GitHub (pinned to 001c235229)

Solutions

  1. If the underlying store has its own enumeration API (e.g. FAISS index traversal, Chroma collection.get), call it directly and manage ids yourself.
  2. Maintain your own id registry (DB/file) of inserted memory ids so listing/deleting can be done via targeted delete calls.
  3. Switch to a provider with native list support (qdrant, chroma, pgvector, elasticsearch) if enumeration-based Memory APIs are required.
Defensive patterns

Strategy: fallback

Validate before calling

// Keep an id registry so list() is never required:
await fs.writeFile(`ids/${memoryId}.txt`, JSON.stringify(payload));
// enumeration = reading the registry instead of store.list()

Try / catch

try {
  const [results, total] = await store.list(filters, topK);
} catch (e) {
  if (e instanceof Error && e.message.includes("Method 'list' not supported")) {
    // fallback: enumerate via your own id registry + targeted deletes/lookups
  }
  throw e;
}

Prevention

When it happens

Trigger: Calling store.list(filters, topK) directly, or any Memory flow (e.g. delete-all, history listing, get-all) that internally enumerates vectors while using the langchain provider.

Common situations: Calling memory.getAll() or memory.deleteAll() over a langchain-backed Memory instance; migrating an app from a provider that supports list.

Related errors


AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15). Data as JSON: /api/errors/cbe3842eb9a61dbd. Report an issue: GitHub.