Skip to main content

Overview

Multimodal Extraction is how your application turns real-world input into Memind memory. Memind can extract memory from conversations, streaming messages, documents, images, audio, tool calls, and custom raw content. These inputs enter the same memory construction pipeline and can become Raw Data, Memory Items, Item Graph relationships, Memory Threads, and Insight Tree updates. This page focuses on the extraction APIs, supported content types, plugin setup, response format, and usage patterns. If you want to run a complete example first, start with Quickstart. For the internal memory construction model, see Memory Construction.

Supported content types

Memind supports multiple content types through built-in conversation support and raw-data plugins. The important idea is that Memind does not treat memory as only chat history. Different input types are normalized into Raw Data first, then processed into structured and connected memory.

Plugin setup

Conversation extraction is built into memind-core. Document, image, audio, and tool-call extraction require the matching raw-data plugin dependency and runtime registration.

Maven dependencies

Add the plugin you need.

Runtime registration

Register the plugin on the Memind runtime.
You can register multiple raw-data plugins when your application accepts multiple content types.

Spring Boot starters

Spring Boot users can use the matching starters to auto-configure raw-data plugins. The snippets below show the extraction entry points after the required plugin is available.

Extraction modes

Choose the extraction mode based on how content arrives in your application. Most applications use more than one mode. For example, a chatbot may use addMessage() during the conversation, commit() at session end, and extract() when the user uploads a document or when the agent produces important tool output.

Extract conversation messages

Use addMessages() when you already have a complete conversation segment. This is useful for:
  • examples and tests
  • importing a transcript
  • processing a finished conversation
  • extracting memory from a known context window
Memind treats the message list as one extraction unit. The pipeline can preserve the source as Raw Data, generate captions, extract Memory Items, update graph and thread projections, and schedule Insight Tree updates depending on configuration.

Extract streaming messages

Use addMessage() when messages arrive one at a time. This is the common mode for chatbots, coding agents, and long-running assistants.
In streaming mode, Memind does not need to extract memory from every single message immediately. Messages are first stored in the conversation buffer. Memind then decides when the accumulated context is ready to commit. When a commit boundary is reached, extraction is triggered. If the boundary is not ready yet, the call may complete without producing a new extraction result. This avoids turning every chat turn into a disconnected memory item.

Commit buffered context

Use commit() to force the current conversation buffer into memory. This is useful when:
  • a session ends
  • an agent run finishes
  • the application is shutting down
  • you want to make sure the latest buffered context is written
For real-time agents, a common pattern is:
If the buffer is empty, the commit returns an empty extraction result.

Extract documents

Document extraction requires memind-plugin-rawdata-document. Use the document plugin to extract memory from text files, Markdown, HTML, CSV, PDF, and other parser-supported document formats. The plugin parses the content, segments it into document-aware sections, generates captions, and sends the normalized content into Memind’s memory construction pipeline.
documentContent is created with the document plugin’s content model or parser flow. See the document plugin or Java SDK docs for construction examples. Document extraction is useful for:
  • project docs
  • runbooks
  • design documents
  • meeting notes
  • release notes
  • support articles
  • internal knowledge bases
Document captions are especially useful because they preserve source-level context behind extracted Memory Items.

Extract images

Image extraction requires memind-plugin-rawdata-image. Use the image plugin to extract memory from screenshots, diagrams, UI captures, whiteboards, photos, or other visual artifacts. The plugin can analyze image content, produce image semantics, generate captions, and pass the resulting representation into memory extraction.
imageContent is created with the image plugin’s content model or parser flow. See the image plugin or Java SDK docs for construction examples. Image extraction is useful when visual context matters, such as:
  • UI screenshots
  • architecture diagrams
  • error screenshots
  • visual bug reports
  • whiteboard notes
  • product or design references
Instead of losing visual context, Memind can convert images into source-level Raw Data that can support later memory retrieval.

Extract audio

Audio extraction requires memind-plugin-rawdata-audio. Use the audio plugin to extract memory from recordings, transcripts, voice notes, meetings, interviews, support calls, or agent sessions that include spoken context. Audio content can be transcribed, segmented, captioned, and processed into memory.
audioContent is created with the audio plugin’s content model or parser flow. See the audio plugin or Java SDK docs for construction examples. Audio extraction can preserve:
  • transcript segments
  • speaker or timing metadata when available
  • summarized captions
  • source references
  • extracted facts, events, preferences, and decisions
This lets Memind turn spoken context into searchable and retrievable memory.

Extract tool calls

Tool-call extraction requires memind-plugin-rawdata-toolcall. Use the tool-call plugin to extract memory from agent tool usage. Tool calls are important for agents because they capture what the agent tried, what worked, what failed, and what should be reused later.
toolCalls is a list of tool-call records containing tool name, input, output, status, duration, and related metadata. Tool-call extraction is useful for:
  • coding agents
  • research agents
  • automation agents
  • test and deployment agents
  • long-running task agents
Tool-call memory can help Memind extract agent-scoped memory such as:
  • tool experience
  • durable directives
  • reusable playbooks
  • resolved problems
  • failed attempts
  • successful workflows
This is one of the main ways Memind helps agents remember their own operating experience, not only user preferences.

Extract custom raw content

Use extract() for custom content types. Custom raw content is useful when your application has domain-specific records that are not normal chat messages, documents, images, audio, or tool calls. Examples include:
  • internal business events
  • workflow records
  • logs
  • incident reports
  • CRM records
  • product analytics events
  • domain-specific artifacts
For advanced use cases, implement a custom RawContent type and a raw-data processor or plugin. This lets Memind normalize your content into Raw Data before extracting memory.

Configure extraction

Most applications can start with the default extraction configuration. Use custom configuration when you need to control language, chunking, insight behavior, thread behavior, or plugin-specific processing. Example:
Start with defaults, inspect the generated memory in Memind UI, then tune extraction behavior when needed.

Response format

All extraction modes return an ExtractionResult.
insightPending is important because Insight Tree construction may be asynchronous. A successful extraction can write Raw Data and Memory Items immediately while insight construction continues in the background.

Inspect extracted memory

Use Memind UI to inspect what extraction produced. Useful inspection points include: If extraction does not look right, inspect Raw Data first. Raw Data captions usually show whether the source content was segmented and understood correctly before higher-level memory was extracted.

Best practices

Use the extraction mode that matches how content arrives:
  • Use addMessages() for complete conversation segments.
  • Use addMessage() for real-time agents and chatbots.
  • Use commit() at session end or before shutdown.
  • Use extract() for documents, images, audio, tool calls, and custom raw content.
  • Use plugin helpers when available.
Set up the right plugin:
  • Conversation extraction works with memind-core.
  • Document extraction needs the document raw-data plugin.
  • Image extraction needs the image raw-data plugin.
  • Audio extraction needs the audio raw-data plugin.
  • Tool-call extraction needs the tool-call raw-data plugin.
Preserve source context:
  • Keep useful metadata such as source client, content type, timestamps, file names, URLs, and tool names.
  • Prefer source-aware content objects over plain text when the source matters.
  • Inspect Raw Data captions before tuning item extraction.
Avoid fragmented memory:
  • Do not force every single chat message into memory as a complete unit.
  • Let streaming messages accumulate until there is enough context.
  • Commit the final buffer when a run ends.
Tune gradually:
  • Start with default extraction behavior.
  • Review Raw Data, Memory Items, Threads, and Insights in Memind UI.
  • Adjust language, chunking, plugin options, or insight behavior only when the output shows a real need.