diff --git a/src/memos/mem_reader/read_multi_modal/file_content_parser.py b/src/memos/mem_reader/read_multi_modal/file_content_parser.py index b5305af9a..dfc5691f5 100644 --- a/src/memos/mem_reader/read_multi_modal/file_content_parser.py +++ b/src/memos/mem_reader/read_multi_modal/file_content_parser.py @@ -324,7 +324,7 @@ def parse_fast( # For file content parts, default to LongTermMemory # (since we don't have role information at this level) memory_type = "LongTermMemory" - + file_ids = [file_id] if file_id else [] # Create memory items for each chunk memory_items = [] for chunk_idx, chunk_text in enumerate(content_chunks): @@ -351,6 +351,7 @@ def parse_fast( confidence=0.99, type="fact", info=info_, + file_ids=file_ids, ), ) memory_items.append(memory_item) @@ -373,6 +374,7 @@ def parse_fast( confidence=0.99, type="fact", info=info_, + file_ids=file_ids, ), ) memory_items.append(memory_item) @@ -499,7 +501,7 @@ def parse_fine( session_id = info_.pop("session_id", "") if file_id: info_["file_id"] = file_id - + file_ids = [file_id] if file_id else [] # For file content parts, default to LongTermMemory memory_type = "LongTermMemory" @@ -536,6 +538,7 @@ def _make_memory_item( confidence=0.99, type="fact", info=info_, + file_ids=file_ids, ), ) diff --git a/src/memos/memories/textual/item.py b/src/memos/memories/textual/item.py index bba1c5cda..1e7d579ee 100644 --- a/src/memos/memories/textual/item.py +++ b/src/memos/memories/textual/item.py @@ -133,6 +133,11 @@ class TreeNodeTextualMemoryMetadata(TextualMemoryMetadata): description="background of this node", ) + file_ids: list[str] | None = Field( + default_factory=list, + description="The ids of the files associated with the memory.", + ) + @field_validator("sources", mode="before") @classmethod def coerce_sources(cls, v):