MemoryRecordExtractor
Extractor of memory records during message ingestion.
This is a functional interface (SAM) that defines how a list of messages should be transformed into a list of MemoryRecords for storage. It provides flexibility in how messages are filtered, transformed, and converted into memory records while maintaining type safety.
Pre-built implementations are available for common ingestion patterns:
FilteringMemoryRecordExtractor - Filters messages by role
Usage Examples
Using pre-built extractors (Kotlin):
// Extract User and Assistant messages (default)
val extractor = FilteringMemoryRecordExtractor()
// Extract only User messages
val extractor = FilteringMemoryRecordExtractor(
messageRolesToExtract = setOf(Message.Role.User)
)Content copied to clipboard
Custom implementation as lambda (Kotlin):
val customExtractor = MemoryRecordExtractor { messages ->
messages
.filter { it.role == Message.Role.Assistant }
.extract { MemoryRecord.Plain(content = summarize(it.content)) }
}Content copied to clipboard
Custom implementation as lambda (Java):
MemoryRecordExtractor customExtractor = (messages) ->
messages.stream()
.filter(m -> m.getRole() == Message.Role.Assistant)
.extract(m -> new MemoryRecord.Plain(m.getContent()))
.collect(Collectors.toList());Content copied to clipboard