[{"data":1,"prerenderedAt":1554},["ShallowReactive",2],{"/open_source/modules/memories/preference_textual_memory":3,"surround-/open_source/modules/memories/preference_textual_memory":1539},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":1532,"description":518,"extension":1533,"links":6,"meta":1534,"navigation":6,"path":1535,"seo":1536,"stem":1537,"__hash__":1538},"docs/en/open_source/modules/memories/preference_textual_memory.md","PreferenceTextMemory: Textual Memory for User Preferences",null,{"type":8,"value":9,"toc":1506},"minimark",[10,15,141,144,148,197,200,220,228,231,234,244,264,267,312,326,331,473,476,479,506,509,512,544,547,690,693,699,707,710,713,1146,1149,1152,1502],[11,12,14],"h2",{"id":13},"table-of-contents","Table of Contents",[16,17,18,40,71,97],"ul",{},[19,20,21,26],"li",{},[22,23,25],"a",{"href":24},"#why-preference-memory-is-needed","Why Preference Memory is Needed",[16,27,28,34],{},[19,29,30],{},[22,31,33],{"href":32},"#key-features","Key Features",[19,35,36],{},[22,37,39],{"href":38},"#application-scenarios","Application Scenarios",[19,41,42,46],{},[22,43,45],{"href":44},"#core-concepts-and-workflow","Core Concepts and Workflow",[16,47,48,54,65],{},[19,49,50],{},[22,51,53],{"href":52},"#memory-structure","Memory Structure",[19,55,56],{},[22,57,59,60,64],{"href":58},"#metadata-fields-preferencetextualmemorymetadata","Metadata Fields (",[61,62,63],"code",{},"PreferenceTextualMemoryMetadata",")",[19,66,67],{},[22,68,70],{"href":69},"#core-workflow","Core Workflow",[19,72,73,77],{},[22,74,76],{"href":75},"#api-reference","API Reference",[16,78,79,85,91],{},[19,80,81],{},[22,82,84],{"href":83},"#initialization","Initialization",[19,86,87],{},[22,88,90],{"href":89},"#core-methods","Core Methods",[19,92,93],{},[22,94,96],{"href":95},"#file-storage","File Storage",[19,98,99,103],{},[22,100,102],{"href":101},"#hands-on-practice-from-zero-to-one","Hands-on Practice: From Zero to One",[16,104,105,111,117,123,129,135],{},[19,106,107],{},[22,108,110],{"href":109},"#create-preferencetextmemory-configuration","Create PreferenceTextMemory Configuration",[19,112,113],{},[22,114,116],{"href":115},"#initialize-preferencetextmemory","Initialize PreferenceTextMemory",[19,118,119],{},[22,120,122],{"href":121},"#extract-structured-memory","Extract Structured Memory",[19,124,125],{},[22,126,128],{"href":127},"#search-memory","Search Memory",[19,130,131],{},[22,132,134],{"href":133},"#backup-and-restore","Backup and Restore",[19,136,137],{},[22,138,140],{"href":139},"#complete-code-example","Complete Code Example",[11,142,25],{"id":143},"why-preference-memory-is-needed",[145,146,33],"h3",{"id":147},"key-features",[149,150,152],"list",{"icon":151},"ph:check-circle-duotone",[16,153,154,161,167,173,179,185,191],{},[19,155,156,160],{},[157,158,159],"strong",{},"Dual Preference Extraction",": Automatically identifies explicit and implicit preferences",[19,162,163,166],{},[157,164,165],{},"Semantic Understanding",": Uses vector embeddings to understand the deep meaning of preferences",[19,168,169,172],{},[157,170,171],{},"Smart Deduplication",": Automatically detects and merges duplicate or conflicting preferences",[19,174,175,178],{},[157,176,177],{},"Precise Retrieval",": Semantic search based on vector similarity",[19,180,181,184],{},[157,182,183],{},"Persistent Storage",": Supports vector databases (Qdrant/Milvus)",[19,186,187,190],{},[157,188,189],{},"Scalability",": Supports large-scale preference data management",[19,192,193,196],{},[157,194,195],{},"Personalization Enhancement",": Maintains independent preference profiles for each user",[145,198,39],{"id":199},"application-scenarios",[149,201,203],{"icon":202},"ph:lightbulb-duotone",[16,204,205,208,211,214,217],{},[19,206,207],{},"Personalized conversational agents (remembering user likes/dislikes)",[19,209,210],{},"Intelligent recommendation systems (recommendations based on preferences)",[19,212,213],{},"Customer service systems (providing customized services)",[19,215,216],{},"Content filtering systems (filtering content based on preferences)",[19,218,219],{},"Learning assistance systems (adapting to learning styles)",[221,222,223,224,227],"p",{},"In conclusion, when you need to build systems that can \"remember\" user preferences and provide personalized services accordingly, ",[61,225,226],{},"PreferenceTextMemory"," is the best choice.\n::",[11,229,45],{"id":230},"core-concepts-and-workflow",[145,232,53],{"id":233},"memory-structure",[221,235,236,237,239,240,243],{},"In MemOS, preference memory is represented by ",[61,238,226],{},", where each memory item is a ",[61,241,242],{},"TextualMemoryItem"," stored in Milvus database.",[16,245,246,252,258],{},[19,247,248,251],{},[61,249,250],{},"id",": Unique memory ID (automatically generated if omitted)",[19,253,254,257],{},[61,255,256],{},"memory",": Main text content",[19,259,260,263],{},[61,261,262],{},"metadata",": Includes hierarchical structure information, embeddings, tags, entities, sources, and status",[221,265,266],{},"Preference memory can be divided into explicit preference memory and implicit preference memory:",[16,268,269,293],{},[19,270,271,274,275,278,279],{},[157,272,273],{},"Explicit Preference Memory",": Preferences that users explicitly express. ",[157,276,277],{},"Examples",":",[16,280,281,284,287,290],{},[19,282,283],{},"\"I like dark mode\"",[19,285,286],{},"\"I don't eat spicy food\"",[19,288,289],{},"\"Please use short answers\"",[19,291,292],{},"\"I prefer technical documentation over video tutorials\"",[19,294,295,298,299,278,301],{},[157,296,297],{},"Implicit Preference Memory",": Preferences inferred from user behavior and conversation patterns. ",[157,300,277],{},[16,302,303,306,309],{},[19,304,305],{},"User always asks for code examples → prefers practice-oriented learning",[19,307,308],{},"User frequently requests detailed explanations → prefers in-depth understanding",[19,310,311],{},"User mentions environmental topics multiple times → concerned about sustainable development",[313,314,315],"note",{},[221,316,317,320,323,325],{},[157,318,319],{},"Intelligent Extraction",[321,322],"br",{},[61,324,226],{}," automatically extracts both explicit and implicit preferences from conversations using LLM, no manual annotation required!",[145,327,59,329,64],{"id":328},"metadata-fields-preferencetextualmemorymetadata",[61,330,63],{},[332,333,334,350],"table",{},[335,336,337],"thead",{},[338,339,340,344,347],"tr",{},[341,342,343],"th",{},"Field",[341,345,346],{},"Type",[341,348,349],{},"Description",[351,352,353,373,388,402,416,430,444,458],"tbody",{},[338,354,355,361,370],{},[356,357,358],"td",{},[61,359,360],{},"preference_type",[356,362,363,366,367],{},[61,364,365],{},"\"explicit_preference\"",", ",[61,368,369],{},"\"implicit_preference\"",[356,371,372],{},"Preference memory type, divided into explicit and implicit preference memory",[338,374,375,380,385],{},[356,376,377],{},[61,378,379],{},"dialog_id",[356,381,382],{},[61,383,384],{},"str",[356,386,387],{},"Dialog ID, used to associate preference memory with specific dialogs",[338,389,390,395,399],{},[356,391,392],{},[61,393,394],{},"original_text",[356,396,397],{},[61,398,384],{},[356,400,401],{},"Original text containing user preference information",[338,403,404,409,413],{},[356,405,406],{},[61,407,408],{},"embedding",[356,410,411],{},[61,412,384],{},[356,414,415],{},"Embedding vector for semantic search and retrieval",[338,417,418,423,427],{},[356,419,420],{},[61,421,422],{},"preference",[356,424,425],{},[61,426,384],{},[356,428,429],{},"User preference information",[338,431,432,437,441],{},[356,433,434],{},[61,435,436],{},"create_at",[356,438,439],{},[61,440,384],{},[356,442,443],{},"Creation timestamp (ISO 8601)",[338,445,446,451,455],{},[356,447,448],{},[61,449,450],{},"mem_cube_id",[356,452,453],{},[61,454,384],{},[356,456,457],{},"Memory cube ID, used to associate preference memory with specific memory cubes",[338,459,460,465,470],{},[356,461,462],{},[61,463,464],{},"score",[356,466,467],{},[61,468,469],{},"float ",[356,471,472],{},"Similarity score between preference memory and query in search results",[145,474,70],{"id":475},"core-workflow",[221,477,478],{},"When you run this example, your workflow will:",[480,481,482,488,494,500],"ol",{},[19,483,484,487],{},[157,485,486],{},"Extraction:"," Use LLM to extract structured memory from raw text.",[19,489,490,493],{},[157,491,492],{},"Embedding:"," Generate vector embeddings for similarity search.",[19,495,496,499],{},[157,497,498],{},"Storage:"," Store preference memory in Milvus database while updating metadata fields.",[19,501,502,505],{},[157,503,504],{},"Search:"," Return the most relevant preference memories through vector similarity queries.",[11,507,76],{"id":508},"api-reference",[145,510,84],{"id":511},"initialization",[513,514,519],"pre",{"className":515,"code":516,"language":517,"meta":518,"style":518},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","PreferenceTextMemory(config: PreferenceTextMemoryConfig)\n","python","",[61,520,521],{"__ignoreMap":518},[522,523,526,529,533,536,538,541],"span",{"class":524,"line":525},"line",1,[522,527,226],{"class":528},"s2Zo4",[522,530,532],{"class":531},"sMK4o","(",[522,534,535],{"class":528},"config",[522,537,278],{"class":531},[522,539,540],{"class":528}," PreferenceTextMemoryConfig",[522,542,543],{"class":531},")\n",[145,545,90],{"id":546},"core-methods",[332,548,549,558],{},[335,550,551],{},[338,552,553,556],{},[341,554,555],{},"Method",[341,557,349],{},[351,559,560,570,580,590,600,610,620,630,640,650,660,670,680],{},[338,561,562,567],{},[356,563,564],{},[61,565,566],{},"get_memory(messages)",[356,568,569],{},"Extract preference memories from original dialogues.",[338,571,572,577],{},[356,573,574],{},[61,575,576],{},"search(query, top_k)",[356,578,579],{},"Retrieve top-k preference memories using vector similarity.",[338,581,582,587],{},[356,583,584],{},[61,585,586],{},"load(dir)",[356,588,589],{},"Load preference memories from stored files.",[338,591,592,597],{},[356,593,594],{},[61,595,596],{},"dump(dir)",[356,598,599],{},"Serialize all preference memories to JSON files in the directory.",[338,601,602,607],{},[356,603,604],{},[61,605,606],{},"add(memories)",[356,608,609],{},"Batch add preference memories to Milvus database.",[338,611,612,617],{},[356,613,614],{},[61,615,616],{},"get_with_collection_name(collection_name, memory_id)",[356,618,619],{},"Get specific type of preference memory by collection name and memory ID.",[338,621,622,627],{},[356,623,624],{},[61,625,626],{},"get_by_ids_with_collection_name(collection_name, memory_ids)",[356,628,629],{},"Batch get specific type of preference memory by collection name and memory IDs.",[338,631,632,637],{},[356,633,634],{},[61,635,636],{},"get_all()",[356,638,639],{},"Get all preference memories.",[338,641,642,647],{},[356,643,644],{},[61,645,646],{},"get_memory_by_filter(filter)",[356,648,649],{},"Get preference memories based on filter conditions.",[338,651,652,657],{},[356,653,654],{},[61,655,656],{},"delete(memory_ids)",[356,658,659],{},"Delete preference memories by specified IDs.",[338,661,662,667],{},[356,663,664],{},[61,665,666],{},"delete_by_filter(filter)",[356,668,669],{},"Delete preference memories based on filter conditions.",[338,671,672,677],{},[356,673,674],{},[61,675,676],{},"delete_with_collection_name(collection_name, memory_ids)",[356,678,679],{},"Delete all preference memories with specified collection name and IDs.",[338,681,682,687],{},[356,683,684],{},[61,685,686],{},"delete_all()",[356,688,689],{},"Delete all preference memories.",[145,691,96],{"id":692},"file-storage",[221,694,695,696,698],{},"When calling ",[61,697,596],{},", MemOS will serialize all preference memories to JSON files in the directory:",[513,700,705],{"className":701,"code":703,"language":704},[702],"language-text","\u003Cdir>/\u003Cconfig.memory_filename>\n","text",[61,706,703],{"__ignoreMap":518},[708,709],"hr",{},[11,711,102],{"id":712},"hands-on-practice-from-zero-to-one",[714,715,716,719,722,733,801,804,855,858,863,1052,1055,1096,1099,1102],"steps",{},[145,717,110],{"id":718},"create-preferencetextmemory-configuration",[221,720,721],{},"Define:",[16,723,724,727,730],{},[19,725,726],{},"Your embedding model (e.g., nomic-embed-text:latest),",[19,728,729],{},"Your Milvus database backend,",[19,731,732],{},"Memory extractor (based on LLM) (optional).",[513,734,736],{"className":515,"code":735,"language":517,"meta":518,"style":518},"from memos.configs.memory import PreferenceTextMemoryConfig\n\nconfig = PreferenceTextMemoryConfig.from_json_file(\"examples/data/config/preference_config.json\")\n",[61,737,738,765,772],{"__ignoreMap":518},[522,739,740,744,748,751,754,756,759,762],{"class":524,"line":525},[522,741,743],{"class":742},"s7zQu","from",[522,745,747],{"class":746},"sTEyZ"," memos",[522,749,750],{"class":531},".",[522,752,753],{"class":746},"configs",[522,755,750],{"class":531},[522,757,758],{"class":746},"memory ",[522,760,761],{"class":742},"import",[522,763,764],{"class":746}," PreferenceTextMemoryConfig\n",[522,766,768],{"class":524,"line":767},2,[522,769,771],{"emptyLinePlaceholder":770},true,"\n",[522,773,775,778,781,783,785,788,790,793,797,799],{"class":524,"line":774},3,[522,776,777],{"class":746},"config ",[522,779,780],{"class":531},"=",[522,782,540],{"class":746},[522,784,750],{"class":531},[522,786,787],{"class":528},"from_json_file",[522,789,532],{"class":531},[522,791,792],{"class":531},"\"",[522,794,796],{"class":795},"sfazB","examples/data/config/preference_config.json",[522,798,792],{"class":531},[522,800,543],{"class":531},[145,802,116],{"id":803},"initialize-preferencetextmemory",[513,805,807],{"className":515,"code":806,"language":517,"meta":518,"style":518},"from memos.memories.textual.preference import PreferenceTextMemory\n\npreference_memory = PreferenceTextMemory(config)\n",[61,808,809,835,839],{"__ignoreMap":518},[522,810,811,813,815,817,820,822,825,827,830,832],{"class":524,"line":525},[522,812,743],{"class":742},[522,814,747],{"class":746},[522,816,750],{"class":531},[522,818,819],{"class":746},"memories",[522,821,750],{"class":531},[522,823,824],{"class":746},"textual",[522,826,750],{"class":531},[522,828,829],{"class":746},"preference ",[522,831,761],{"class":742},[522,833,834],{"class":746}," PreferenceTextMemory\n",[522,836,837],{"class":524,"line":767},[522,838,771],{"emptyLinePlaceholder":770},[522,840,841,844,846,849,851,853],{"class":524,"line":774},[522,842,843],{"class":746},"preference_memory ",[522,845,780],{"class":531},[522,847,848],{"class":528}," PreferenceTextMemory",[522,850,532],{"class":531},[522,852,535],{"class":528},[522,854,543],{"class":531},[145,856,122],{"id":857},"extract-structured-memory",[221,859,860,861,750],{},"Use the memory extractor to parse dialogues, files, or documents into multiple ",[61,862,242],{},[513,864,866],{"className":515,"code":865,"language":517,"meta":518,"style":518},"scene_data = [[\n    {\"role\": \"user\", \"content\": \"Tell me about your childhood.\"},\n    {\"role\": \"assistant\", \"content\": \"I loved playing in the garden with my dog.\"}\n]]\n\nmemories = preference_memory.get_memory(scene_data, type=\"chat\", info={\"user_id\": \"1234\"})\npreference_memory.add(memories)\n",[61,867,868,878,922,961,967,972,1035],{"__ignoreMap":518},[522,869,870,873,875],{"class":524,"line":525},[522,871,872],{"class":746},"scene_data ",[522,874,780],{"class":531},[522,876,877],{"class":531}," [[\n",[522,879,880,883,885,888,890,892,895,898,900,903,905,908,910,912,914,917,919],{"class":524,"line":767},[522,881,882],{"class":531},"    {",[522,884,792],{"class":531},[522,886,887],{"class":795},"role",[522,889,792],{"class":531},[522,891,278],{"class":531},[522,893,894],{"class":531}," \"",[522,896,897],{"class":795},"user",[522,899,792],{"class":531},[522,901,902],{"class":531},",",[522,904,894],{"class":531},[522,906,907],{"class":795},"content",[522,909,792],{"class":531},[522,911,278],{"class":531},[522,913,894],{"class":531},[522,915,916],{"class":795},"Tell me about your childhood.",[522,918,792],{"class":531},[522,920,921],{"class":531},"},\n",[522,923,924,926,928,930,932,934,936,939,941,943,945,947,949,951,953,956,958],{"class":524,"line":774},[522,925,882],{"class":531},[522,927,792],{"class":531},[522,929,887],{"class":795},[522,931,792],{"class":531},[522,933,278],{"class":531},[522,935,894],{"class":531},[522,937,938],{"class":795},"assistant",[522,940,792],{"class":531},[522,942,902],{"class":531},[522,944,894],{"class":531},[522,946,907],{"class":795},[522,948,792],{"class":531},[522,950,278],{"class":531},[522,952,894],{"class":531},[522,954,955],{"class":795},"I loved playing in the garden with my dog.",[522,957,792],{"class":531},[522,959,960],{"class":531},"}\n",[522,962,964],{"class":524,"line":963},4,[522,965,966],{"class":531},"]]\n",[522,968,970],{"class":524,"line":969},5,[522,971,771],{"emptyLinePlaceholder":770},[522,973,975,978,980,983,985,988,990,993,995,999,1001,1003,1006,1008,1010,1013,1016,1018,1021,1023,1025,1027,1030,1032],{"class":524,"line":974},6,[522,976,977],{"class":746},"memories ",[522,979,780],{"class":531},[522,981,982],{"class":746}," preference_memory",[522,984,750],{"class":531},[522,986,987],{"class":528},"get_memory",[522,989,532],{"class":531},[522,991,992],{"class":528},"scene_data",[522,994,902],{"class":531},[522,996,998],{"class":997},"sHdIc"," type",[522,1000,780],{"class":531},[522,1002,792],{"class":531},[522,1004,1005],{"class":795},"chat",[522,1007,792],{"class":531},[522,1009,902],{"class":531},[522,1011,1012],{"class":997}," info",[522,1014,1015],{"class":531},"={",[522,1017,792],{"class":531},[522,1019,1020],{"class":795},"user_id",[522,1022,792],{"class":531},[522,1024,278],{"class":531},[522,1026,894],{"class":531},[522,1028,1029],{"class":795},"1234",[522,1031,792],{"class":531},[522,1033,1034],{"class":531},"})\n",[522,1036,1038,1041,1043,1046,1048,1050],{"class":524,"line":1037},7,[522,1039,1040],{"class":746},"preference_memory",[522,1042,750],{"class":531},[522,1044,1045],{"class":528},"add",[522,1047,532],{"class":531},[522,1049,819],{"class":528},[522,1051,543],{"class":531},[145,1053,128],{"id":1054},"search-memory",[513,1056,1058],{"className":515,"code":1057,"language":517,"meta":518,"style":518},"results = preference_memory.search(\"Tell me more about the user\", top_k=2)\n",[61,1059,1060],{"__ignoreMap":518},[522,1061,1062,1065,1067,1069,1071,1074,1076,1078,1081,1083,1085,1088,1090,1094],{"class":524,"line":525},[522,1063,1064],{"class":746},"results ",[522,1066,780],{"class":531},[522,1068,982],{"class":746},[522,1070,750],{"class":531},[522,1072,1073],{"class":528},"search",[522,1075,532],{"class":531},[522,1077,792],{"class":531},[522,1079,1080],{"class":795},"Tell me more about the user",[522,1082,792],{"class":531},[522,1084,902],{"class":531},[522,1086,1087],{"class":997}," top_k",[522,1089,780],{"class":531},[522,1091,1093],{"class":1092},"sbssI","2",[522,1095,543],{"class":531},[145,1097,134],{"id":1098},"backup-and-restore",[221,1100,1101],{},"Support persistent storage and on-demand reloading of preference memories:",[513,1103,1105],{"className":515,"code":1104,"language":517,"meta":518,"style":518},"preference_memory.dump(\"tmp/pref_memories\")\npreference_memory.load(\"tmp/pref_memories\")\n",[61,1106,1107,1127],{"__ignoreMap":518},[522,1108,1109,1111,1113,1116,1118,1120,1123,1125],{"class":524,"line":525},[522,1110,1040],{"class":746},[522,1112,750],{"class":531},[522,1114,1115],{"class":528},"dump",[522,1117,532],{"class":531},[522,1119,792],{"class":531},[522,1121,1122],{"class":795},"tmp/pref_memories",[522,1124,792],{"class":531},[522,1126,543],{"class":531},[522,1128,1129,1131,1133,1136,1138,1140,1142,1144],{"class":524,"line":767},[522,1130,1040],{"class":746},[522,1132,750],{"class":531},[522,1134,1135],{"class":528},"load",[522,1137,532],{"class":531},[522,1139,792],{"class":531},[522,1141,1122],{"class":795},[522,1143,792],{"class":531},[522,1145,543],{"class":531},[145,1147,140],{"id":1148},"complete-code-example",[221,1150,1151],{},"This example integrates all the above steps, providing an end-to-end complete workflow — copy and run!",[513,1153,1155],{"className":515,"code":1154,"language":517,"meta":518,"style":518},"from memos.configs.memory import PreferenceTextMemoryConfig\nfrom memos.memories.textual.preference import PreferenceTextMemory\n\n# Create PreferenceTextMemory\nconfig = PreferenceTextMemoryConfig.from_json_file(\"examples/data/config/preference_config.json\")\n\npreference_memory = PreferenceTextMemory(config)\npreference_memory.delete_all()\n\nscene_data = [[\n    {\"role\": \"user\", \"content\": \"Tell me about your childhood.\"},\n    {\"role\": \"assistant\", \"content\": \"I loved playing in the garden with my dog.\"}\n]]\n\n# Extract preference memories from original dialogues and add to Milvus database\nmemories = preference_memory.get_memory(scene_data, type=\"chat\", info={\"user_id\": \"1234\"})\npreference_memory.add(memories)\n\n# Search memory\nresults = preference_memory.search(\"Tell me more about the user\", top_k=2)\n\n# Persist preference memories\npreference_memory.dump(\"tmp/pref_memories\")\n",[61,1156,1157,1175,1197,1201,1207,1229,1233,1247,1260,1265,1274,1311,1348,1353,1358,1364,1415,1430,1435,1441,1472,1477,1483],{"__ignoreMap":518},[522,1158,1159,1161,1163,1165,1167,1169,1171,1173],{"class":524,"line":525},[522,1160,743],{"class":742},[522,1162,747],{"class":746},[522,1164,750],{"class":531},[522,1166,753],{"class":746},[522,1168,750],{"class":531},[522,1170,758],{"class":746},[522,1172,761],{"class":742},[522,1174,764],{"class":746},[522,1176,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195],{"class":524,"line":767},[522,1178,743],{"class":742},[522,1180,747],{"class":746},[522,1182,750],{"class":531},[522,1184,819],{"class":746},[522,1186,750],{"class":531},[522,1188,824],{"class":746},[522,1190,750],{"class":531},[522,1192,829],{"class":746},[522,1194,761],{"class":742},[522,1196,834],{"class":746},[522,1198,1199],{"class":524,"line":774},[522,1200,771],{"emptyLinePlaceholder":770},[522,1202,1203],{"class":524,"line":963},[522,1204,1206],{"class":1205},"sHwdD","# Create PreferenceTextMemory\n",[522,1208,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227],{"class":524,"line":969},[522,1210,777],{"class":746},[522,1212,780],{"class":531},[522,1214,540],{"class":746},[522,1216,750],{"class":531},[522,1218,787],{"class":528},[522,1220,532],{"class":531},[522,1222,792],{"class":531},[522,1224,796],{"class":795},[522,1226,792],{"class":531},[522,1228,543],{"class":531},[522,1230,1231],{"class":524,"line":974},[522,1232,771],{"emptyLinePlaceholder":770},[522,1234,1235,1237,1239,1241,1243,1245],{"class":524,"line":1037},[522,1236,843],{"class":746},[522,1238,780],{"class":531},[522,1240,848],{"class":528},[522,1242,532],{"class":531},[522,1244,535],{"class":528},[522,1246,543],{"class":531},[522,1248,1250,1252,1254,1257],{"class":524,"line":1249},8,[522,1251,1040],{"class":746},[522,1253,750],{"class":531},[522,1255,1256],{"class":528},"delete_all",[522,1258,1259],{"class":531},"()\n",[522,1261,1263],{"class":524,"line":1262},9,[522,1264,771],{"emptyLinePlaceholder":770},[522,1266,1268,1270,1272],{"class":524,"line":1267},10,[522,1269,872],{"class":746},[522,1271,780],{"class":531},[522,1273,877],{"class":531},[522,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309],{"class":524,"line":1276},11,[522,1278,882],{"class":531},[522,1280,792],{"class":531},[522,1282,887],{"class":795},[522,1284,792],{"class":531},[522,1286,278],{"class":531},[522,1288,894],{"class":531},[522,1290,897],{"class":795},[522,1292,792],{"class":531},[522,1294,902],{"class":531},[522,1296,894],{"class":531},[522,1298,907],{"class":795},[522,1300,792],{"class":531},[522,1302,278],{"class":531},[522,1304,894],{"class":531},[522,1306,916],{"class":795},[522,1308,792],{"class":531},[522,1310,921],{"class":531},[522,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344,1346],{"class":524,"line":1313},12,[522,1315,882],{"class":531},[522,1317,792],{"class":531},[522,1319,887],{"class":795},[522,1321,792],{"class":531},[522,1323,278],{"class":531},[522,1325,894],{"class":531},[522,1327,938],{"class":795},[522,1329,792],{"class":531},[522,1331,902],{"class":531},[522,1333,894],{"class":531},[522,1335,907],{"class":795},[522,1337,792],{"class":531},[522,1339,278],{"class":531},[522,1341,894],{"class":531},[522,1343,955],{"class":795},[522,1345,792],{"class":531},[522,1347,960],{"class":531},[522,1349,1351],{"class":524,"line":1350},13,[522,1352,966],{"class":531},[522,1354,1356],{"class":524,"line":1355},14,[522,1357,771],{"emptyLinePlaceholder":770},[522,1359,1361],{"class":524,"line":1360},15,[522,1362,1363],{"class":1205},"# Extract preference memories from original dialogues and add to Milvus database\n",[522,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413],{"class":524,"line":1366},16,[522,1368,977],{"class":746},[522,1370,780],{"class":531},[522,1372,982],{"class":746},[522,1374,750],{"class":531},[522,1376,987],{"class":528},[522,1378,532],{"class":531},[522,1380,992],{"class":528},[522,1382,902],{"class":531},[522,1384,998],{"class":997},[522,1386,780],{"class":531},[522,1388,792],{"class":531},[522,1390,1005],{"class":795},[522,1392,792],{"class":531},[522,1394,902],{"class":531},[522,1396,1012],{"class":997},[522,1398,1015],{"class":531},[522,1400,792],{"class":531},[522,1402,1020],{"class":795},[522,1404,792],{"class":531},[522,1406,278],{"class":531},[522,1408,894],{"class":531},[522,1410,1029],{"class":795},[522,1412,792],{"class":531},[522,1414,1034],{"class":531},[522,1416,1418,1420,1422,1424,1426,1428],{"class":524,"line":1417},17,[522,1419,1040],{"class":746},[522,1421,750],{"class":531},[522,1423,1045],{"class":528},[522,1425,532],{"class":531},[522,1427,819],{"class":528},[522,1429,543],{"class":531},[522,1431,1433],{"class":524,"line":1432},18,[522,1434,771],{"emptyLinePlaceholder":770},[522,1436,1438],{"class":524,"line":1437},19,[522,1439,1440],{"class":1205},"# Search memory\n",[522,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1470],{"class":524,"line":1443},20,[522,1445,1064],{"class":746},[522,1447,780],{"class":531},[522,1449,982],{"class":746},[522,1451,750],{"class":531},[522,1453,1073],{"class":528},[522,1455,532],{"class":531},[522,1457,792],{"class":531},[522,1459,1080],{"class":795},[522,1461,792],{"class":531},[522,1463,902],{"class":531},[522,1465,1087],{"class":997},[522,1467,780],{"class":531},[522,1469,1093],{"class":1092},[522,1471,543],{"class":531},[522,1473,1475],{"class":524,"line":1474},21,[522,1476,771],{"emptyLinePlaceholder":770},[522,1478,1480],{"class":524,"line":1479},22,[522,1481,1482],{"class":1205},"# Persist preference memories\n",[522,1484,1486,1488,1490,1492,1494,1496,1498,1500],{"class":524,"line":1485},23,[522,1487,1040],{"class":746},[522,1489,750],{"class":531},[522,1491,1115],{"class":528},[522,1493,532],{"class":531},[522,1495,792],{"class":531},[522,1497,1122],{"class":795},[522,1499,792],{"class":531},[522,1501,543],{"class":531},[1503,1504,1505],"style",{},"html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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":518,"searchDepth":767,"depth":767,"links":1507},[1508,1509,1513,1519,1524],{"id":13,"depth":767,"text":14},{"id":143,"depth":767,"text":25,"children":1510},[1511,1512],{"id":147,"depth":774,"text":33},{"id":199,"depth":774,"text":39},{"id":230,"depth":767,"text":45,"children":1514},[1515,1516,1518],{"id":233,"depth":774,"text":53},{"id":328,"depth":774,"text":1517},"Metadata Fields (PreferenceTextualMemoryMetadata)",{"id":475,"depth":774,"text":70},{"id":508,"depth":767,"text":76,"children":1520},[1521,1522,1523],{"id":511,"depth":774,"text":84},{"id":546,"depth":774,"text":90},{"id":692,"depth":774,"text":96},{"id":712,"depth":767,"text":102,"children":1525},[1526,1527,1528,1529,1530,1531],{"id":718,"depth":774,"text":110},{"id":803,"depth":774,"text":116},{"id":857,"depth":774,"text":122},{"id":1054,"depth":774,"text":128},{"id":1098,"depth":774,"text":134},{"id":1148,"depth":774,"text":140},"`PreferenceTextMemory` is a textual memory module in MemOS for storing and managing user preferences. It is suitable for scenarios where memory retrieval needs to be based on user preferences.","md",{},"/en/open_source/modules/memories/preference_textual_memory",{"title":5,"description":518},"en/open_source/modules/memories/preference_textual_memory","SmIi3G0vIzHWnpSQk-zMyp1Jha1VGodqEC_RhgeTqKI",[1540,1548],{"title":1541,"path":1542,"stem":1543,"icon":1544,"framework":6,"module":6,"class":1545,"target":-1,"active":1546,"defaultOpen":1546,"children":-1,"description":1547},"General Textual Memory","/open_source/modules/memories/general_textual_memory","open_source/modules/memories/general_textual_memory","i-ri-file-text-line",[],false,"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.",{"title":1549,"path":1550,"stem":1551,"icon":1552,"framework":6,"module":6,"class":1553,"target":-1,"active":1546,"defaultOpen":1546,"children":-1,"description":-1},"Tree Textual Memory","/open_source/modules/memories/tree_textual_memory","open_source/modules/memories/tree_textual_memory","i-ri-tree-line",[],1770372094076]