llamaindex-memory 0.0 on LoCoMollm-baseline 0.0 on LoCoMomem0-local 0.0 on LongMemEvalmem0-local 0.0 on LongMemEvalllamaindex-memory 0.0 on LongMemEvalllm-baseline 0.0 on LongMemEvallangchain-memory 0.0 on LongMemEvalcognee 0.0 on LongMemEval13 systems independently scored64 systems indexedllamaindex-memory 0.0 on LoCoMollm-baseline 0.0 on LoCoMomem0-local 0.0 on LongMemEvalmem0-local 0.0 on LongMemEvalllamaindex-memory 0.0 on LongMemEvalllm-baseline 0.0 on LongMemEvallangchain-memory 0.0 on LongMemEvalcognee 0.0 on LongMemEval13 systems independently scored64 systems indexed
Methodology
Adapter Contractv1.0

Conversational Memory Adapter Spec

Adapter contract for conversational memory systems. These systems store and retrieve information from multi-turn dialogue, maintaining context across sessions.

Required methods

def setup(self) -> None

Initialize the memory system. Called once before any benchmark items. Must be idempotent.

def reset(self) -> None

Clear all stored memories. Called between benchmark items to ensure isolation.

def teardown(self) -> None

Clean up resources. Called once after all benchmark items complete.

def ingest(self, turns: List[Dict[str, Any]]) -> None

Store a conversation history. Each turn has 'role' (user/assistant) and 'content' keys.

def recall(self, query: str) -> str

Retrieve relevant memories for a query. Returns the raw text response from the memory system.

Required capabilities

  • -Multi-turn conversation ingestion
  • -Natural language query recall
  • -Session isolation (reset between items)

Applicable benchmarks

Example implementation

python
"""Example conversational memory adapter."""
from typing import Any, Dict, List, Optional
from benchd_harness.adapters.base import BaseAdapter


class MyMemoryAdapter(BaseAdapter):

    @property
    def name(self) -> str:
        return "my-memory"

    @property
    def version(self) -> Optional[str]:
        return "1.0.0"

    def setup(self) -> None:
        # Initialize your memory system
        self._client = MyMemoryClient()

    def reset(self) -> None:
        # Clear all memories for isolation
        self._client.clear()

    def teardown(self) -> None:
        self._client.close()

    def ingest(self, turns: List[Dict[str, Any]]) -> None:
        for turn in turns:
            self._client.add_message(
                role=turn["role"],
                content=turn["content"],
            )

    def recall(self, query: str) -> str:
        return self._client.search(query)

Quick start

Install

bash
pip install benchd-harness

Validate & test

bash
benchd adapter validate my-memory && benchd run -a my-memory -b smoke-memory-v0

Stable URL: benchd.ai/spec/adapter/conversational/v10
Version: 1.0 | This spec is referenced in adapter manifests and will not change within the same major version.

Command Palette

Search for a command to run...