[{"data":1,"prerenderedAt":1549},["ShallowReactive",2],{"\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fpreference_textual_memory":3,"surround-\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fpreference_textual_memory":1533},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":1526,"description":513,"extension":1527,"links":6,"meta":1528,"navigation":6,"path":1529,"seo":1530,"stem":1531,"__hash__":1532},"docs\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fpreference_textual_memory.md","PreferenceTextMemory: 存储和管理用户偏好的明文记忆",null,{"type":8,"value":9,"toc":1500},"minimark",[10,14,135,137,140,189,191,211,224,226,228,238,258,261,306,320,328,470,472,475,502,505,507,540,542,689,691,697,705,708,711,1141,1143,1146,1496],[11,12,13],"h2",{"id":13},"目录",[15,16,17,39,65,91],"ul",{},[18,19,20,25],"li",{},[21,22,24],"a",{"href":23},"#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E5%81%8F%E5%A5%BD%E8%AE%B0%E5%BF%86","为什么需要偏好记忆",[15,26,27,33],{},[18,28,29],{},[21,30,32],{"href":31},"#%E4%BC%98%E5%8A%BF%E7%89%B9%E6%80%A7","优势特性",[18,34,35],{},[21,36,38],{"href":37},"#%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF","应用场景",[18,40,41,45],{},[21,42,44],{"href":43},"#%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B","核心概念与工作流程",[15,46,47,53,59],{},[18,48,49],{},[21,50,52],{"href":51},"#%E8%AE%B0%E5%BF%86%E7%BB%93%E6%9E%84","记忆结构",[18,54,55],{},[21,56,58],{"href":57},"#%E5%85%83%E6%95%B0%E6%8D%AE%E5%AD%97%E6%AE%B5","元数据字段",[18,60,61],{},[21,62,64],{"href":63},"#%E6%A0%B8%E5%BF%83%E5%B7%A5%E4%BD%9C%E6%B5%81","核心工作流",[18,66,67,71],{},[21,68,70],{"href":69},"#api-%E5%8F%82%E8%80%83","API 参考",[15,72,73,79,85],{},[18,74,75],{},[21,76,78],{"href":77},"#%E5%88%9D%E5%A7%8B%E5%8C%96","初始化",[18,80,81],{},[21,82,84],{"href":83},"#%E6%A0%B8%E5%BF%83%E6%96%B9%E6%B3%95","核心方法",[18,86,87],{},[21,88,90],{"href":89},"#%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8","文件存储",[18,92,93,97],{},[21,94,96],{"href":95},"#%E5%8A%A8%E6%89%8B%E5%AE%9E%E8%B7%B5%E4%BB%8E-0-%E5%88%B0-1","动手实践：从 0 到 1",[15,98,99,105,111,117,123,129],{},[18,100,101],{},[21,102,104],{"href":103},"#%E5%88%9B%E5%BB%BA-preferencetextmemory-%E9%85%8D%E7%BD%AE","创建 PreferenceTextMemory 配置",[18,106,107],{},[21,108,110],{"href":109},"#%E5%88%9D%E5%A7%8B%E5%8C%96-preferencetextmemory","初始化 PreferenceTextMemory",[18,112,113],{},[21,114,116],{"href":115},"#%E6%8A%BD%E5%8F%96%E7%BB%93%E6%9E%84%E5%8C%96%E8%AE%B0%E5%BF%86","抽取结构化记忆",[18,118,119],{},[21,120,122],{"href":121},"#%E6%90%9C%E7%B4%A2%E8%AE%B0%E5%BF%86","搜索记忆",[18,124,125],{},[21,126,128],{"href":127},"#%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D","备份与恢复",[18,130,131],{},[21,132,134],{"href":133},"#%E5%AE%8C%E6%95%B4%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B","完整代码示例",[11,136,24],{"id":24},[138,139,32],"h3",{"id":32},[141,142,144],"list",{"icon":143},"ph:check-circle-duotone",[15,145,146,153,159,165,171,177,183],{},[18,147,148,152],{},[149,150,151],"strong",{},"双重偏好提取","：自动识别显式偏好和隐式偏好",[18,154,155,158],{},[149,156,157],{},"语义理解","：使用向量嵌入理解偏好的深层含义",[18,160,161,164],{},[149,162,163],{},"智能去重","：自动检测和合并重复或冲突的偏好",[18,166,167,170],{},[149,168,169],{},"精准检索","：基于向量相似度的语义搜索",[18,172,173,176],{},[149,174,175],{},"持久化存储","：支持向量数据库（Qdrant\u002FMilvus）",[18,178,179,182],{},[149,180,181],{},"可扩展性","：支持大规模偏好数据管理",[18,184,185,188],{},[149,186,187],{},"个性化增强","：为每个用户维护独立的偏好档案",[138,190,38],{"id":38},[141,192,194],{"icon":193},"ph:lightbulb-duotone",[15,195,196,199,202,205,208],{},[18,197,198],{},"个性化对话代理（记住用户喜好）",[18,200,201],{},"智能推荐系统（基于偏好推荐）",[18,203,204],{},"客户服务系统（提供定制化服务）",[18,206,207],{},"内容过滤系统（根据偏好筛选内容）",[18,209,210],{},"学习辅助系统（适应学习风格）",[212,213,215],"alert",{"type":214},"info",[216,217,218,219,223],"p",{},"总结来说，当你需要构建能够\"记住\"用户喜好并据此提供个性化服务的系统时，",[220,221,222],"code",{},"PreferenceTextMemory"," 是最佳选择。",[11,225,44],{"id":44},[138,227,52],{"id":52},[216,229,230,231,233,234,237],{},"在MemOS中，偏好记忆以",[220,232,222],{},"表示，每条记忆都是一个",[220,235,236],{},"TextualMemoryItem","，使用Milvus数据库存储。",[15,239,240,246,252],{},[18,241,242,245],{},[220,243,244],{},"id",": 唯一记忆ID（如果省略则自动生成）",[18,247,248,251],{},[220,249,250],{},"memory",": 主要文本",[18,253,254,257],{},[220,255,256],{},"metadata",": 包括层次结构信息、嵌入、标签、实体、源和状态",[216,259,260],{},"偏好记忆又可以分为显式偏好记忆和隐式偏好记忆：",[15,262,263,287],{},[18,264,265,268,269,272,273],{},[149,266,267],{},"显式偏好记忆","：用户明确表达的喜好或厌恶。",[149,270,271],{},"示例","：",[15,274,275,278,281,284],{},[18,276,277],{},"\"我喜欢深色模式\"",[18,279,280],{},"\"我不吃辣\"",[18,282,283],{},"\"请用简短的回答\"",[18,285,286],{},"\"我更喜欢技术文档而不是视频教程\"",[18,288,289,292,293,272,295],{},[149,290,291],{},"隐式偏好记忆","：从用户行为和对话模式中推断出的偏好。",[149,294,271],{},[15,296,297,300,303],{},[18,298,299],{},"用户总是询问代码示例 → 偏好实践导向的学习",[18,301,302],{},"用户经常要求详细解释 → 偏好深入理解",[18,304,305],{},"用户多次提到环保话题 → 关注可持续发展",[212,307,309],{"type":308},"success",[216,310,311,314,317,319],{},[149,312,313],{},"智能提取",[315,316],"br",{},[220,318,222],{}," 使用 LLM 自动从对话中同时提取显式和隐式偏好，无需手动标注！",[138,321,323,324,327],{"id":322},"元数据字段-preferencetextualmemorymetadata","元数据字段 （",[220,325,326],{},"PreferenceTextualMemoryMetadata","）",[329,330,331,347],"table",{},[332,333,334],"thead",{},[335,336,337,341,344],"tr",{},[338,339,340],"th",{},"字段",[338,342,343],{},"类型",[338,345,346],{},"描述",[348,349,350,370,385,399,413,427,441,455],"tbody",{},[335,351,352,358,367],{},[353,354,355],"td",{},[220,356,357],{},"preference_type",[353,359,360,363,364],{},[220,361,362],{},"\"explicit_preference\"",", ",[220,365,366],{},"\"implicit_preference\"",[353,368,369],{},"偏好记忆类型，分为显式偏好记忆和隐式偏好记忆",[335,371,372,377,382],{},[353,373,374],{},[220,375,376],{},"dialog_id",[353,378,379],{},[220,380,381],{},"str",[353,383,384],{},"对话ID，用于关联偏好记忆与特定对话",[335,386,387,392,396],{},[353,388,389],{},[220,390,391],{},"original_text",[353,393,394],{},[220,395,381],{},[353,397,398],{},"原始文本，包含用户偏好信息",[335,400,401,406,410],{},[353,402,403],{},[220,404,405],{},"embedding",[353,407,408],{},[220,409,381],{},[353,411,412],{},"嵌入向量，用于语义搜索和检索",[335,414,415,420,424],{},[353,416,417],{},[220,418,419],{},"preference",[353,421,422],{},[220,423,381],{},[353,425,426],{},"用户偏好信息",[335,428,429,434,438],{},[353,430,431],{},[220,432,433],{},"create_at",[353,435,436],{},[220,437,381],{},[353,439,440],{},"创建时间戳 (ISO 8601)",[335,442,443,448,452],{},[353,444,445],{},[220,446,447],{},"mem_cube_id",[353,449,450],{},[220,451,381],{},[353,453,454],{},"记忆立方ID，用于关联偏好记忆与特定记忆立方",[335,456,457,462,467],{},[353,458,459],{},[220,460,461],{},"score",[353,463,464],{},[220,465,466],{},"float ",[353,468,469],{},"检索结果中偏好记忆和query的相似度评分",[138,471,64],{"id":64},[216,473,474],{},"当您运行此示例时，您的工作流将:",[476,477,478,484,490,496],"ol",{},[18,479,480,483],{},[149,481,482],{},"抽取:"," 使用LLM从原始文本中提取结构化记忆.",[18,485,486,489],{},[149,487,488],{},"嵌入:"," 为相似性搜索生成向量嵌入.",[18,491,492,495],{},[149,493,494],{},"存储:"," 将偏好记忆存储到Milvus数据库中，同时更新元数据字段.",[18,497,498,501],{},[149,499,500],{},"搜索:"," 通过向量相似度查询，返回最相关的偏好记忆.",[11,503,70],{"id":504},"api-参考",[138,506,78],{"id":78},[508,509,514],"pre",{"className":510,"code":511,"language":512,"meta":513,"style":513},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","PreferenceTextMemory(config: PreferenceTextMemoryConfig)\n","python","",[220,515,516],{"__ignoreMap":513},[517,518,521,524,528,531,534,537],"span",{"class":519,"line":520},"line",1,[517,522,222],{"class":523},"s2Zo4",[517,525,527],{"class":526},"sMK4o","(",[517,529,530],{"class":523},"config",[517,532,533],{"class":526},":",[517,535,536],{"class":523}," PreferenceTextMemoryConfig",[517,538,539],{"class":526},")\n",[138,541,84],{"id":84},[329,543,544,553],{},[332,545,546],{},[335,547,548,551],{},[338,549,550],{},"方法",[338,552,346],{},[348,554,555,565,575,585,595,605,615,629,639,649,659,669,679],{},[335,556,557,562],{},[353,558,559],{},[220,560,561],{},"get_memory(messages)",[353,563,564],{},"从原始对话中抽取偏好记忆.",[335,566,567,572],{},[353,568,569],{},[220,570,571],{},"search(query, top_k)",[353,573,574],{},"使用向量相似度检索top-k偏好记忆.",[335,576,577,582],{},[353,578,579],{},[220,580,581],{},"load(dir)",[353,583,584],{},"从存储的文件中加载偏好记忆.",[335,586,587,592],{},[353,588,589],{},[220,590,591],{},"dump(dir)",[353,593,594],{},"将所有偏好记忆序列化到目录中的JSON文件.",[335,596,597,602],{},[353,598,599],{},[220,600,601],{},"add(memories)",[353,603,604],{},"批量添加偏好记忆到Milvus数据库.",[335,606,607,612],{},[353,608,609],{},[220,610,611],{},"get_with_collection_name(collection_name, memory_id)",[353,613,614],{},"通过集合名称和记忆ID获取特定类型的偏好记忆.",[335,616,617,622],{},[353,618,619],{},[220,620,621],{},"get_by_ids_with_collection_name(collection_name, memory_ids)",[353,623,624,625,628],{},"通过集合名称和记忆IDs",[149,626,627],{},"批量","获取特定类型的偏好记忆.",[335,630,631,636],{},[353,632,633],{},[220,634,635],{},"get_all()",[353,637,638],{},"获取所有偏好记忆.",[335,640,641,646],{},[353,642,643],{},[220,644,645],{},"get_memory_by_filter(filter)",[353,647,648],{},"根据过滤条件获取偏好记忆.",[335,650,651,656],{},[353,652,653],{},[220,654,655],{},"delete(memory_ids)",[353,657,658],{},"删除指定ID的偏好记忆.",[335,660,661,666],{},[353,662,663],{},[220,664,665],{},"delete_by_filter(filter)",[353,667,668],{},"根据过滤条件删除偏好记忆.",[335,670,671,676],{},[353,672,673],{},[220,674,675],{},"delete_with_collection_name(collection_name, memory_ids)",[353,677,678],{},"删除指定集合名称和IDs的所有偏好记忆.",[335,680,681,686],{},[353,682,683],{},[220,684,685],{},"delete_all()",[353,687,688],{},"删除所有偏好记忆.",[138,690,90],{"id":90},[216,692,693,694,696],{},"当调用 ",[220,695,591],{}," 时，MemOS将所有偏好记忆序列化到目录中的JSON文件中:",[508,698,703],{"className":699,"code":701,"language":702},[700],"language-text","\u003Cdir>\u002F\u003Cconfig.memory_filename>\n","text",[220,704,701],{"__ignoreMap":513},[706,707],"hr",{},[11,709,96],{"id":710},"动手实践从-0-到-1",[712,713,714,717,720,731,799,802,853,855,860,1049,1051,1092,1094,1097],"steps",{},[138,715,104],{"id":716},"创建-preferencetextmemory-配置",[216,718,719],{},"定义:",[15,721,722,725,728],{},[18,723,724],{},"你的embedding模型（例如，nomic-embed-text:latest）,",[18,726,727],{},"你的Milvus数据库后端,",[18,729,730],{},"记忆抽取器（基于LLM）（可选）.",[508,732,734],{"className":510,"code":733,"language":512,"meta":513,"style":513},"from memos.configs.memory import PreferenceTextMemoryConfig\n\nconfig = PreferenceTextMemoryConfig.from_json_file(\"examples\u002Fdata\u002Fconfig\u002Fpreference_config.json\")\n",[220,735,736,763,770],{"__ignoreMap":513},[517,737,738,742,746,749,752,754,757,760],{"class":519,"line":520},[517,739,741],{"class":740},"s7zQu","from",[517,743,745],{"class":744},"sTEyZ"," memos",[517,747,748],{"class":526},".",[517,750,751],{"class":744},"configs",[517,753,748],{"class":526},[517,755,756],{"class":744},"memory ",[517,758,759],{"class":740},"import",[517,761,762],{"class":744}," PreferenceTextMemoryConfig\n",[517,764,766],{"class":519,"line":765},2,[517,767,769],{"emptyLinePlaceholder":768},true,"\n",[517,771,773,776,779,781,783,786,788,791,795,797],{"class":519,"line":772},3,[517,774,775],{"class":744},"config ",[517,777,778],{"class":526},"=",[517,780,536],{"class":744},[517,782,748],{"class":526},[517,784,785],{"class":523},"from_json_file",[517,787,527],{"class":526},[517,789,790],{"class":526},"\"",[517,792,794],{"class":793},"sfazB","examples\u002Fdata\u002Fconfig\u002Fpreference_config.json",[517,796,790],{"class":526},[517,798,539],{"class":526},[138,800,110],{"id":801},"初始化-preferencetextmemory",[508,803,805],{"className":510,"code":804,"language":512,"meta":513,"style":513},"from memos.memories.textual.preference import PreferenceTextMemory\n\npreference_memory = PreferenceTextMemory(config)\n",[220,806,807,833,837],{"__ignoreMap":513},[517,808,809,811,813,815,818,820,823,825,828,830],{"class":519,"line":520},[517,810,741],{"class":740},[517,812,745],{"class":744},[517,814,748],{"class":526},[517,816,817],{"class":744},"memories",[517,819,748],{"class":526},[517,821,822],{"class":744},"textual",[517,824,748],{"class":526},[517,826,827],{"class":744},"preference ",[517,829,759],{"class":740},[517,831,832],{"class":744}," PreferenceTextMemory\n",[517,834,835],{"class":519,"line":765},[517,836,769],{"emptyLinePlaceholder":768},[517,838,839,842,844,847,849,851],{"class":519,"line":772},[517,840,841],{"class":744},"preference_memory ",[517,843,778],{"class":526},[517,845,846],{"class":523}," PreferenceTextMemory",[517,848,527],{"class":526},[517,850,530],{"class":523},[517,852,539],{"class":526},[138,854,116],{"id":116},[216,856,857,858,748],{},"使用记忆抽取器将对话、文件或文档解析为多个",[220,859,236],{},[508,861,863],{"className":510,"code":862,"language":512,"meta":513,"style":513},"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",[220,864,865,875,919,958,964,969,1032],{"__ignoreMap":513},[517,866,867,870,872],{"class":519,"line":520},[517,868,869],{"class":744},"scene_data ",[517,871,778],{"class":526},[517,873,874],{"class":526}," [[\n",[517,876,877,880,882,885,887,889,892,895,897,900,902,905,907,909,911,914,916],{"class":519,"line":765},[517,878,879],{"class":526},"    {",[517,881,790],{"class":526},[517,883,884],{"class":793},"role",[517,886,790],{"class":526},[517,888,533],{"class":526},[517,890,891],{"class":526}," \"",[517,893,894],{"class":793},"user",[517,896,790],{"class":526},[517,898,899],{"class":526},",",[517,901,891],{"class":526},[517,903,904],{"class":793},"content",[517,906,790],{"class":526},[517,908,533],{"class":526},[517,910,891],{"class":526},[517,912,913],{"class":793},"Tell me about your childhood.",[517,915,790],{"class":526},[517,917,918],{"class":526},"},\n",[517,920,921,923,925,927,929,931,933,936,938,940,942,944,946,948,950,953,955],{"class":519,"line":772},[517,922,879],{"class":526},[517,924,790],{"class":526},[517,926,884],{"class":793},[517,928,790],{"class":526},[517,930,533],{"class":526},[517,932,891],{"class":526},[517,934,935],{"class":793},"assistant",[517,937,790],{"class":526},[517,939,899],{"class":526},[517,941,891],{"class":526},[517,943,904],{"class":793},[517,945,790],{"class":526},[517,947,533],{"class":526},[517,949,891],{"class":526},[517,951,952],{"class":793},"I loved playing in the garden with my dog.",[517,954,790],{"class":526},[517,956,957],{"class":526},"}\n",[517,959,961],{"class":519,"line":960},4,[517,962,963],{"class":526},"]]\n",[517,965,967],{"class":519,"line":966},5,[517,968,769],{"emptyLinePlaceholder":768},[517,970,972,975,977,980,982,985,987,990,992,996,998,1000,1003,1005,1007,1010,1013,1015,1018,1020,1022,1024,1027,1029],{"class":519,"line":971},6,[517,973,974],{"class":744},"memories ",[517,976,778],{"class":526},[517,978,979],{"class":744}," preference_memory",[517,981,748],{"class":526},[517,983,984],{"class":523},"get_memory",[517,986,527],{"class":526},[517,988,989],{"class":523},"scene_data",[517,991,899],{"class":526},[517,993,995],{"class":994},"sHdIc"," type",[517,997,778],{"class":526},[517,999,790],{"class":526},[517,1001,1002],{"class":793},"chat",[517,1004,790],{"class":526},[517,1006,899],{"class":526},[517,1008,1009],{"class":994}," info",[517,1011,1012],{"class":526},"={",[517,1014,790],{"class":526},[517,1016,1017],{"class":793},"user_id",[517,1019,790],{"class":526},[517,1021,533],{"class":526},[517,1023,891],{"class":526},[517,1025,1026],{"class":793},"1234",[517,1028,790],{"class":526},[517,1030,1031],{"class":526},"})\n",[517,1033,1035,1038,1040,1043,1045,1047],{"class":519,"line":1034},7,[517,1036,1037],{"class":744},"preference_memory",[517,1039,748],{"class":526},[517,1041,1042],{"class":523},"add",[517,1044,527],{"class":526},[517,1046,817],{"class":523},[517,1048,539],{"class":526},[138,1050,122],{"id":122},[508,1052,1054],{"className":510,"code":1053,"language":512,"meta":513,"style":513},"results = preference_memory.search(\"Tell me more about the user\", top_k=2)\n",[220,1055,1056],{"__ignoreMap":513},[517,1057,1058,1061,1063,1065,1067,1070,1072,1074,1077,1079,1081,1084,1086,1090],{"class":519,"line":520},[517,1059,1060],{"class":744},"results ",[517,1062,778],{"class":526},[517,1064,979],{"class":744},[517,1066,748],{"class":526},[517,1068,1069],{"class":523},"search",[517,1071,527],{"class":526},[517,1073,790],{"class":526},[517,1075,1076],{"class":793},"Tell me more about the user",[517,1078,790],{"class":526},[517,1080,899],{"class":526},[517,1082,1083],{"class":994}," top_k",[517,1085,778],{"class":526},[517,1087,1089],{"class":1088},"sbssI","2",[517,1091,539],{"class":526},[138,1093,128],{"id":128},[216,1095,1096],{},"支持偏好记忆的持久化存储与随时重载：",[508,1098,1100],{"className":510,"code":1099,"language":512,"meta":513,"style":513},"preference_memory.dump(\"tmp\u002Fpref_memories\")\npreference_memory.load(\"tmp\u002Fpref_memories\")\n",[220,1101,1102,1122],{"__ignoreMap":513},[517,1103,1104,1106,1108,1111,1113,1115,1118,1120],{"class":519,"line":520},[517,1105,1037],{"class":744},[517,1107,748],{"class":526},[517,1109,1110],{"class":523},"dump",[517,1112,527],{"class":526},[517,1114,790],{"class":526},[517,1116,1117],{"class":793},"tmp\u002Fpref_memories",[517,1119,790],{"class":526},[517,1121,539],{"class":526},[517,1123,1124,1126,1128,1131,1133,1135,1137,1139],{"class":519,"line":765},[517,1125,1037],{"class":744},[517,1127,748],{"class":526},[517,1129,1130],{"class":523},"load",[517,1132,527],{"class":526},[517,1134,790],{"class":526},[517,1136,1117],{"class":793},[517,1138,790],{"class":526},[517,1140,539],{"class":526},[138,1142,134],{"id":134},[216,1144,1145],{},"该示例整合了上述所有步骤，提供一个端到端的完整流程，以Milvus为例 —— 复制即可运行！",[508,1147,1149],{"className":510,"code":1148,"language":512,"meta":513,"style":513},"from memos.configs.memory import PreferenceTextMemoryConfig\nfrom memos.memories.textual.preference import PreferenceTextMemory\n\n# 创建PreferenceTextMemory\nconfig = PreferenceTextMemoryConfig.from_json_file(\"examples\u002Fdata\u002Fconfig\u002Fpreference_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# 从原始对话中抽取偏好记忆，并添加到Milvus数据库中\nmemories = preference_memory.get_memory(scene_data, type=\"chat\", info={\"user_id\": \"1234\"})\npreference_memory.add(memories)\n\n# 搜索记忆\nresults = preference_memory.search(\"Tell me more about the user\", top_k=2)\n\n# 持久化存储偏好记忆\npreference_memory.dump(\"tmp\u002Fpref_memories\")\n",[220,1150,1151,1169,1191,1195,1201,1223,1227,1241,1254,1259,1268,1305,1342,1347,1352,1358,1409,1424,1429,1435,1466,1471,1477],{"__ignoreMap":513},[517,1152,1153,1155,1157,1159,1161,1163,1165,1167],{"class":519,"line":520},[517,1154,741],{"class":740},[517,1156,745],{"class":744},[517,1158,748],{"class":526},[517,1160,751],{"class":744},[517,1162,748],{"class":526},[517,1164,756],{"class":744},[517,1166,759],{"class":740},[517,1168,762],{"class":744},[517,1170,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189],{"class":519,"line":765},[517,1172,741],{"class":740},[517,1174,745],{"class":744},[517,1176,748],{"class":526},[517,1178,817],{"class":744},[517,1180,748],{"class":526},[517,1182,822],{"class":744},[517,1184,748],{"class":526},[517,1186,827],{"class":744},[517,1188,759],{"class":740},[517,1190,832],{"class":744},[517,1192,1193],{"class":519,"line":772},[517,1194,769],{"emptyLinePlaceholder":768},[517,1196,1197],{"class":519,"line":960},[517,1198,1200],{"class":1199},"sHwdD","# 创建PreferenceTextMemory\n",[517,1202,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221],{"class":519,"line":966},[517,1204,775],{"class":744},[517,1206,778],{"class":526},[517,1208,536],{"class":744},[517,1210,748],{"class":526},[517,1212,785],{"class":523},[517,1214,527],{"class":526},[517,1216,790],{"class":526},[517,1218,794],{"class":793},[517,1220,790],{"class":526},[517,1222,539],{"class":526},[517,1224,1225],{"class":519,"line":971},[517,1226,769],{"emptyLinePlaceholder":768},[517,1228,1229,1231,1233,1235,1237,1239],{"class":519,"line":1034},[517,1230,841],{"class":744},[517,1232,778],{"class":526},[517,1234,846],{"class":523},[517,1236,527],{"class":526},[517,1238,530],{"class":523},[517,1240,539],{"class":526},[517,1242,1244,1246,1248,1251],{"class":519,"line":1243},8,[517,1245,1037],{"class":744},[517,1247,748],{"class":526},[517,1249,1250],{"class":523},"delete_all",[517,1252,1253],{"class":526},"()\n",[517,1255,1257],{"class":519,"line":1256},9,[517,1258,769],{"emptyLinePlaceholder":768},[517,1260,1262,1264,1266],{"class":519,"line":1261},10,[517,1263,869],{"class":744},[517,1265,778],{"class":526},[517,1267,874],{"class":526},[517,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303],{"class":519,"line":1270},11,[517,1272,879],{"class":526},[517,1274,790],{"class":526},[517,1276,884],{"class":793},[517,1278,790],{"class":526},[517,1280,533],{"class":526},[517,1282,891],{"class":526},[517,1284,894],{"class":793},[517,1286,790],{"class":526},[517,1288,899],{"class":526},[517,1290,891],{"class":526},[517,1292,904],{"class":793},[517,1294,790],{"class":526},[517,1296,533],{"class":526},[517,1298,891],{"class":526},[517,1300,913],{"class":793},[517,1302,790],{"class":526},[517,1304,918],{"class":526},[517,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340],{"class":519,"line":1307},12,[517,1309,879],{"class":526},[517,1311,790],{"class":526},[517,1313,884],{"class":793},[517,1315,790],{"class":526},[517,1317,533],{"class":526},[517,1319,891],{"class":526},[517,1321,935],{"class":793},[517,1323,790],{"class":526},[517,1325,899],{"class":526},[517,1327,891],{"class":526},[517,1329,904],{"class":793},[517,1331,790],{"class":526},[517,1333,533],{"class":526},[517,1335,891],{"class":526},[517,1337,952],{"class":793},[517,1339,790],{"class":526},[517,1341,957],{"class":526},[517,1343,1345],{"class":519,"line":1344},13,[517,1346,963],{"class":526},[517,1348,1350],{"class":519,"line":1349},14,[517,1351,769],{"emptyLinePlaceholder":768},[517,1353,1355],{"class":519,"line":1354},15,[517,1356,1357],{"class":1199},"# 从原始对话中抽取偏好记忆，并添加到Milvus数据库中\n",[517,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407],{"class":519,"line":1360},16,[517,1362,974],{"class":744},[517,1364,778],{"class":526},[517,1366,979],{"class":744},[517,1368,748],{"class":526},[517,1370,984],{"class":523},[517,1372,527],{"class":526},[517,1374,989],{"class":523},[517,1376,899],{"class":526},[517,1378,995],{"class":994},[517,1380,778],{"class":526},[517,1382,790],{"class":526},[517,1384,1002],{"class":793},[517,1386,790],{"class":526},[517,1388,899],{"class":526},[517,1390,1009],{"class":994},[517,1392,1012],{"class":526},[517,1394,790],{"class":526},[517,1396,1017],{"class":793},[517,1398,790],{"class":526},[517,1400,533],{"class":526},[517,1402,891],{"class":526},[517,1404,1026],{"class":793},[517,1406,790],{"class":526},[517,1408,1031],{"class":526},[517,1410,1412,1414,1416,1418,1420,1422],{"class":519,"line":1411},17,[517,1413,1037],{"class":744},[517,1415,748],{"class":526},[517,1417,1042],{"class":523},[517,1419,527],{"class":526},[517,1421,817],{"class":523},[517,1423,539],{"class":526},[517,1425,1427],{"class":519,"line":1426},18,[517,1428,769],{"emptyLinePlaceholder":768},[517,1430,1432],{"class":519,"line":1431},19,[517,1433,1434],{"class":1199},"# 搜索记忆\n",[517,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464],{"class":519,"line":1437},20,[517,1439,1060],{"class":744},[517,1441,778],{"class":526},[517,1443,979],{"class":744},[517,1445,748],{"class":526},[517,1447,1069],{"class":523},[517,1449,527],{"class":526},[517,1451,790],{"class":526},[517,1453,1076],{"class":793},[517,1455,790],{"class":526},[517,1457,899],{"class":526},[517,1459,1083],{"class":994},[517,1461,778],{"class":526},[517,1463,1089],{"class":1088},[517,1465,539],{"class":526},[517,1467,1469],{"class":519,"line":1468},21,[517,1470,769],{"emptyLinePlaceholder":768},[517,1472,1474],{"class":519,"line":1473},22,[517,1475,1476],{"class":1199},"# 持久化存储偏好记忆\n",[517,1478,1480,1482,1484,1486,1488,1490,1492,1494],{"class":519,"line":1479},23,[517,1481,1037],{"class":744},[517,1483,748],{"class":526},[517,1485,1110],{"class":523},[517,1487,527],{"class":526},[517,1489,790],{"class":526},[517,1491,1117],{"class":793},[517,1493,790],{"class":526},[517,1495,539],{"class":526},[1497,1498,1499],"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":513,"searchDepth":765,"depth":765,"links":1501},[1502,1503,1507,1513,1518],{"id":13,"depth":765,"text":13},{"id":24,"depth":765,"text":24,"children":1504},[1505,1506],{"id":32,"depth":772,"text":32},{"id":38,"depth":772,"text":38},{"id":44,"depth":765,"text":44,"children":1508},[1509,1510,1512],{"id":52,"depth":772,"text":52},{"id":322,"depth":772,"text":1511},"元数据字段 （PreferenceTextualMemoryMetadata）",{"id":64,"depth":772,"text":64},{"id":504,"depth":765,"text":70,"children":1514},[1515,1516,1517],{"id":78,"depth":772,"text":78},{"id":84,"depth":772,"text":84},{"id":90,"depth":772,"text":90},{"id":710,"depth":765,"text":96,"children":1519},[1520,1521,1522,1523,1524,1525],{"id":716,"depth":772,"text":104},{"id":801,"depth":772,"text":110},{"id":116,"depth":772,"text":116},{"id":122,"depth":772,"text":122},{"id":128,"depth":772,"text":128},{"id":134,"depth":772,"text":134},"`PreferenceTextMemory` 是MemOS中用于存储和管理用户偏好的明文记忆模块。它适用于需要根据用户偏好进行记忆检索的场景。","md",{},"\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fpreference_textual_memory",{"title":5,"description":513},"cn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fpreference_textual_memory","aE6HniGkZSUPDOQJmRtw0S6Bc95-leyFQdM8Qev8bCE",[1534,1542],{"title":1535,"path":1536,"stem":1537,"icon":1538,"framework":6,"module":6,"class":1539,"target":-1,"active":1540,"defaultOpen":1540,"children":-1,"description":1541},"通用明文记忆","\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fgeneral_textual_memory","open_source\u002Fmodules\u002Fmemories\u002Fgeneral_textual_memory","i-ri-file-text-line",[],false,"GeneralTextMemory 是MemOS中一个灵活的、基于向量的明文记忆模块，用于存储、搜索和管理非结构化知识。如果说 Naive 模块是‘关键词匹配’，那么 GeneralTextMemory 就是‘理解意思’的智能索引，它适用于会话代理、个人助理和任何需要语义记忆检索的系统。",{"title":1543,"path":1544,"stem":1545,"icon":1546,"framework":6,"module":6,"class":1547,"target":-1,"active":1540,"defaultOpen":1540,"children":-1,"description":1548},"树形明文记忆","\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Ftree_textual_memory","open_source\u002Fmodules\u002Fmemories\u002Ftree_textual_memory","i-ri-tree-line",[],"让我们在MemOS中构建你的第一个基于图的、树形明文记忆！ \u003Cbr> TreeTextMemory 支持以结构化方式组织、关联并检索记忆，同时保留丰富的上下文信息与良好的可解释性。 \u003Cbr> MemOS当前使用Neo4j作为后端，未来计划支持更多图数据库。\n",1774339751866]