[{"data":1,"prerenderedAt":4060},["ShallowReactive",2],{"/open_source/modules/memories/naive_textual_memory":3,"surround-/open_source/modules/memories/naive_textual_memory":4045},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":4038,"description":13,"extension":4039,"links":6,"meta":4040,"navigation":6,"path":4041,"seo":4042,"stem":4043,"__hash__":4044},"docs/en/open_source/modules/memories/naive_textual_memory.md","NaiveTextMemory: Simple Plain Text Memory",null,{"type":8,"value":9,"toc":4001},"minimark",[10,14,17,22,141,144,147,164,167,172,215,219,239,256,259,262,270,348,355,358,547,550,553,654,657,879,882,895,1712,1715,1718,1721,2711,2727,2730,2736,2744,2749,2942,2948,2962,2965,2969,3009,3013,3048,3074,3077,3080,3272,3306,3309,3312,3922,3925,3928,3987,3997],[11,12,13],"p",{},"Let's get started with the MemOS memory system in the simplest way possible!",[11,15,16],{},"NaiveTextMemory is a lightweight, memory-based, plain-text memory module. It stores memories in an in-memory list and retrieves them using keyword matching. It is the perfect starting point for learning MemOS, as well as an ideal choice for demos, testing, and small-scale applications.",[18,19,21],"h2",{"id":20},"table-of-contents","Table of Contents",[23,24,25,33,39,65,91,117,123,129,135],"ul",{},[26,27,28],"li",{},[29,30,32],"a",{"href":31},"#what-youll-learn","What You'll Learn",[26,34,35],{},[29,36,38],{"href":37},"#why-choose-naivetextmemory","Why Choose NaiveTextMemory",[26,40,41,45],{},[29,42,44],{"href":43},"#core-concepts","Core Concepts",[23,46,47,53,59],{},[26,48,49],{},[29,50,52],{"href":51},"#memory-structure","Memory Structure",[26,54,55],{},[29,56,58],{"href":57},"#metadata-fields-textualmemorymetadata","Metadata Fields",[26,60,61],{},[29,62,64],{"href":63},"#search-mechanism","Search Mechanism",[26,66,67,71],{},[29,68,70],{"href":69},"#api-reference","API Reference",[23,72,73,79,85],{},[26,74,75],{},[29,76,78],{"href":77},"#initialization","Initialization",[26,80,81],{},[29,82,84],{"href":83},"#core-methods","Core Methods",[26,86,87],{},[29,88,90],{"href":89},"#configuration-parameters","Configuration Parameters",[26,92,93,97],{},[29,94,96],{"href":95},"#hands-on-practice","Hands-On Practice",[23,98,99,105,111],{},[26,100,101],{},[29,102,104],{"href":103},"#quick-start","Quick Start",[26,106,107],{},[29,108,110],{"href":109},"#complete-example","Complete Example",[26,112,113],{},[29,114,116],{"href":115},"#file-storage","File Storage",[26,118,119],{},[29,120,122],{"href":121},"#use-case-guide","Use Case Guide",[26,124,125],{},[29,126,128],{"href":127},"#comparison-with-other-memory-modules","Comparison with Other Memory Modules",[26,130,131],{},[29,132,134],{"href":133},"#best-practices","Best Practices",[26,136,137],{},[29,138,140],{"href":139},"#next-steps","Next Steps",[18,142,32],{"id":143},"what-youll-learn",[11,145,146],{},"By the end of this guide, you will be able to:",[23,148,149,152,155,158,161],{},[26,150,151],{},"Automatically extract structured memories from conversations using LLM",[26,153,154],{},"Store and manage memories in memory (no database required)",[26,156,157],{},"Search memories using keyword matching",[26,159,160],{},"Persist and restore memory data",[26,162,163],{},"Understand when to use NaiveTextMemory and when to upgrade to other modules",[18,165,38],{"id":166},"why-choose-naivetextmemory",[168,169,171],"h3",{"id":170},"key-advantages","Key Advantages",[173,174,176],"list",{"icon":175},"ph:check-circle-duotone",[23,177,178,185,191,197,203,209],{},[26,179,180,184],{},[181,182,183],"strong",{},"Zero Dependencies",": No vector database or embedding model required",[26,186,187,190],{},[181,188,189],{},"Fast Startup",": Up and running in just a few lines of code",[26,192,193,196],{},[181,194,195],{},"Lightweight & Efficient",": Low resource footprint, fast execution",[26,198,199,202],{},[181,200,201],{},"Simple & Intuitive",": Keyword matching with predictable results",[26,204,205,208],{},[181,206,207],{},"Easy to Debug",": All memories in memory, easy to inspect",[26,210,211,214],{},[181,212,213],{},"Perfect Starting Point",": The best entry point for learning MemOS",[168,216,218],{"id":217},"suitable-scenarios","Suitable Scenarios",[173,220,222],{"icon":221},"ph:lightbulb-duotone",[23,223,224,227,230,233,236],{},[26,225,226],{},"Rapid prototyping and proof of concept",[26,228,229],{},"Simple conversational agents (\u003C 1000 memories)",[26,231,232],{},"Testing and demo scenarios",[26,234,235],{},"Resource-constrained environments (cannot run embedding models)",[26,237,238],{},"Keyword search scenarios (queries directly match memories)",[240,241,242],"note",{},[11,243,244,247,250,251,255],{},[181,245,246],{},"Performance Tip",[248,249],"br",{},"\nWhen memory count exceeds 1000, it's recommended to upgrade to ",[29,252,254],{"href":253},"/open_source/modules/memories/general_textual_memory","GeneralTextMemory",", which uses vector search for better performance.",[18,257,44],{"id":258},"core-concepts",[168,260,52],{"id":261},"memory-structure",[11,263,264,265,269],{},"Each memory is represented as a ",[266,267,268],"code",{},"TextualMemoryItem"," object with the following fields:",[271,272,273,292],"table",{},[274,275,276],"thead",{},[277,278,279,283,286,289],"tr",{},[280,281,282],"th",{},"Field",[280,284,285],{},"Type",[280,287,288],{},"Required",[280,290,291],{},"Description",[293,294,295,314,331],"tbody",{},[277,296,297,303,308,311],{},[298,299,300],"td",{},[266,301,302],{},"id",[298,304,305],{},[266,306,307],{},"str",[298,309,310],{},"✗",[298,312,313],{},"Unique identifier (auto-generated UUID)",[277,315,316,321,325,328],{},[298,317,318],{},[266,319,320],{},"memory",[298,322,323],{},[266,324,307],{},[298,326,327],{},"✓",[298,329,330],{},"Main text content of the memory",[277,332,333,338,343,345],{},[298,334,335],{},[266,336,337],{},"metadata",[298,339,340],{},[266,341,342],{},"TextualMemoryMetadata",[298,344,310],{},[298,346,347],{},"Metadata (for categorization, filtering, and retrieval)",[168,349,351,352,354],{"id":350},"metadata-fields-textualmemorymetadata","Metadata Fields (",[266,353,342],{},")",[11,356,357],{},"Metadata provides rich contextual information for categorization, filtering, and organizing memories:",[271,359,360,373],{},[274,361,362],{},[277,363,364,366,368,371],{},[280,365,282],{},[280,367,285],{},[280,369,370],{},"Default",[280,372,291],{},[293,374,375,404,422,449,467,487,505,530],{},[277,376,377,382,397,401],{},[298,378,379],{},[266,380,381],{},"type",[298,383,384,387,388,387,391,387,394],{},[266,385,386],{},"\"procedure\""," / ",[266,389,390],{},"\"fact\"",[266,392,393],{},"\"event\"",[266,395,396],{},"\"opinion\"",[298,398,399],{},[266,400,390],{},[298,402,403],{},"Memory type classification",[277,405,406,411,416,419],{},[298,407,408],{},[266,409,410],{},"memory_time",[298,412,413],{},[266,414,415],{},"str (YYYY-MM-DD)",[298,417,418],{},"Current date",[298,420,421],{},"Time associated with the memory",[277,423,424,429,443,446],{},[298,425,426],{},[266,427,428],{},"source",[298,430,431,387,434,387,437,387,440],{},[266,432,433],{},"\"conversation\"",[266,435,436],{},"\"retrieved\"",[266,438,439],{},"\"web\"",[266,441,442],{},"\"file\"",[298,444,445],{},"-",[298,447,448],{},"Source of the memory",[277,450,451,456,461,464],{},[298,452,453],{},[266,454,455],{},"confidence",[298,457,458],{},[266,459,460],{},"float (0-100)",[298,462,463],{},"80.0",[298,465,466],{},"Certainty/confidence score",[277,468,469,474,479,484],{},[298,470,471],{},[266,472,473],{},"entities",[298,475,476],{},[266,477,478],{},"list[str]",[298,480,481],{},[266,482,483],{},"[]",[298,485,486],{},"Mentioned entities or concepts",[277,488,489,494,498,502],{},[298,490,491],{},[266,492,493],{},"tags",[298,495,496],{},[266,497,478],{},[298,499,500],{},[266,501,483],{},[298,503,504],{},"Topic tags",[277,506,507,512,523,527],{},[298,508,509],{},[266,510,511],{},"visibility",[298,513,514,387,517,387,520],{},[266,515,516],{},"\"private\"",[266,518,519],{},"\"public\"",[266,521,522],{},"\"session\"",[298,524,525],{},[266,526,516],{},[298,528,529],{},"Access control scope",[277,531,532,537,541,544],{},[298,533,534],{},[266,535,536],{},"updated_at",[298,538,539],{},[266,540,307],{},[298,542,543],{},"Auto-generated",[298,545,546],{},"Last update timestamp (ISO 8601)",[18,548,70],{"id":549},"api-reference",[168,551,78],{"id":552},"initialization",[554,555,560],"pre",{"className":556,"code":557,"language":558,"meta":559,"style":559},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from memos.memories.textual.naive import NaiveTextMemory\nfrom memos.configs.memory import NaiveTextMemoryConfig\n\nmemory = NaiveTextMemory(config: NaiveTextMemoryConfig)\n","python","",[266,561,562,598,620,627],{"__ignoreMap":559},[563,564,567,571,575,579,582,584,587,589,592,595],"span",{"class":565,"line":566},"line",1,[563,568,570],{"class":569},"s7zQu","from",[563,572,574],{"class":573},"sTEyZ"," memos",[563,576,578],{"class":577},"sMK4o",".",[563,580,581],{"class":573},"memories",[563,583,578],{"class":577},[563,585,586],{"class":573},"textual",[563,588,578],{"class":577},[563,590,591],{"class":573},"naive ",[563,593,594],{"class":569},"import",[563,596,597],{"class":573}," NaiveTextMemory\n",[563,599,601,603,605,607,610,612,615,617],{"class":565,"line":600},2,[563,602,570],{"class":569},[563,604,574],{"class":573},[563,606,578],{"class":577},[563,608,609],{"class":573},"configs",[563,611,578],{"class":577},[563,613,614],{"class":573},"memory ",[563,616,594],{"class":569},[563,618,619],{"class":573}," NaiveTextMemoryConfig\n",[563,621,623],{"class":565,"line":622},3,[563,624,626],{"emptyLinePlaceholder":625},true,"\n",[563,628,630,632,635,639,642,645,648,651],{"class":565,"line":629},4,[563,631,614],{"class":573},[563,633,634],{"class":577},"=",[563,636,638],{"class":637},"s2Zo4"," NaiveTextMemory",[563,640,641],{"class":577},"(",[563,643,644],{"class":637},"config",[563,646,647],{"class":577},":",[563,649,650],{"class":637}," NaiveTextMemoryConfig",[563,652,653],{"class":577},")\n",[168,655,84],{"id":656},"core-methods",[271,658,659,674],{},[274,660,661],{},[277,662,663,666,669,672],{},[280,664,665],{},"Method",[280,667,668],{},"Parameters",[280,670,671],{},"Returns",[280,673,291],{},[293,675,676,696,716,735,754,773,789,808,826,842,861],{},[277,677,678,683,688,693],{},[298,679,680],{},[266,681,682],{},"extract(messages)",[298,684,685],{},[266,686,687],{},"messages: list[dict]",[298,689,690],{},[266,691,692],{},"list[TextualMemoryItem]",[298,694,695],{},"Extract structured memories from conversation using LLM",[277,697,698,703,708,713],{},[298,699,700],{},[266,701,702],{},"add(memories)",[298,704,705],{},[266,706,707],{},"memories: list / dict / Item",[298,709,710],{},[266,711,712],{},"None",[298,714,715],{},"Add one or more memories",[277,717,718,723,728,732],{},[298,719,720],{},[266,721,722],{},"search(query, top_k)",[298,724,725],{},[266,726,727],{},"query: str, top_k: int",[298,729,730],{},[266,731,692],{},[298,733,734],{},"Retrieve top-k memories using keyword matching",[277,736,737,742,747,751],{},[298,738,739],{},[266,740,741],{},"get(memory_id)",[298,743,744],{},[266,745,746],{},"memory_id: str",[298,748,749],{},[266,750,268],{},[298,752,753],{},"Get a single memory by ID",[277,755,756,761,766,770],{},[298,757,758],{},[266,759,760],{},"get_by_ids(ids)",[298,762,763],{},[266,764,765],{},"ids: list[str]",[298,767,768],{},[266,769,692],{},[298,771,772],{},"Batch retrieve memories by ID list",[277,774,775,780,782,786],{},[298,776,777],{},[266,778,779],{},"get_all()",[298,781,445],{},[298,783,784],{},[266,785,692],{},[298,787,788],{},"Return all memories",[277,790,791,796,801,805],{},[298,792,793],{},[266,794,795],{},"update(memory_id, new)",[298,797,798],{},[266,799,800],{},"memory_id: str, new: dict",[298,802,803],{},[266,804,712],{},[298,806,807],{},"Update content or metadata of specified memory",[277,809,810,815,819,823],{},[298,811,812],{},[266,813,814],{},"delete(ids)",[298,816,817],{},[266,818,765],{},[298,820,821],{},[266,822,712],{},[298,824,825],{},"Delete one or more memories",[277,827,828,833,835,839],{},[298,829,830],{},[266,831,832],{},"delete_all()",[298,834,445],{},[298,836,837],{},[266,838,712],{},[298,840,841],{},"Clear all memories",[277,843,844,849,854,858],{},[298,845,846],{},[266,847,848],{},"dump(dir)",[298,850,851],{},[266,852,853],{},"dir: str",[298,855,856],{},[266,857,712],{},[298,859,860],{},"Serialize memories to JSON file",[277,862,863,868,872,876],{},[298,864,865],{},[266,866,867],{},"load(dir)",[298,869,870],{},[266,871,853],{},[298,873,874],{},[266,875,712],{},[298,877,878],{},"Load memories from JSON file",[168,880,64],{"id":881},"search-mechanism",[11,883,884,885,887,888,891,892,647],{},"Unlike ",[266,886,254],{},"'s vector semantic search, ",[266,889,890],{},"NaiveTextMemory"," uses a ",[181,893,894],{},"keyword matching algorithm",[896,897,898,903,906,910,913,917,920,924,927,955,958,963,1022,1027,1267,1270,1273,1276],"steps",{},[899,900,902],"h4",{"id":901},"step-1-tokenization","Step 1: Tokenization",[11,904,905],{},"Break down the query and each memory content into lists of tokens",[899,907,909],{"id":908},"step-2-calculate-match-score","Step 2: Calculate Match Score",[11,911,912],{},"Count the number of overlapping tokens between query and memory",[899,914,916],{"id":915},"step-3-sort","Step 3: Sort",[11,918,919],{},"Sort all memories by match count in descending order",[899,921,923],{"id":922},"step-4-return-results","Step 4: Return Results",[11,925,926],{},"Return the top-k memories as search results",[240,928,929,939],{},[11,930,931,934,936,937],{},[181,932,933],{},"Example Comparison",[248,935],{},"\nQuery: \"cat\" ",[248,938],{},[23,940,941,949],{},[26,942,943,946,947],{},[181,944,945],{},"Keyword Matching",": Only matches memories containing \"cat\"",[248,948],{},[26,950,951,954],{},[181,952,953],{},"Semantic Search",": Also matches memories about \"pet\", \"kitten\", \"feline\", etc.",[168,956,90],{"id":957},"configuration-parameters",[11,959,960],{},[181,961,962],{},"NaiveTextMemoryConfig",[271,964,965,980],{},[274,966,967],{},[277,968,969,972,974,976,978],{},[280,970,971],{},"Parameter",[280,973,285],{},[280,975,288],{},[280,977,370],{},[280,979,291],{},[293,981,982,1001],{},[277,983,984,989,994,996,998],{},[298,985,986],{},[266,987,988],{},"extractor_llm",[298,990,991],{},[266,992,993],{},"LLMConfigFactory",[298,995,327],{},[298,997,445],{},[298,999,1000],{},"LLM configuration for extracting memories from conversations",[277,1002,1003,1008,1012,1014,1019],{},[298,1004,1005],{},[266,1006,1007],{},"memory_filename",[298,1009,1010],{},[266,1011,307],{},[298,1013,310],{},[298,1015,1016],{},[266,1017,1018],{},"textual_memory.json",[298,1020,1021],{},"Filename for persistent storage",[11,1023,1024],{},[181,1025,1026],{},"Configuration Example",[554,1028,1032],{"className":1029,"code":1030,"language":1031,"meta":559,"style":559},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"backend\": \"naive_text\",\n  \"config\": {\n    \"extractor_llm\": {\n      \"backend\": \"openai\",\n      \"config\": {\n        \"model_name_or_path\": \"gpt-4o-mini\",\n        \"temperature\": 0.8,\n        \"max_tokens\": 1024,\n        \"api_base\": \"xxx\",\n        \"api_key\": \"sk-xxx\"\n      }\n    },\n    \"memory_filename\": \"my_memories.json\"\n  }\n}\n","json",[266,1033,1034,1039,1065,1078,1092,1114,1127,1150,1167,1184,1205,1225,1231,1237,1255,1261],{"__ignoreMap":559},[563,1035,1036],{"class":565,"line":566},[563,1037,1038],{"class":577},"{\n",[563,1040,1041,1044,1048,1051,1053,1056,1060,1062],{"class":565,"line":600},[563,1042,1043],{"class":577},"  \"",[563,1045,1047],{"class":1046},"spNyl","backend",[563,1049,1050],{"class":577},"\"",[563,1052,647],{"class":577},[563,1054,1055],{"class":577}," \"",[563,1057,1059],{"class":1058},"sfazB","naive_text",[563,1061,1050],{"class":577},[563,1063,1064],{"class":577},",\n",[563,1066,1067,1069,1071,1073,1075],{"class":565,"line":622},[563,1068,1043],{"class":577},[563,1070,644],{"class":1046},[563,1072,1050],{"class":577},[563,1074,647],{"class":577},[563,1076,1077],{"class":577}," {\n",[563,1079,1080,1083,1086,1088,1090],{"class":565,"line":629},[563,1081,1082],{"class":577},"    \"",[563,1084,988],{"class":1085},"sBMFI",[563,1087,1050],{"class":577},[563,1089,647],{"class":577},[563,1091,1077],{"class":577},[563,1093,1095,1098,1101,1103,1105,1107,1110,1112],{"class":565,"line":1094},5,[563,1096,1097],{"class":577},"      \"",[563,1099,1047],{"class":1100},"sbssI",[563,1102,1050],{"class":577},[563,1104,647],{"class":577},[563,1106,1055],{"class":577},[563,1108,1109],{"class":1058},"openai",[563,1111,1050],{"class":577},[563,1113,1064],{"class":577},[563,1115,1117,1119,1121,1123,1125],{"class":565,"line":1116},6,[563,1118,1097],{"class":577},[563,1120,644],{"class":1100},[563,1122,1050],{"class":577},[563,1124,647],{"class":577},[563,1126,1077],{"class":577},[563,1128,1130,1133,1137,1139,1141,1143,1146,1148],{"class":565,"line":1129},7,[563,1131,1132],{"class":577},"        \"",[563,1134,1136],{"class":1135},"swJcz","model_name_or_path",[563,1138,1050],{"class":577},[563,1140,647],{"class":577},[563,1142,1055],{"class":577},[563,1144,1145],{"class":1058},"gpt-4o-mini",[563,1147,1050],{"class":577},[563,1149,1064],{"class":577},[563,1151,1153,1155,1158,1160,1162,1165],{"class":565,"line":1152},8,[563,1154,1132],{"class":577},[563,1156,1157],{"class":1135},"temperature",[563,1159,1050],{"class":577},[563,1161,647],{"class":577},[563,1163,1164],{"class":1100}," 0.8",[563,1166,1064],{"class":577},[563,1168,1170,1172,1175,1177,1179,1182],{"class":565,"line":1169},9,[563,1171,1132],{"class":577},[563,1173,1174],{"class":1135},"max_tokens",[563,1176,1050],{"class":577},[563,1178,647],{"class":577},[563,1180,1181],{"class":1100}," 1024",[563,1183,1064],{"class":577},[563,1185,1187,1189,1192,1194,1196,1198,1201,1203],{"class":565,"line":1186},10,[563,1188,1132],{"class":577},[563,1190,1191],{"class":1135},"api_base",[563,1193,1050],{"class":577},[563,1195,647],{"class":577},[563,1197,1055],{"class":577},[563,1199,1200],{"class":1058},"xxx",[563,1202,1050],{"class":577},[563,1204,1064],{"class":577},[563,1206,1208,1210,1213,1215,1217,1219,1222],{"class":565,"line":1207},11,[563,1209,1132],{"class":577},[563,1211,1212],{"class":1135},"api_key",[563,1214,1050],{"class":577},[563,1216,647],{"class":577},[563,1218,1055],{"class":577},[563,1220,1221],{"class":1058},"sk-xxx",[563,1223,1224],{"class":577},"\"\n",[563,1226,1228],{"class":565,"line":1227},12,[563,1229,1230],{"class":577},"      }\n",[563,1232,1234],{"class":565,"line":1233},13,[563,1235,1236],{"class":577},"    },\n",[563,1238,1240,1242,1244,1246,1248,1250,1253],{"class":565,"line":1239},14,[563,1241,1082],{"class":577},[563,1243,1007],{"class":1085},[563,1245,1050],{"class":577},[563,1247,647],{"class":577},[563,1249,1055],{"class":577},[563,1251,1252],{"class":1058},"my_memories.json",[563,1254,1224],{"class":577},[563,1256,1258],{"class":565,"line":1257},15,[563,1259,1260],{"class":577},"  }\n",[563,1262,1264],{"class":565,"line":1263},16,[563,1265,1266],{"class":577},"}\n",[18,1268,96],{"id":1269},"hands-on-practice",[168,1271,104],{"id":1272},"quick-start",[11,1274,1275],{},"Get started with NaiveTextMemory in just 3 steps:",[896,1277,1278,1282,1463,1467,1516,1520,1692],{},[899,1279,1281],{"id":1280},"step-1-create-configuration","Step 1: Create Configuration",[554,1283,1285],{"className":556,"code":1284,"language":558,"meta":559,"style":559},"from memos.configs.memory import MemoryConfigFactory\n\nconfig = MemoryConfigFactory(\n    backend=\"naive_text\",\n    config={\n        \"extractor_llm\": {\n            \"backend\": \"openai\",\n            \"config\": {\n                \"model_name_or_path\": \"gpt-4o-mini\",\n                \"api_key\": \"your-api-key\",\n                \"api_base\": \"your-api-base\"\n            },\n        },\n    },\n)\n",[266,1286,1287,1306,1310,1323,1339,1347,1359,1378,1390,1409,1428,1445,1450,1455,1459],{"__ignoreMap":559},[563,1288,1289,1291,1293,1295,1297,1299,1301,1303],{"class":565,"line":566},[563,1290,570],{"class":569},[563,1292,574],{"class":573},[563,1294,578],{"class":577},[563,1296,609],{"class":573},[563,1298,578],{"class":577},[563,1300,614],{"class":573},[563,1302,594],{"class":569},[563,1304,1305],{"class":573}," MemoryConfigFactory\n",[563,1307,1308],{"class":565,"line":600},[563,1309,626],{"emptyLinePlaceholder":625},[563,1311,1312,1315,1317,1320],{"class":565,"line":622},[563,1313,1314],{"class":573},"config ",[563,1316,634],{"class":577},[563,1318,1319],{"class":637}," MemoryConfigFactory",[563,1321,1322],{"class":577},"(\n",[563,1324,1325,1329,1331,1333,1335,1337],{"class":565,"line":629},[563,1326,1328],{"class":1327},"sHdIc","    backend",[563,1330,634],{"class":577},[563,1332,1050],{"class":577},[563,1334,1059],{"class":1058},[563,1336,1050],{"class":577},[563,1338,1064],{"class":577},[563,1340,1341,1344],{"class":565,"line":1094},[563,1342,1343],{"class":1327},"    config",[563,1345,1346],{"class":577},"={\n",[563,1348,1349,1351,1353,1355,1357],{"class":565,"line":1116},[563,1350,1132],{"class":577},[563,1352,988],{"class":1058},[563,1354,1050],{"class":577},[563,1356,647],{"class":577},[563,1358,1077],{"class":577},[563,1360,1361,1364,1366,1368,1370,1372,1374,1376],{"class":565,"line":1129},[563,1362,1363],{"class":577},"            \"",[563,1365,1047],{"class":1058},[563,1367,1050],{"class":577},[563,1369,647],{"class":577},[563,1371,1055],{"class":577},[563,1373,1109],{"class":1058},[563,1375,1050],{"class":577},[563,1377,1064],{"class":577},[563,1379,1380,1382,1384,1386,1388],{"class":565,"line":1152},[563,1381,1363],{"class":577},[563,1383,644],{"class":1058},[563,1385,1050],{"class":577},[563,1387,647],{"class":577},[563,1389,1077],{"class":577},[563,1391,1392,1395,1397,1399,1401,1403,1405,1407],{"class":565,"line":1169},[563,1393,1394],{"class":577},"                \"",[563,1396,1136],{"class":1058},[563,1398,1050],{"class":577},[563,1400,647],{"class":577},[563,1402,1055],{"class":577},[563,1404,1145],{"class":1058},[563,1406,1050],{"class":577},[563,1408,1064],{"class":577},[563,1410,1411,1413,1415,1417,1419,1421,1424,1426],{"class":565,"line":1186},[563,1412,1394],{"class":577},[563,1414,1212],{"class":1058},[563,1416,1050],{"class":577},[563,1418,647],{"class":577},[563,1420,1055],{"class":577},[563,1422,1423],{"class":1058},"your-api-key",[563,1425,1050],{"class":577},[563,1427,1064],{"class":577},[563,1429,1430,1432,1434,1436,1438,1440,1443],{"class":565,"line":1207},[563,1431,1394],{"class":577},[563,1433,1191],{"class":1058},[563,1435,1050],{"class":577},[563,1437,647],{"class":577},[563,1439,1055],{"class":577},[563,1441,1442],{"class":1058},"your-api-base",[563,1444,1224],{"class":577},[563,1446,1447],{"class":565,"line":1227},[563,1448,1449],{"class":577},"            },\n",[563,1451,1452],{"class":565,"line":1233},[563,1453,1454],{"class":577},"        },\n",[563,1456,1457],{"class":565,"line":1239},[563,1458,1236],{"class":577},[563,1460,1461],{"class":565,"line":1257},[563,1462,653],{"class":577},[899,1464,1466],{"id":1465},"step-2-initialize-memory-module","Step 2: Initialize Memory Module",[554,1468,1470],{"className":556,"code":1469,"language":558,"meta":559,"style":559},"from memos.memories.factory import MemoryFactory\n\nmemory = MemoryFactory.from_config(config)\n",[266,1471,1472,1492,1496],{"__ignoreMap":559},[563,1473,1474,1476,1478,1480,1482,1484,1487,1489],{"class":565,"line":566},[563,1475,570],{"class":569},[563,1477,574],{"class":573},[563,1479,578],{"class":577},[563,1481,581],{"class":573},[563,1483,578],{"class":577},[563,1485,1486],{"class":573},"factory ",[563,1488,594],{"class":569},[563,1490,1491],{"class":573}," MemoryFactory\n",[563,1493,1494],{"class":565,"line":600},[563,1495,626],{"emptyLinePlaceholder":625},[563,1497,1498,1500,1502,1505,1507,1510,1512,1514],{"class":565,"line":622},[563,1499,614],{"class":573},[563,1501,634],{"class":577},[563,1503,1504],{"class":573}," MemoryFactory",[563,1506,578],{"class":577},[563,1508,1509],{"class":637},"from_config",[563,1511,641],{"class":577},[563,1513,644],{"class":637},[563,1515,653],{"class":577},[899,1517,1519],{"id":1518},"step-3-extract-and-add-memories","Step 3: Extract and Add Memories",[554,1521,1523],{"className":556,"code":1522,"language":558,"meta":559,"style":559},"# Automatically extract memories from conversation\nmemories = memory.extract([\n    {\"role\": \"user\", \"content\": \"I love tomatoes.\"},\n    {\"role\": \"assistant\", \"content\": \"Great! Tomatoes are delicious.\"},\n])\n\n# Add to memory store\nmemory.add(memories)\nprint(f\"✓ Added {len(memories)} memories\")\n",[266,1524,1525,1531,1549,1592,1630,1635,1639,1644,1659],{"__ignoreMap":559},[563,1526,1527],{"class":565,"line":566},[563,1528,1530],{"class":1529},"sHwdD","# Automatically extract memories from conversation\n",[563,1532,1533,1536,1538,1541,1543,1546],{"class":565,"line":600},[563,1534,1535],{"class":573},"memories ",[563,1537,634],{"class":577},[563,1539,1540],{"class":573}," memory",[563,1542,578],{"class":577},[563,1544,1545],{"class":637},"extract",[563,1547,1548],{"class":577},"([\n",[563,1550,1551,1554,1556,1559,1561,1563,1565,1568,1570,1573,1575,1578,1580,1582,1584,1587,1589],{"class":565,"line":622},[563,1552,1553],{"class":577},"    {",[563,1555,1050],{"class":577},[563,1557,1558],{"class":1058},"role",[563,1560,1050],{"class":577},[563,1562,647],{"class":577},[563,1564,1055],{"class":577},[563,1566,1567],{"class":1058},"user",[563,1569,1050],{"class":577},[563,1571,1572],{"class":577},",",[563,1574,1055],{"class":577},[563,1576,1577],{"class":1058},"content",[563,1579,1050],{"class":577},[563,1581,647],{"class":577},[563,1583,1055],{"class":577},[563,1585,1586],{"class":1058},"I love tomatoes.",[563,1588,1050],{"class":577},[563,1590,1591],{"class":577},"},\n",[563,1593,1594,1596,1598,1600,1602,1604,1606,1609,1611,1613,1615,1617,1619,1621,1623,1626,1628],{"class":565,"line":629},[563,1595,1553],{"class":577},[563,1597,1050],{"class":577},[563,1599,1558],{"class":1058},[563,1601,1050],{"class":577},[563,1603,647],{"class":577},[563,1605,1055],{"class":577},[563,1607,1608],{"class":1058},"assistant",[563,1610,1050],{"class":577},[563,1612,1572],{"class":577},[563,1614,1055],{"class":577},[563,1616,1577],{"class":1058},[563,1618,1050],{"class":577},[563,1620,647],{"class":577},[563,1622,1055],{"class":577},[563,1624,1625],{"class":1058},"Great! Tomatoes are delicious.",[563,1627,1050],{"class":577},[563,1629,1591],{"class":577},[563,1631,1632],{"class":565,"line":1094},[563,1633,1634],{"class":577},"])\n",[563,1636,1637],{"class":565,"line":1116},[563,1638,626],{"emptyLinePlaceholder":625},[563,1640,1641],{"class":565,"line":1129},[563,1642,1643],{"class":1529},"# Add to memory store\n",[563,1645,1646,1648,1650,1653,1655,1657],{"class":565,"line":1152},[563,1647,320],{"class":573},[563,1649,578],{"class":577},[563,1651,1652],{"class":637},"add",[563,1654,641],{"class":577},[563,1656,581],{"class":637},[563,1658,653],{"class":577},[563,1660,1661,1664,1666,1669,1672,1675,1678,1680,1682,1684,1687,1690],{"class":565,"line":1169},[563,1662,1663],{"class":637},"print",[563,1665,641],{"class":577},[563,1667,1668],{"class":1046},"f",[563,1670,1671],{"class":1058},"\"✓ Added ",[563,1673,1674],{"class":1100},"{",[563,1676,1677],{"class":637},"len",[563,1679,641],{"class":577},[563,1681,581],{"class":637},[563,1683,354],{"class":577},[563,1685,1686],{"class":1100},"}",[563,1688,1689],{"class":1058}," memories\"",[563,1691,653],{"class":577},[240,1693,1694],{},[11,1695,1696,1699,1701,1702,578,1705,1707,1708],{},[181,1697,1698],{},"Advanced: Using MultiModal Reader",[248,1700],{},"\nIf you need to process multimodal content such as images, URLs, or files, use ",[266,1703,1704],{},"MultiModalStructMemReader",[248,1706],{},"\nView complete example: ",[29,1709,1711],{"href":1710},"./tree_textual_memory#using-multimodalstructmemreader-advanced","Using MultiModalStructMemReader (Advanced)",[11,1713,1714],{},"::",[168,1716,110],{"id":1717},"complete-example",[11,1719,1720],{},"Here's a complete end-to-end example demonstrating all core functionality:",[554,1722,1724],{"className":556,"code":1723,"language":558,"meta":559,"style":559},"from memos.configs.memory import MemoryConfigFactory\nfrom memos.memories.factory import MemoryFactory\n\n# ========================================\n# 1. Initialization\n# ========================================\nconfig = MemoryConfigFactory(\n    backend=\"naive_text\",\n    config={\n        \"extractor_llm\": {\n            \"backend\": \"openai\",\n            \"config\": {\n                \"model_name_or_path\": \"gpt-4o-mini\",\n                \"api_key\": \"your-api-key\",\n            },\n        },\n    },\n)\nmemory = MemoryFactory.from_config(config)\n\n# ========================================\n# 2. Extract and Add Memories\n# ========================================\nmemories = memory.extract([\n    {\"role\": \"user\", \"content\": \"I love tomatoes.\"},\n    {\"role\": \"assistant\", \"content\": \"Great! Tomatoes are delicious.\"},\n])\nmemory.add(memories)\nprint(f\"✓ Added {len(memories)} memories\")\n\n# ========================================\n# 3. Search Memories\n# ========================================\nresults = memory.search(\"tomatoes\", top_k=2)\nprint(f\"\\n🔍 Found {len(results)} relevant memories:\")\nfor i, item in enumerate(results, 1):\n    print(f\"  {i}. {item.memory}\")\n\n# ========================================\n# 4. Get All Memories\n# ========================================\nall_memories = memory.get_all()\nprint(f\"\\n📊 Total {len(all_memories)} memories\")\n\n# ========================================\n# 5. Update Memory\n# ========================================\nif memories:\n    memory_id = memories[0].id\n    memory.update(\n        memory_id, \n        {\n            \"memory\": \"User loves tomatoes.\",\n            \"metadata\": {\"type\": \"opinion\", \"confidence\": 95.0}\n        }\n    )\n    print(f\"\\n✓ Updated memory: {memory_id}\")\n\n# ========================================\n# 6. Persist to Storage\n# ========================================\nmemory.dump(\"tmp/mem\")\nprint(\"\\n💾 Memories saved to tmp/mem/textual_memory.json\")\n\n# ========================================\n# 7. Load Memories\n# ========================================\nmemory.load(\"tmp/mem\")\nprint(\"✓ Memories loaded from file\")\n\n# ========================================\n# 8. Delete Memories\n# ========================================\nif memories:\n    memory.delete([memories[0].id])\n    print(f\"\\n🗑️ Deleted 1 memory\")\n\n# Delete all memories\n# memory.delete_all()\n",[266,1725,1726,1744,1762,1766,1771,1776,1780,1790,1804,1810,1822,1840,1852,1870,1888,1892,1896,1901,1906,1925,1930,1935,1941,1946,1961,1998,2035,2040,2055,2082,2087,2092,2098,2103,2139,2174,2206,2244,2249,2254,2260,2265,2283,2316,2321,2326,2332,2337,2349,2371,2384,2395,2401,2421,2465,2471,2477,2504,2509,2514,2520,2525,2546,2564,2569,2574,2580,2585,2605,2621,2626,2631,2637,2642,2651,2676,2694,2699,2705],{"__ignoreMap":559},[563,1727,1728,1730,1732,1734,1736,1738,1740,1742],{"class":565,"line":566},[563,1729,570],{"class":569},[563,1731,574],{"class":573},[563,1733,578],{"class":577},[563,1735,609],{"class":573},[563,1737,578],{"class":577},[563,1739,614],{"class":573},[563,1741,594],{"class":569},[563,1743,1305],{"class":573},[563,1745,1746,1748,1750,1752,1754,1756,1758,1760],{"class":565,"line":600},[563,1747,570],{"class":569},[563,1749,574],{"class":573},[563,1751,578],{"class":577},[563,1753,581],{"class":573},[563,1755,578],{"class":577},[563,1757,1486],{"class":573},[563,1759,594],{"class":569},[563,1761,1491],{"class":573},[563,1763,1764],{"class":565,"line":622},[563,1765,626],{"emptyLinePlaceholder":625},[563,1767,1768],{"class":565,"line":629},[563,1769,1770],{"class":1529},"# ========================================\n",[563,1772,1773],{"class":565,"line":1094},[563,1774,1775],{"class":1529},"# 1. Initialization\n",[563,1777,1778],{"class":565,"line":1116},[563,1779,1770],{"class":1529},[563,1781,1782,1784,1786,1788],{"class":565,"line":1129},[563,1783,1314],{"class":573},[563,1785,634],{"class":577},[563,1787,1319],{"class":637},[563,1789,1322],{"class":577},[563,1791,1792,1794,1796,1798,1800,1802],{"class":565,"line":1152},[563,1793,1328],{"class":1327},[563,1795,634],{"class":577},[563,1797,1050],{"class":577},[563,1799,1059],{"class":1058},[563,1801,1050],{"class":577},[563,1803,1064],{"class":577},[563,1805,1806,1808],{"class":565,"line":1169},[563,1807,1343],{"class":1327},[563,1809,1346],{"class":577},[563,1811,1812,1814,1816,1818,1820],{"class":565,"line":1186},[563,1813,1132],{"class":577},[563,1815,988],{"class":1058},[563,1817,1050],{"class":577},[563,1819,647],{"class":577},[563,1821,1077],{"class":577},[563,1823,1824,1826,1828,1830,1832,1834,1836,1838],{"class":565,"line":1207},[563,1825,1363],{"class":577},[563,1827,1047],{"class":1058},[563,1829,1050],{"class":577},[563,1831,647],{"class":577},[563,1833,1055],{"class":577},[563,1835,1109],{"class":1058},[563,1837,1050],{"class":577},[563,1839,1064],{"class":577},[563,1841,1842,1844,1846,1848,1850],{"class":565,"line":1227},[563,1843,1363],{"class":577},[563,1845,644],{"class":1058},[563,1847,1050],{"class":577},[563,1849,647],{"class":577},[563,1851,1077],{"class":577},[563,1853,1854,1856,1858,1860,1862,1864,1866,1868],{"class":565,"line":1233},[563,1855,1394],{"class":577},[563,1857,1136],{"class":1058},[563,1859,1050],{"class":577},[563,1861,647],{"class":577},[563,1863,1055],{"class":577},[563,1865,1145],{"class":1058},[563,1867,1050],{"class":577},[563,1869,1064],{"class":577},[563,1871,1872,1874,1876,1878,1880,1882,1884,1886],{"class":565,"line":1239},[563,1873,1394],{"class":577},[563,1875,1212],{"class":1058},[563,1877,1050],{"class":577},[563,1879,647],{"class":577},[563,1881,1055],{"class":577},[563,1883,1423],{"class":1058},[563,1885,1050],{"class":577},[563,1887,1064],{"class":577},[563,1889,1890],{"class":565,"line":1257},[563,1891,1449],{"class":577},[563,1893,1894],{"class":565,"line":1263},[563,1895,1454],{"class":577},[563,1897,1899],{"class":565,"line":1898},17,[563,1900,1236],{"class":577},[563,1902,1904],{"class":565,"line":1903},18,[563,1905,653],{"class":577},[563,1907,1909,1911,1913,1915,1917,1919,1921,1923],{"class":565,"line":1908},19,[563,1910,614],{"class":573},[563,1912,634],{"class":577},[563,1914,1504],{"class":573},[563,1916,578],{"class":577},[563,1918,1509],{"class":637},[563,1920,641],{"class":577},[563,1922,644],{"class":637},[563,1924,653],{"class":577},[563,1926,1928],{"class":565,"line":1927},20,[563,1929,626],{"emptyLinePlaceholder":625},[563,1931,1933],{"class":565,"line":1932},21,[563,1934,1770],{"class":1529},[563,1936,1938],{"class":565,"line":1937},22,[563,1939,1940],{"class":1529},"# 2. Extract and Add Memories\n",[563,1942,1944],{"class":565,"line":1943},23,[563,1945,1770],{"class":1529},[563,1947,1949,1951,1953,1955,1957,1959],{"class":565,"line":1948},24,[563,1950,1535],{"class":573},[563,1952,634],{"class":577},[563,1954,1540],{"class":573},[563,1956,578],{"class":577},[563,1958,1545],{"class":637},[563,1960,1548],{"class":577},[563,1962,1964,1966,1968,1970,1972,1974,1976,1978,1980,1982,1984,1986,1988,1990,1992,1994,1996],{"class":565,"line":1963},25,[563,1965,1553],{"class":577},[563,1967,1050],{"class":577},[563,1969,1558],{"class":1058},[563,1971,1050],{"class":577},[563,1973,647],{"class":577},[563,1975,1055],{"class":577},[563,1977,1567],{"class":1058},[563,1979,1050],{"class":577},[563,1981,1572],{"class":577},[563,1983,1055],{"class":577},[563,1985,1577],{"class":1058},[563,1987,1050],{"class":577},[563,1989,647],{"class":577},[563,1991,1055],{"class":577},[563,1993,1586],{"class":1058},[563,1995,1050],{"class":577},[563,1997,1591],{"class":577},[563,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033],{"class":565,"line":2000},26,[563,2002,1553],{"class":577},[563,2004,1050],{"class":577},[563,2006,1558],{"class":1058},[563,2008,1050],{"class":577},[563,2010,647],{"class":577},[563,2012,1055],{"class":577},[563,2014,1608],{"class":1058},[563,2016,1050],{"class":577},[563,2018,1572],{"class":577},[563,2020,1055],{"class":577},[563,2022,1577],{"class":1058},[563,2024,1050],{"class":577},[563,2026,647],{"class":577},[563,2028,1055],{"class":577},[563,2030,1625],{"class":1058},[563,2032,1050],{"class":577},[563,2034,1591],{"class":577},[563,2036,2038],{"class":565,"line":2037},27,[563,2039,1634],{"class":577},[563,2041,2043,2045,2047,2049,2051,2053],{"class":565,"line":2042},28,[563,2044,320],{"class":573},[563,2046,578],{"class":577},[563,2048,1652],{"class":637},[563,2050,641],{"class":577},[563,2052,581],{"class":637},[563,2054,653],{"class":577},[563,2056,2058,2060,2062,2064,2066,2068,2070,2072,2074,2076,2078,2080],{"class":565,"line":2057},29,[563,2059,1663],{"class":637},[563,2061,641],{"class":577},[563,2063,1668],{"class":1046},[563,2065,1671],{"class":1058},[563,2067,1674],{"class":1100},[563,2069,1677],{"class":637},[563,2071,641],{"class":577},[563,2073,581],{"class":637},[563,2075,354],{"class":577},[563,2077,1686],{"class":1100},[563,2079,1689],{"class":1058},[563,2081,653],{"class":577},[563,2083,2085],{"class":565,"line":2084},30,[563,2086,626],{"emptyLinePlaceholder":625},[563,2088,2090],{"class":565,"line":2089},31,[563,2091,1770],{"class":1529},[563,2093,2095],{"class":565,"line":2094},32,[563,2096,2097],{"class":1529},"# 3. Search Memories\n",[563,2099,2101],{"class":565,"line":2100},33,[563,2102,1770],{"class":1529},[563,2104,2106,2109,2111,2113,2115,2118,2120,2122,2125,2127,2129,2132,2134,2137],{"class":565,"line":2105},34,[563,2107,2108],{"class":573},"results ",[563,2110,634],{"class":577},[563,2112,1540],{"class":573},[563,2114,578],{"class":577},[563,2116,2117],{"class":637},"search",[563,2119,641],{"class":577},[563,2121,1050],{"class":577},[563,2123,2124],{"class":1058},"tomatoes",[563,2126,1050],{"class":577},[563,2128,1572],{"class":577},[563,2130,2131],{"class":1327}," top_k",[563,2133,634],{"class":577},[563,2135,2136],{"class":1100},"2",[563,2138,653],{"class":577},[563,2140,2142,2144,2146,2148,2150,2153,2156,2158,2160,2162,2165,2167,2169,2172],{"class":565,"line":2141},35,[563,2143,1663],{"class":637},[563,2145,641],{"class":577},[563,2147,1668],{"class":1046},[563,2149,1050],{"class":1058},[563,2151,2152],{"class":573},"\\n",[563,2154,2155],{"class":1058},"🔍 Found ",[563,2157,1674],{"class":1100},[563,2159,1677],{"class":637},[563,2161,641],{"class":577},[563,2163,2164],{"class":637},"results",[563,2166,354],{"class":577},[563,2168,1686],{"class":1100},[563,2170,2171],{"class":1058}," relevant memories:\"",[563,2173,653],{"class":577},[563,2175,2177,2180,2183,2185,2188,2191,2194,2196,2198,2200,2203],{"class":565,"line":2176},36,[563,2178,2179],{"class":569},"for",[563,2181,2182],{"class":573}," i",[563,2184,1572],{"class":577},[563,2186,2187],{"class":573}," item ",[563,2189,2190],{"class":569},"in",[563,2192,2193],{"class":637}," enumerate",[563,2195,641],{"class":577},[563,2197,2164],{"class":637},[563,2199,1572],{"class":577},[563,2201,2202],{"class":1100}," 1",[563,2204,2205],{"class":577},"):\n",[563,2207,2209,2212,2214,2216,2219,2221,2224,2226,2229,2231,2234,2236,2238,2240,2242],{"class":565,"line":2208},37,[563,2210,2211],{"class":637},"    print",[563,2213,641],{"class":577},[563,2215,1668],{"class":1046},[563,2217,2218],{"class":1058},"\"  ",[563,2220,1674],{"class":1100},[563,2222,2223],{"class":637},"i",[563,2225,1686],{"class":1100},[563,2227,2228],{"class":1058},". ",[563,2230,1674],{"class":1100},[563,2232,2233],{"class":637},"item",[563,2235,578],{"class":577},[563,2237,320],{"class":1135},[563,2239,1686],{"class":1100},[563,2241,1050],{"class":1058},[563,2243,653],{"class":577},[563,2245,2247],{"class":565,"line":2246},38,[563,2248,626],{"emptyLinePlaceholder":625},[563,2250,2252],{"class":565,"line":2251},39,[563,2253,1770],{"class":1529},[563,2255,2257],{"class":565,"line":2256},40,[563,2258,2259],{"class":1529},"# 4. Get All Memories\n",[563,2261,2263],{"class":565,"line":2262},41,[563,2264,1770],{"class":1529},[563,2266,2268,2271,2273,2275,2277,2280],{"class":565,"line":2267},42,[563,2269,2270],{"class":573},"all_memories ",[563,2272,634],{"class":577},[563,2274,1540],{"class":573},[563,2276,578],{"class":577},[563,2278,2279],{"class":637},"get_all",[563,2281,2282],{"class":577},"()\n",[563,2284,2286,2288,2290,2292,2294,2296,2299,2301,2303,2305,2308,2310,2312,2314],{"class":565,"line":2285},43,[563,2287,1663],{"class":637},[563,2289,641],{"class":577},[563,2291,1668],{"class":1046},[563,2293,1050],{"class":1058},[563,2295,2152],{"class":573},[563,2297,2298],{"class":1058},"📊 Total ",[563,2300,1674],{"class":1100},[563,2302,1677],{"class":637},[563,2304,641],{"class":577},[563,2306,2307],{"class":637},"all_memories",[563,2309,354],{"class":577},[563,2311,1686],{"class":1100},[563,2313,1689],{"class":1058},[563,2315,653],{"class":577},[563,2317,2319],{"class":565,"line":2318},44,[563,2320,626],{"emptyLinePlaceholder":625},[563,2322,2324],{"class":565,"line":2323},45,[563,2325,1770],{"class":1529},[563,2327,2329],{"class":565,"line":2328},46,[563,2330,2331],{"class":1529},"# 5. Update Memory\n",[563,2333,2335],{"class":565,"line":2334},47,[563,2336,1770],{"class":1529},[563,2338,2340,2343,2346],{"class":565,"line":2339},48,[563,2341,2342],{"class":569},"if",[563,2344,2345],{"class":573}," memories",[563,2347,2348],{"class":577},":\n",[563,2350,2352,2355,2357,2359,2362,2365,2368],{"class":565,"line":2351},49,[563,2353,2354],{"class":573},"    memory_id ",[563,2356,634],{"class":577},[563,2358,2345],{"class":573},[563,2360,2361],{"class":577},"[",[563,2363,2364],{"class":1100},"0",[563,2366,2367],{"class":577},"].",[563,2369,2370],{"class":1135},"id\n",[563,2372,2374,2377,2379,2382],{"class":565,"line":2373},50,[563,2375,2376],{"class":573},"    memory",[563,2378,578],{"class":577},[563,2380,2381],{"class":637},"update",[563,2383,1322],{"class":577},[563,2385,2387,2390,2392],{"class":565,"line":2386},51,[563,2388,2389],{"class":637},"        memory_id",[563,2391,1572],{"class":577},[563,2393,2394],{"class":637}," \n",[563,2396,2398],{"class":565,"line":2397},52,[563,2399,2400],{"class":577},"        {\n",[563,2402,2404,2406,2408,2410,2412,2414,2417,2419],{"class":565,"line":2403},53,[563,2405,1363],{"class":577},[563,2407,320],{"class":1058},[563,2409,1050],{"class":577},[563,2411,647],{"class":577},[563,2413,1055],{"class":577},[563,2415,2416],{"class":1058},"User loves tomatoes.",[563,2418,1050],{"class":577},[563,2420,1064],{"class":577},[563,2422,2424,2426,2428,2430,2432,2435,2437,2439,2441,2443,2445,2448,2450,2452,2454,2456,2458,2460,2463],{"class":565,"line":2423},54,[563,2425,1363],{"class":577},[563,2427,337],{"class":1058},[563,2429,1050],{"class":577},[563,2431,647],{"class":577},[563,2433,2434],{"class":577}," {",[563,2436,1050],{"class":577},[563,2438,381],{"class":1058},[563,2440,1050],{"class":577},[563,2442,647],{"class":577},[563,2444,1055],{"class":577},[563,2446,2447],{"class":1058},"opinion",[563,2449,1050],{"class":577},[563,2451,1572],{"class":577},[563,2453,1055],{"class":577},[563,2455,455],{"class":1058},[563,2457,1050],{"class":577},[563,2459,647],{"class":577},[563,2461,2462],{"class":1100}," 95.0",[563,2464,1266],{"class":577},[563,2466,2468],{"class":565,"line":2467},55,[563,2469,2470],{"class":577},"        }\n",[563,2472,2474],{"class":565,"line":2473},56,[563,2475,2476],{"class":577},"    )\n",[563,2478,2480,2482,2484,2486,2488,2490,2493,2495,2498,2500,2502],{"class":565,"line":2479},57,[563,2481,2211],{"class":637},[563,2483,641],{"class":577},[563,2485,1668],{"class":1046},[563,2487,1050],{"class":1058},[563,2489,2152],{"class":573},[563,2491,2492],{"class":1058},"✓ Updated memory: ",[563,2494,1674],{"class":1100},[563,2496,2497],{"class":637},"memory_id",[563,2499,1686],{"class":1100},[563,2501,1050],{"class":1058},[563,2503,653],{"class":577},[563,2505,2507],{"class":565,"line":2506},58,[563,2508,626],{"emptyLinePlaceholder":625},[563,2510,2512],{"class":565,"line":2511},59,[563,2513,1770],{"class":1529},[563,2515,2517],{"class":565,"line":2516},60,[563,2518,2519],{"class":1529},"# 6. Persist to Storage\n",[563,2521,2523],{"class":565,"line":2522},61,[563,2524,1770],{"class":1529},[563,2526,2528,2530,2532,2535,2537,2539,2542,2544],{"class":565,"line":2527},62,[563,2529,320],{"class":573},[563,2531,578],{"class":577},[563,2533,2534],{"class":637},"dump",[563,2536,641],{"class":577},[563,2538,1050],{"class":577},[563,2540,2541],{"class":1058},"tmp/mem",[563,2543,1050],{"class":577},[563,2545,653],{"class":577},[563,2547,2549,2551,2553,2555,2557,2560,2562],{"class":565,"line":2548},63,[563,2550,1663],{"class":637},[563,2552,641],{"class":577},[563,2554,1050],{"class":577},[563,2556,2152],{"class":573},[563,2558,2559],{"class":1058},"💾 Memories saved to tmp/mem/textual_memory.json",[563,2561,1050],{"class":577},[563,2563,653],{"class":577},[563,2565,2567],{"class":565,"line":2566},64,[563,2568,626],{"emptyLinePlaceholder":625},[563,2570,2572],{"class":565,"line":2571},65,[563,2573,1770],{"class":1529},[563,2575,2577],{"class":565,"line":2576},66,[563,2578,2579],{"class":1529},"# 7. Load Memories\n",[563,2581,2583],{"class":565,"line":2582},67,[563,2584,1770],{"class":1529},[563,2586,2588,2590,2592,2595,2597,2599,2601,2603],{"class":565,"line":2587},68,[563,2589,320],{"class":573},[563,2591,578],{"class":577},[563,2593,2594],{"class":637},"load",[563,2596,641],{"class":577},[563,2598,1050],{"class":577},[563,2600,2541],{"class":1058},[563,2602,1050],{"class":577},[563,2604,653],{"class":577},[563,2606,2608,2610,2612,2614,2617,2619],{"class":565,"line":2607},69,[563,2609,1663],{"class":637},[563,2611,641],{"class":577},[563,2613,1050],{"class":577},[563,2615,2616],{"class":1058},"✓ Memories loaded from file",[563,2618,1050],{"class":577},[563,2620,653],{"class":577},[563,2622,2624],{"class":565,"line":2623},70,[563,2625,626],{"emptyLinePlaceholder":625},[563,2627,2629],{"class":565,"line":2628},71,[563,2630,1770],{"class":1529},[563,2632,2634],{"class":565,"line":2633},72,[563,2635,2636],{"class":1529},"# 8. Delete Memories\n",[563,2638,2640],{"class":565,"line":2639},73,[563,2641,1770],{"class":1529},[563,2643,2645,2647,2649],{"class":565,"line":2644},74,[563,2646,2342],{"class":569},[563,2648,2345],{"class":573},[563,2650,2348],{"class":577},[563,2652,2654,2656,2658,2661,2664,2666,2668,2670,2672,2674],{"class":565,"line":2653},75,[563,2655,2376],{"class":573},[563,2657,578],{"class":577},[563,2659,2660],{"class":637},"delete",[563,2662,2663],{"class":577},"([",[563,2665,581],{"class":637},[563,2667,2361],{"class":577},[563,2669,2364],{"class":1100},[563,2671,2367],{"class":577},[563,2673,302],{"class":1135},[563,2675,1634],{"class":577},[563,2677,2679,2681,2683,2685,2687,2689,2692],{"class":565,"line":2678},76,[563,2680,2211],{"class":637},[563,2682,641],{"class":577},[563,2684,1668],{"class":1046},[563,2686,1050],{"class":1058},[563,2688,2152],{"class":573},[563,2690,2691],{"class":1058},"🗑️ Deleted 1 memory\"",[563,2693,653],{"class":577},[563,2695,2697],{"class":565,"line":2696},77,[563,2698,626],{"emptyLinePlaceholder":625},[563,2700,2702],{"class":565,"line":2701},78,[563,2703,2704],{"class":1529},"# Delete all memories\n",[563,2706,2708],{"class":565,"line":2707},79,[563,2709,2710],{"class":1529},"# memory.delete_all()\n",[240,2712,2713],{},[11,2714,2715,2718,2720,2721,2723],{},[181,2716,2717],{},"Extension: Internet Retrieval",[248,2719],{},"\nNaiveTextMemory focuses on local memory management. For retrieving information from the internet and adding it to your memory store, see:",[248,2722],{},[29,2724,2726],{"href":2725},"./tree_textual_memory#retrieve-memories-from-the-internet-optional","Retrieve Memories from the Internet (Optional)",[168,2728,116],{"id":2729},"file-storage",[11,2731,2732,2733,2735],{},"When calling ",[266,2734,848],{},", the system saves memories to:",[554,2737,2742],{"className":2738,"code":2740,"language":2741},[2739],"language-text","\u003Cdir>/\u003Cconfig.memory_filename>\n","text",[266,2743,2740],{"__ignoreMap":559},[11,2745,2746],{},[181,2747,2748],{},"Default File Structure",[554,2750,2752],{"className":1029,"code":2751,"language":1031,"meta":559,"style":559},"[\n  {\n    \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"memory\": \"User loves tomatoes.\",\n    \"metadata\": {\n      \"type\": \"opinion\",\n      \"confidence\": 95.0,\n      \"entities\": [\"user\", \"tomatoes\"],\n      \"tags\": [\"food\", \"preference\"],\n      \"updated_at\": \"2026-01-14T10:30:00Z\"\n    }\n  },\n  ...\n]\n",[266,2753,2754,2759,2764,2783,2801,2813,2831,2845,2875,2905,2922,2927,2932,2937],{"__ignoreMap":559},[563,2755,2756],{"class":565,"line":566},[563,2757,2758],{"class":577},"[\n",[563,2760,2761],{"class":565,"line":600},[563,2762,2763],{"class":577},"  {\n",[563,2765,2766,2768,2770,2772,2774,2776,2779,2781],{"class":565,"line":622},[563,2767,1082],{"class":577},[563,2769,302],{"class":1046},[563,2771,1050],{"class":577},[563,2773,647],{"class":577},[563,2775,1055],{"class":577},[563,2777,2778],{"class":1058},"550e8400-e29b-41d4-a716-446655440000",[563,2780,1050],{"class":577},[563,2782,1064],{"class":577},[563,2784,2785,2787,2789,2791,2793,2795,2797,2799],{"class":565,"line":629},[563,2786,1082],{"class":577},[563,2788,320],{"class":1046},[563,2790,1050],{"class":577},[563,2792,647],{"class":577},[563,2794,1055],{"class":577},[563,2796,2416],{"class":1058},[563,2798,1050],{"class":577},[563,2800,1064],{"class":577},[563,2802,2803,2805,2807,2809,2811],{"class":565,"line":1094},[563,2804,1082],{"class":577},[563,2806,337],{"class":1046},[563,2808,1050],{"class":577},[563,2810,647],{"class":577},[563,2812,1077],{"class":577},[563,2814,2815,2817,2819,2821,2823,2825,2827,2829],{"class":565,"line":1116},[563,2816,1097],{"class":577},[563,2818,381],{"class":1085},[563,2820,1050],{"class":577},[563,2822,647],{"class":577},[563,2824,1055],{"class":577},[563,2826,2447],{"class":1058},[563,2828,1050],{"class":577},[563,2830,1064],{"class":577},[563,2832,2833,2835,2837,2839,2841,2843],{"class":565,"line":1129},[563,2834,1097],{"class":577},[563,2836,455],{"class":1085},[563,2838,1050],{"class":577},[563,2840,647],{"class":577},[563,2842,2462],{"class":1100},[563,2844,1064],{"class":577},[563,2846,2847,2849,2851,2853,2855,2858,2860,2862,2864,2866,2868,2870,2872],{"class":565,"line":1152},[563,2848,1097],{"class":577},[563,2850,473],{"class":1085},[563,2852,1050],{"class":577},[563,2854,647],{"class":577},[563,2856,2857],{"class":577}," [",[563,2859,1050],{"class":577},[563,2861,1567],{"class":1058},[563,2863,1050],{"class":577},[563,2865,1572],{"class":577},[563,2867,1055],{"class":577},[563,2869,2124],{"class":1058},[563,2871,1050],{"class":577},[563,2873,2874],{"class":577},"],\n",[563,2876,2877,2879,2881,2883,2885,2887,2889,2892,2894,2896,2898,2901,2903],{"class":565,"line":1169},[563,2878,1097],{"class":577},[563,2880,493],{"class":1085},[563,2882,1050],{"class":577},[563,2884,647],{"class":577},[563,2886,2857],{"class":577},[563,2888,1050],{"class":577},[563,2890,2891],{"class":1058},"food",[563,2893,1050],{"class":577},[563,2895,1572],{"class":577},[563,2897,1055],{"class":577},[563,2899,2900],{"class":1058},"preference",[563,2902,1050],{"class":577},[563,2904,2874],{"class":577},[563,2906,2907,2909,2911,2913,2915,2917,2920],{"class":565,"line":1186},[563,2908,1097],{"class":577},[563,2910,536],{"class":1085},[563,2912,1050],{"class":577},[563,2914,647],{"class":577},[563,2916,1055],{"class":577},[563,2918,2919],{"class":1058},"2026-01-14T10:30:00Z",[563,2921,1224],{"class":577},[563,2923,2924],{"class":565,"line":1207},[563,2925,2926],{"class":577},"    }\n",[563,2928,2929],{"class":565,"line":1227},[563,2930,2931],{"class":577},"  },\n",[563,2933,2934],{"class":565,"line":1233},[563,2935,2936],{"class":573},"  ...\n",[563,2938,2939],{"class":565,"line":1239},[563,2940,2941],{"class":577},"]\n",[11,2943,2944,2945,2947],{},"Use ",[266,2946,867],{}," to fully restore all memory data.",[240,2949,2950],{},[11,2951,2952,2955,2957,2958,2961],{},[181,2953,2954],{},"Important Note",[248,2956],{},"\nMemories are stored in memory and will be lost after process restart. Remember to call ",[266,2959,2960],{},"dump()"," regularly to save data!",[18,2963,122],{"id":2964},"use-case-guide",[168,2966,2968],{"id":2967},"best-suited-for","Best Suited For",[173,2970,2971],{"icon":175},[23,2972,2973,2979,2985,2991,2997,3003],{},[26,2974,2975,2978],{},[181,2976,2977],{},"Rapid Prototyping",": No need to configure vector databases, get started in minutes",[26,2980,2981,2984],{},[181,2982,2983],{},"Simple Conversational Agents",": Small-scale applications with \u003C 1000 memories",[26,2986,2987,2990],{},[181,2988,2989],{},"Testing and Demos",": Quickly validate memory extraction and retrieval logic",[26,2992,2993,2996],{},[181,2994,2995],{},"Resource-Constrained Environments",": Scenarios where embedding models or vector databases cannot run",[26,2998,2999,3002],{},[181,3000,3001],{},"Keyword Search",": Scenarios where query content directly matches memory text",[26,3004,3005,3008],{},[181,3006,3007],{},"Learning and Teaching",": The best starting point for understanding MemOS memory system",[168,3010,3012],{"id":3011},"not-recommended-for","Not Recommended For",[173,3014,3016],{"icon":3015},"ph:x-circle-duotone",[23,3017,3018,3024,3030,3036,3042],{},[26,3019,3020,3023],{},[181,3021,3022],{},"Large-Scale Applications",": More than 10,000 memories (search performance degrades)",[26,3025,3026,3029],{},[181,3027,3028],{},"Semantic Search Needs",": Need to understand synonyms (e.g., \"cat\" and \"pet\")",[26,3031,3032,3035],{},[181,3033,3034],{},"Production Environments",": Strict performance and accuracy requirements",[26,3037,3038,3041],{},[181,3039,3040],{},"Multilingual Scenarios",": Need cross-language semantic understanding",[26,3043,3044,3047],{},[181,3045,3046],{},"Complex Relationship Reasoning",": Need to understand relationships between memories",[3049,3050,3052,3060],"alert",{"type":3051},"info",[11,3053,3054,3057,3059],{},[181,3055,3056],{},"Upgrade Path",[248,3058],{},"\nFor the scenarios not recommended above, consider upgrading to:",[23,3061,3062,3067],{},[26,3063,3064,3066],{},[29,3065,254],{"href":253}," - Vector semantic search, suitable for 10K-100K memories",[26,3068,3069,3073],{},[29,3070,3072],{"href":3071},"/open_source/modules/memories/tree_textual_memory","TreeTextMemory"," - Graph structure storage, supports relationship reasoning and multi-hop queries",[18,3075,128],{"id":3076},"comparison-with-other-memory-modules",[11,3078,3079],{},"Choosing the right memory module is crucial for project success. This comparison helps you make the decision:",[271,3081,3082,3101],{},[274,3083,3084],{},[277,3085,3086,3089,3093,3097],{},[280,3087,3088],{},"Feature",[280,3090,3091],{},[181,3092,890],{},[280,3094,3095],{},[181,3096,254],{},[280,3098,3099],{},[181,3100,3072],{},[293,3102,3103,3119,3135,3151,3167,3182,3195,3208,3224,3240,3256],{},[277,3104,3105,3110,3113,3116],{},[298,3106,3107],{},[181,3108,3109],{},"Search Method",[298,3111,3112],{},"Keyword matching",[298,3114,3115],{},"Vector semantic search",[298,3117,3118],{},"Graph structure + vector search",[277,3120,3121,3126,3129,3132],{},[298,3122,3123],{},[181,3124,3125],{},"Dependencies",[298,3127,3128],{},"LLM only",[298,3130,3131],{},"LLM + Embedder + Vector DB",[298,3133,3134],{},"LLM + Embedder + Graph DB",[277,3136,3137,3142,3145,3148],{},[298,3138,3139],{},[181,3140,3141],{},"Suitable Scale",[298,3143,3144],{},"\u003C 1K",[298,3146,3147],{},"1K - 100K",[298,3149,3150],{},"10K - 1M",[277,3152,3153,3158,3161,3164],{},[298,3154,3155],{},[181,3156,3157],{},"Query Complexity",[298,3159,3160],{},"O(n) linear scan",[298,3162,3163],{},"O(log n) approximate NN",[298,3165,3166],{},"O(log n) + graph traversal",[277,3168,3169,3174,3177,3180],{},[298,3170,3171],{},[181,3172,3173],{},"Semantic Understanding",[298,3175,3176],{},"❌",[298,3178,3179],{},"✅",[298,3181,3179],{},[277,3183,3184,3189,3191,3193],{},[298,3185,3186],{},[181,3187,3188],{},"Relationship Reasoning",[298,3190,3176],{},[298,3192,3176],{},[298,3194,3179],{},[277,3196,3197,3202,3204,3206],{},[298,3198,3199],{},[181,3200,3201],{},"Multi-Hop Queries",[298,3203,3176],{},[298,3205,3176],{},[298,3207,3179],{},[277,3209,3210,3215,3218,3221],{},[298,3211,3212],{},[181,3213,3214],{},"Storage Backend",[298,3216,3217],{},"In-memory list",[298,3219,3220],{},"Vector DB (Qdrant, etc.)",[298,3222,3223],{},"Graph DB (Neo4j/PolarDB)",[277,3225,3226,3231,3234,3237],{},[298,3227,3228],{},[181,3229,3230],{},"Configuration Complexity",[298,3232,3233],{},"Low ⭐",[298,3235,3236],{},"Medium ⭐⭐",[298,3238,3239],{},"High ⭐⭐⭐",[277,3241,3242,3247,3250,3253],{},[298,3243,3244],{},[181,3245,3246],{},"Learning Curve",[298,3248,3249],{},"Minimal",[298,3251,3252],{},"Moderate",[298,3254,3255],{},"Steep",[277,3257,3258,3263,3266,3269],{},[298,3259,3260],{},[181,3261,3262],{},"Production Ready",[298,3264,3265],{},"❌ Prototype/demo only",[298,3267,3268],{},"✅ Suitable for most cases",[298,3270,3271],{},"✅ Suitable for complex apps",[3049,3273,3275,3282],{"type":3274},"success",[11,3276,3277,3280],{},[181,3278,3279],{},"Selection Guide",[248,3281],{},[23,3283,3284,3292,3300],{},[26,3285,3286,3289,3290],{},[181,3287,3288],{},"Just getting started?"," → Start with NaiveTextMemory",[248,3291],{},[26,3293,3294,3297,3298],{},[181,3295,3296],{},"Need semantic search?"," → Use GeneralTextMemory",[248,3299],{},[26,3301,3302,3305],{},[181,3303,3304],{},"Need relationship reasoning?"," → Choose TreeTextMemory",[18,3307,134],{"id":3308},"best-practices",[11,3310,3311],{},"Follow these recommendations to make the most of NaiveTextMemory:",[896,3313,3314,3318,3430,3434,3583,3587,3669,3673,3838,3842],{},[168,3315,3317],{"id":3316},"_1-persist-data-regularly","1. Persist Data Regularly",[554,3319,3321],{"className":556,"code":3320,"language":558,"meta":559,"style":559},"# Save immediately after critical operations\nmemory.add(new_memories)\nmemory.dump(\"tmp/mem\")  # ✓ Persist immediately\n\n# Regular automatic backups\nimport schedule\nschedule.every(10).minutes.do(lambda: memory.dump(\"tmp/mem\"))\n",[266,3322,3323,3328,3343,3364,3368,3373,3380],{"__ignoreMap":559},[563,3324,3325],{"class":565,"line":566},[563,3326,3327],{"class":1529},"# Save immediately after critical operations\n",[563,3329,3330,3332,3334,3336,3338,3341],{"class":565,"line":600},[563,3331,320],{"class":573},[563,3333,578],{"class":577},[563,3335,1652],{"class":637},[563,3337,641],{"class":577},[563,3339,3340],{"class":637},"new_memories",[563,3342,653],{"class":577},[563,3344,3345,3347,3349,3351,3353,3355,3357,3359,3361],{"class":565,"line":622},[563,3346,320],{"class":573},[563,3348,578],{"class":577},[563,3350,2534],{"class":637},[563,3352,641],{"class":577},[563,3354,1050],{"class":577},[563,3356,2541],{"class":1058},[563,3358,1050],{"class":577},[563,3360,354],{"class":577},[563,3362,3363],{"class":1529},"  # ✓ Persist immediately\n",[563,3365,3366],{"class":565,"line":629},[563,3367,626],{"emptyLinePlaceholder":625},[563,3369,3370],{"class":565,"line":1094},[563,3371,3372],{"class":1529},"# Regular automatic backups\n",[563,3374,3375,3377],{"class":565,"line":1116},[563,3376,594],{"class":569},[563,3378,3379],{"class":573}," schedule\n",[563,3381,3382,3385,3387,3390,3392,3395,3398,3401,3403,3406,3408,3411,3413,3415,3417,3419,3421,3423,3425,3427],{"class":565,"line":1129},[563,3383,3384],{"class":573},"schedule",[563,3386,578],{"class":577},[563,3388,3389],{"class":637},"every",[563,3391,641],{"class":577},[563,3393,3394],{"class":1100},"10",[563,3396,3397],{"class":577},").",[563,3399,3400],{"class":1135},"minutes",[563,3402,578],{"class":577},[563,3404,3405],{"class":637},"do",[563,3407,641],{"class":577},[563,3409,3410],{"class":1046},"lambda",[563,3412,647],{"class":577},[563,3414,1540],{"class":637},[563,3416,578],{"class":577},[563,3418,2534],{"class":637},[563,3420,641],{"class":577},[563,3422,1050],{"class":577},[563,3424,2541],{"class":1058},[563,3426,1050],{"class":577},[563,3428,3429],{"class":577},"))\n",[168,3431,3433],{"id":3432},"_2-control-memory-scale","2. Control Memory Scale",[554,3435,3437],{"className":556,"code":3436,"language":558,"meta":559,"style":559},"# Regularly clean old memories\nif len(memory.get_all()) > 1000:\n    old_memories = sorted(\n        memory.get_all(),\n        key=lambda m: m.metadata.updated_at\n    )[:100]  # Oldest 100\n    \n    memory.delete([m.id for m in old_memories])\n    print(\"✓ Cleaned 100 old memories\")\n",[266,3438,3439,3444,3470,3482,3494,3519,3533,3538,3568],{"__ignoreMap":559},[563,3440,3441],{"class":565,"line":566},[563,3442,3443],{"class":1529},"# Regularly clean old memories\n",[563,3445,3446,3448,3451,3453,3455,3457,3459,3462,3465,3468],{"class":565,"line":600},[563,3447,2342],{"class":569},[563,3449,3450],{"class":637}," len",[563,3452,641],{"class":577},[563,3454,320],{"class":637},[563,3456,578],{"class":577},[563,3458,2279],{"class":637},[563,3460,3461],{"class":577},"())",[563,3463,3464],{"class":577}," >",[563,3466,3467],{"class":1100}," 1000",[563,3469,2348],{"class":577},[563,3471,3472,3475,3477,3480],{"class":565,"line":622},[563,3473,3474],{"class":573},"    old_memories ",[563,3476,634],{"class":577},[563,3478,3479],{"class":637}," sorted",[563,3481,1322],{"class":577},[563,3483,3484,3487,3489,3491],{"class":565,"line":629},[563,3485,3486],{"class":637},"        memory",[563,3488,578],{"class":577},[563,3490,2279],{"class":637},[563,3492,3493],{"class":577},"(),\n",[563,3495,3496,3499,3501,3503,3506,3508,3510,3512,3514,3516],{"class":565,"line":1094},[563,3497,3498],{"class":1327},"        key",[563,3500,634],{"class":577},[563,3502,3410],{"class":1046},[563,3504,3505],{"class":1327}," m",[563,3507,647],{"class":577},[563,3509,3505],{"class":637},[563,3511,578],{"class":577},[563,3513,337],{"class":1135},[563,3515,578],{"class":577},[563,3517,3518],{"class":1135},"updated_at\n",[563,3520,3521,3524,3527,3530],{"class":565,"line":1116},[563,3522,3523],{"class":577},"    )[:",[563,3525,3526],{"class":1100},"100",[563,3528,3529],{"class":577},"]",[563,3531,3532],{"class":1529},"  # Oldest 100\n",[563,3534,3535],{"class":565,"line":1129},[563,3536,3537],{"class":573},"    \n",[563,3539,3540,3542,3544,3546,3548,3551,3553,3555,3558,3561,3563,3566],{"class":565,"line":1152},[563,3541,2376],{"class":573},[563,3543,578],{"class":577},[563,3545,2660],{"class":637},[563,3547,2663],{"class":577},[563,3549,3550],{"class":637},"m",[563,3552,578],{"class":577},[563,3554,302],{"class":1135},[563,3556,3557],{"class":569}," for",[563,3559,3560],{"class":637}," m ",[563,3562,2190],{"class":569},[563,3564,3565],{"class":637}," old_memories",[563,3567,1634],{"class":577},[563,3569,3570,3572,3574,3576,3579,3581],{"class":565,"line":1169},[563,3571,2211],{"class":637},[563,3573,641],{"class":577},[563,3575,1050],{"class":577},[563,3577,3578],{"class":1058},"✓ Cleaned 100 old memories",[563,3580,1050],{"class":577},[563,3582,653],{"class":577},[168,3584,3586],{"id":3585},"_3-optimize-search-queries","3. Optimize Search Queries",[554,3588,3590],{"className":556,"code":3589,"language":558,"meta":559,"style":559},"# ❌ Poor: Vague query\nresults = memory.search(\"thing\", top_k=5)\n\n# ✅ Good: Use specific keywords\nresults = memory.search(\"tomato\", top_k=5)\n",[266,3591,3592,3597,3629,3633,3638],{"__ignoreMap":559},[563,3593,3594],{"class":565,"line":566},[563,3595,3596],{"class":1529},"# ❌ Poor: Vague query\n",[563,3598,3599,3601,3603,3605,3607,3609,3611,3613,3616,3618,3620,3622,3624,3627],{"class":565,"line":600},[563,3600,2108],{"class":573},[563,3602,634],{"class":577},[563,3604,1540],{"class":573},[563,3606,578],{"class":577},[563,3608,2117],{"class":637},[563,3610,641],{"class":577},[563,3612,1050],{"class":577},[563,3614,3615],{"class":1058},"thing",[563,3617,1050],{"class":577},[563,3619,1572],{"class":577},[563,3621,2131],{"class":1327},[563,3623,634],{"class":577},[563,3625,3626],{"class":1100},"5",[563,3628,653],{"class":577},[563,3630,3631],{"class":565,"line":622},[563,3632,626],{"emptyLinePlaceholder":625},[563,3634,3635],{"class":565,"line":629},[563,3636,3637],{"class":1529},"# ✅ Good: Use specific keywords\n",[563,3639,3640,3642,3644,3646,3648,3650,3652,3654,3657,3659,3661,3663,3665,3667],{"class":565,"line":1094},[563,3641,2108],{"class":573},[563,3643,634],{"class":577},[563,3645,1540],{"class":573},[563,3647,578],{"class":577},[563,3649,2117],{"class":637},[563,3651,641],{"class":577},[563,3653,1050],{"class":577},[563,3655,3656],{"class":1058},"tomato",[563,3658,1050],{"class":577},[563,3660,1572],{"class":577},[563,3662,2131],{"class":1327},[563,3664,634],{"class":577},[563,3666,3626],{"class":1100},[563,3668,653],{"class":577},[168,3670,3672],{"id":3671},"_4-use-metadata-wisely","4. Use Metadata Wisely",[554,3674,3676],{"className":556,"code":3675,"language":558,"meta":559,"style":559},"# Set clear metadata when adding memories\nmemory.add({\n    \"memory\": \"User prefers dark mode\",\n    \"metadata\": {\n        \"type\": \"opinion\",          # ✓ Clear classification\n        \"tags\": [\"UI\", \"preference\"],  # ✓ Easy filtering\n        \"confidence\": 90.0,         # ✓ Mark confidence\n        \"entities\": [\"user\", \"dark mode\"]  # ✓ Entity annotation\n    }\n})\n",[266,3677,3678,3683,3694,3713,3725,3746,3779,3797,3829,3833],{"__ignoreMap":559},[563,3679,3680],{"class":565,"line":566},[563,3681,3682],{"class":1529},"# Set clear metadata when adding memories\n",[563,3684,3685,3687,3689,3691],{"class":565,"line":600},[563,3686,320],{"class":573},[563,3688,578],{"class":577},[563,3690,1652],{"class":637},[563,3692,3693],{"class":577},"({\n",[563,3695,3696,3698,3700,3702,3704,3706,3709,3711],{"class":565,"line":622},[563,3697,1082],{"class":577},[563,3699,320],{"class":1058},[563,3701,1050],{"class":577},[563,3703,647],{"class":577},[563,3705,1055],{"class":577},[563,3707,3708],{"class":1058},"User prefers dark mode",[563,3710,1050],{"class":577},[563,3712,1064],{"class":577},[563,3714,3715,3717,3719,3721,3723],{"class":565,"line":629},[563,3716,1082],{"class":577},[563,3718,337],{"class":1058},[563,3720,1050],{"class":577},[563,3722,647],{"class":577},[563,3724,1077],{"class":577},[563,3726,3727,3729,3731,3733,3735,3737,3739,3741,3743],{"class":565,"line":1094},[563,3728,1132],{"class":577},[563,3730,381],{"class":1058},[563,3732,1050],{"class":577},[563,3734,647],{"class":577},[563,3736,1055],{"class":577},[563,3738,2447],{"class":1058},[563,3740,1050],{"class":577},[563,3742,1572],{"class":577},[563,3744,3745],{"class":1529},"          # ✓ Clear classification\n",[563,3747,3748,3750,3752,3754,3756,3758,3760,3763,3765,3767,3769,3771,3773,3776],{"class":565,"line":1116},[563,3749,1132],{"class":577},[563,3751,493],{"class":1058},[563,3753,1050],{"class":577},[563,3755,647],{"class":577},[563,3757,2857],{"class":577},[563,3759,1050],{"class":577},[563,3761,3762],{"class":1058},"UI",[563,3764,1050],{"class":577},[563,3766,1572],{"class":577},[563,3768,1055],{"class":577},[563,3770,2900],{"class":1058},[563,3772,1050],{"class":577},[563,3774,3775],{"class":577},"],",[563,3777,3778],{"class":1529},"  # ✓ Easy filtering\n",[563,3780,3781,3783,3785,3787,3789,3792,3794],{"class":565,"line":1129},[563,3782,1132],{"class":577},[563,3784,455],{"class":1058},[563,3786,1050],{"class":577},[563,3788,647],{"class":577},[563,3790,3791],{"class":1100}," 90.0",[563,3793,1572],{"class":577},[563,3795,3796],{"class":1529},"         # ✓ Mark confidence\n",[563,3798,3799,3801,3803,3805,3807,3809,3811,3813,3815,3817,3819,3822,3824,3826],{"class":565,"line":1152},[563,3800,1132],{"class":577},[563,3802,473],{"class":1058},[563,3804,1050],{"class":577},[563,3806,647],{"class":577},[563,3808,2857],{"class":577},[563,3810,1050],{"class":577},[563,3812,1567],{"class":1058},[563,3814,1050],{"class":577},[563,3816,1572],{"class":577},[563,3818,1055],{"class":577},[563,3820,3821],{"class":1058},"dark mode",[563,3823,1050],{"class":577},[563,3825,3529],{"class":577},[563,3827,3828],{"class":1529},"  # ✓ Entity annotation\n",[563,3830,3831],{"class":565,"line":1169},[563,3832,2926],{"class":577},[563,3834,3835],{"class":565,"line":1186},[563,3836,3837],{"class":577},"})\n",[168,3839,3841],{"id":3840},"_5-plan-upgrade-path","5. Plan Upgrade Path",[554,3843,3845],{"className":556,"code":3844,"language":558,"meta":559,"style":559},"# Monitor memory count and upgrade timely\nmemory_count = len(memory.get_all())\nif memory_count > 800:\n    print(\"⚠️ Memory count approaching limit, consider upgrading to GeneralTextMemory\")\n    # Migration code reference:\n    # 1. Export existing memories: memory.dump(\"backup\")\n    # 2. Create GeneralTextMemory configuration\n    # 3. Import memories to new module\n",[266,3846,3847,3852,3872,3887,3902,3907,3912,3917],{"__ignoreMap":559},[563,3848,3849],{"class":565,"line":566},[563,3850,3851],{"class":1529},"# Monitor memory count and upgrade timely\n",[563,3853,3854,3857,3859,3861,3863,3865,3867,3869],{"class":565,"line":600},[563,3855,3856],{"class":573},"memory_count ",[563,3858,634],{"class":577},[563,3860,3450],{"class":637},[563,3862,641],{"class":577},[563,3864,320],{"class":637},[563,3866,578],{"class":577},[563,3868,2279],{"class":637},[563,3870,3871],{"class":577},"())\n",[563,3873,3874,3876,3879,3882,3885],{"class":565,"line":622},[563,3875,2342],{"class":569},[563,3877,3878],{"class":573}," memory_count ",[563,3880,3881],{"class":577},">",[563,3883,3884],{"class":1100}," 800",[563,3886,2348],{"class":577},[563,3888,3889,3891,3893,3895,3898,3900],{"class":565,"line":629},[563,3890,2211],{"class":637},[563,3892,641],{"class":577},[563,3894,1050],{"class":577},[563,3896,3897],{"class":1058},"⚠️ Memory count approaching limit, consider upgrading to GeneralTextMemory",[563,3899,1050],{"class":577},[563,3901,653],{"class":577},[563,3903,3904],{"class":565,"line":1094},[563,3905,3906],{"class":1529},"    # Migration code reference:\n",[563,3908,3909],{"class":565,"line":1116},[563,3910,3911],{"class":1529},"    # 1. Export existing memories: memory.dump(\"backup\")\n",[563,3913,3914],{"class":565,"line":1129},[563,3915,3916],{"class":1529},"    # 2. Create GeneralTextMemory configuration\n",[563,3918,3919],{"class":565,"line":1152},[563,3920,3921],{"class":1529},"    # 3. Import memories to new module\n",[18,3923,140],{"id":3924},"next-steps",[11,3926,3927],{},"Congratulations! You've mastered the core usage of NaiveTextMemory. Next, you can:",[173,3929,3931],{"icon":3930},"ph:arrow-right-duotone",[23,3932,3933,3942,3951,3962,3972],{},[26,3934,3935,3938,3939,3941],{},[181,3936,3937],{},"Upgrade to Vector Search",": Learn about ",[29,3940,254],{"href":253},"'s semantic retrieval capabilities",[26,3943,3944,3947,3948,3950],{},[181,3945,3946],{},"Explore Graph Structure",": Understand ",[29,3949,3072],{"href":3071},"'s relationship reasoning features",[26,3952,3953,3956,3957,3961],{},[181,3954,3955],{},"Integrate into Applications",": Check ",[29,3958,3960],{"href":3959},"/api-reference/search-memories","Complete API Documentation"," to build production-grade applications",[26,3963,3964,3967,3968,3971],{},[181,3965,3966],{},"Run Example Code",": Browse the ",[266,3969,3970],{},"/examples/"," directory for more practical cases",[26,3973,3974,3977,3978,3982,3983],{},[181,3975,3976],{},"Learn Graph Databases",": If you need advanced features, learn about ",[29,3979,3981],{"href":3980},"/open_source/modules/memories/neo4j_graph_db","Neo4j"," or ",[29,3984,3986],{"href":3985},"/open_source/modules/memories/polardb_graph_db","PolarDB",[3049,3988,3989],{"type":3274},[11,3990,3991,3994,3996],{},[181,3992,3993],{},"Tip",[248,3995],{},"\nNaiveTextMemory is the perfect starting point for learning MemOS. When your application needs more powerful features, you can seamlessly migrate to other memory modules!",[3998,3999,4000],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":559,"searchDepth":600,"depth":600,"links":4002},[4003,4004,4005,4009,4014,4020,4025,4029,4030,4037],{"id":20,"depth":600,"text":21},{"id":143,"depth":600,"text":32},{"id":166,"depth":600,"text":38,"children":4006},[4007,4008],{"id":170,"depth":622,"text":171},{"id":217,"depth":622,"text":218},{"id":258,"depth":600,"text":44,"children":4010},[4011,4012],{"id":261,"depth":622,"text":52},{"id":350,"depth":622,"text":4013},"Metadata Fields (TextualMemoryMetadata)",{"id":549,"depth":600,"text":70,"children":4015},[4016,4017,4018,4019],{"id":552,"depth":622,"text":78},{"id":656,"depth":622,"text":84},{"id":881,"depth":622,"text":64},{"id":957,"depth":622,"text":90},{"id":1269,"depth":600,"text":96,"children":4021},[4022,4023,4024],{"id":1272,"depth":622,"text":104},{"id":1717,"depth":622,"text":110},{"id":2729,"depth":622,"text":116},{"id":2964,"depth":600,"text":122,"children":4026},[4027,4028],{"id":2967,"depth":622,"text":2968},{"id":3011,"depth":622,"text":3012},{"id":3076,"depth":600,"text":128},{"id":3308,"depth":600,"text":134,"children":4031},[4032,4033,4034,4035,4036],{"id":3316,"depth":622,"text":3317},{"id":3432,"depth":622,"text":3433},{"id":3585,"depth":622,"text":3586},{"id":3671,"depth":622,"text":3672},{"id":3840,"depth":622,"text":3841},{"id":3924,"depth":600,"text":140},"The most lightweight memory module in MemOS, designed for rapid prototyping and simple scenarios. No vector database required—quickly retrieve memories using keyword matching.","md",{},"/en/open_source/modules/memories/naive_textual_memory",{"title":5,"description":13},"en/open_source/modules/memories/naive_textual_memory","bBbxlAee6nly6JUzxQjicUNmL8RaVR1zuhko0_EKaDk",[4046,4054],{"title":4047,"path":4048,"stem":4049,"icon":4050,"framework":6,"module":6,"class":4051,"target":-1,"active":4052,"defaultOpen":4052,"children":-1,"description":4053},"Memory Modules Overview","/open_source/modules/memories/overview","open_source/modules/memories/overview","i-ri-database-2-line",[],false,"Complete guide to MemOS memory systems - from lightweight text memory to advanced graph structures, choose the right memory module for your needs",{"title":4055,"path":253,"stem":4056,"icon":4057,"framework":6,"module":6,"class":4058,"target":-1,"active":4052,"defaultOpen":4052,"children":-1,"description":4059},"General Textual Memory","open_source/modules/memories/general_textual_memory","i-ri-file-text-line",[],"GeneralTextMemory is a flexible, vector-based textual memory module in MemOS, designed for storing, searching, and managing unstructured knowledge. It is suitable for conversational agents, personal assistants, and any system requiring semantic memory retrieval.",1770372094075]