[{"data":1,"prerenderedAt":580},["ShallowReactive",2],{"docs-page-cn-/cn/open_source/best_practice/performance_tuning":3,"surround-cn-/cn/open_source/best_practice/performance_tuning":565},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":6,"description":558,"extension":559,"lead":6,"links":6,"meta":560,"navigation":6,"path":561,"seo":562,"stem":563,"__hash__":564},"docs/cn/open_source/best_practice/performance_tuning.md","性能调优",null,{"type":8,"value":9,"toc":544},"minimark",[10,32,37,40,50,54,57,61,80,173,215,219,226,230,240,274,278,285,424,428,435,439,446,504,507,512,540],[11,12,13,14,18,19,22,23,26,27,31],"p",{},"MemOS 的性能优化主要围绕 ",[15,16,17],"strong",{},"记忆提取 (Mem-Reader)","、",[15,20,21],{},"向量嵌入 (Embedding)"," 和 ",[15,24,25],{},"检索排序 (Search Ranking)"," 展开。大部分配置可以通过修改 YAML 配置文件（如 ",[28,29,30],"code",{},"memos_config_w_scheduler.yaml","）或直接调整源代码来实现。",[33,34,36],"h2",{"id":35},"_1-记忆提取优化-mem-reader-prompt","1. 记忆提取优化 (Mem-Reader Prompt)",[11,38,39],{},"slow_embedder = {\n\"backend\": \"sentence_transformer\",\n\"config\": {\n\"model_name_or_path\": \"nomic-ai/nomic-embed-text-v1.5\"\n}\n}",[41,42,47],"pre",{"className":43,"code":45,"language":46},[44],"language-text","`Mem-Reader` 组件负责从对话中提取关键信息。目前的实现中，Prompt 是定义在源代码模板中的。\n\n### 修改 Prompt 模板\n\n要调整提取逻辑（例如忽略闲聊、专注于特定事实），你需要直接修改源码文件：\n\n*   **文件路径**: `src/memos/templates/mem_reader_prompts.py`\n*   **目标变量**: `SIMPLE_STRUCT_MEM_READER_PROMPT` (用于英文) 或 `SIMPLE_STRUCT_MEM_READER_PROMPT_ZH` (用于中文)\n\n**示例修改**：\n\n在 `src/memos/templates/mem_reader_prompts.py` 中：\n\n```python\nSIMPLE_STRUCT_MEM_READER_PROMPT = \"\"\"\nYou are a preference extraction expert.\nYour task is to extract ONLY user preferences and dislikes from the conversation.\nIgnore all other information including plans and daily events.\n...\n\"\"\"\n","text",[28,48,45],{"__ignoreMap":49},"",[33,51,53],{"id":52},"_2-向量嵌入模型优化-embedding-models","2. 向量嵌入模型优化 (Embedding Models)",[11,55,56],{},"Embedding 模型的选择决定了语义检索的准确性和速度。通常在 YAML 配置文件中进行设置。",[58,59,60],"h3",{"id":60},"配置文件修改",[11,62,63,64,67,68,71,72,75,76,79],{},"在你的配置文件（如 ",[28,65,66],{},"memos_config.yaml","）中，找到 ",[28,69,70],{},"mem_reader"," 或 ",[28,73,74],{},"text_mem"," 下的 ",[28,77,78],{},"embedder"," 部分：",[41,81,85],{"className":82,"code":83,"language":84,"meta":49,"style":49},"language-yaml shiki shiki-themes material-theme-lighter github-light-high-contrast github-dark-default","mem_reader:\n  backend: \"simple_struct\"\n  config:\n    # ... 其他配置\n    embedder:\n      # 方案 A: 使用 Ollama (速度快，适合本地)\n      backend: \"ollama\"\n      config:\n        model_name_or_path: \"nomic-embed-text:latest\"\n      \n      # 方案 B: 使用 Sentence Transformer (精度高，显存占用大)\n      # backend: \"sentence_transformer\"\n      # config:\n      #   model_name_or_path: \"BAAI/bge-m3\"\n","yaml",[28,86,87,95,101,107,113,119,125,131,137,143,149,155,161,167],{"__ignoreMap":49},[88,89,92],"span",{"class":90,"line":91},"line",1,[88,93,94],{},"mem_reader:\n",[88,96,98],{"class":90,"line":97},2,[88,99,100],{},"  backend: \"simple_struct\"\n",[88,102,104],{"class":90,"line":103},3,[88,105,106],{},"  config:\n",[88,108,110],{"class":90,"line":109},4,[88,111,112],{},"    # ... 其他配置\n",[88,114,116],{"class":90,"line":115},5,[88,117,118],{},"    embedder:\n",[88,120,122],{"class":90,"line":121},6,[88,123,124],{},"      # 方案 A: 使用 Ollama (速度快，适合本地)\n",[88,126,128],{"class":90,"line":127},7,[88,129,130],{},"      backend: \"ollama\"\n",[88,132,134],{"class":90,"line":133},8,[88,135,136],{},"      config:\n",[88,138,140],{"class":90,"line":139},9,[88,141,142],{},"        model_name_or_path: \"nomic-embed-text:latest\"\n",[88,144,146],{"class":90,"line":145},10,[88,147,148],{},"      \n",[88,150,152],{"class":90,"line":151},11,[88,153,154],{},"      # 方案 B: 使用 Sentence Transformer (精度高，显存占用大)\n",[88,156,158],{"class":90,"line":157},12,[88,159,160],{},"      # backend: \"sentence_transformer\"\n",[88,162,164],{"class":90,"line":163},13,[88,165,166],{},"      # config:\n",[88,168,170],{"class":90,"line":169},14,[88,171,172],{},"      #   model_name_or_path: \"BAAI/bge-m3\"\n",[174,175,176],"ul",{},[177,178,179,182,183],"li",{},[15,180,181],{},"推荐模型",":\n",[174,184,185,195],{},[177,186,187,190,191,194],{},[15,188,189],{},"快速/本地",": ",[28,192,193],{},"nomic-embed-text"," (Ollama)",[177,196,197,190,200,71,203,206,207,210,211,214],{},[15,198,199],{},"高精度",[28,201,202],{},"BAAI/bge-m3",[28,204,205],{},"OpenAI"," 的 ",[28,208,209],{},"text-embedding-3-small"," (需使用 ",[28,212,213],{},"universal_api"," backend)",[33,216,218],{"id":217},"_3-检索排序优化-search-ranking","3. 检索排序优化 (Search Ranking)",[11,220,221,222,225],{},"检索性能主要受召回数量 (",[28,223,224],{},"top_k",") 和重排序策略影响。",[58,227,229],{"id":228},"调整召回数量-top-k","调整召回数量 (Top-K)",[11,231,232,233,236,237,239],{},"在 ",[28,234,235],{},"mem_scheduler"," 的配置中调整 ",[28,238,224],{},"。增加此值可以提高召回率，但会增加处理时间。",[41,241,243],{"className":82,"code":242,"language":84,"meta":49,"style":49},"mem_scheduler:\n  backend: \"general_scheduler\"\n  config:\n    # 初始检索的候选数量\n    top_k: 20 \n    # ...\n",[28,244,245,250,255,259,264,269],{"__ignoreMap":49},[88,246,247],{"class":90,"line":91},[88,248,249],{},"mem_scheduler:\n",[88,251,252],{"class":90,"line":97},[88,253,254],{},"  backend: \"general_scheduler\"\n",[88,256,257],{"class":90,"line":103},[88,258,106],{},[88,260,261],{"class":90,"line":109},[88,262,263],{},"    # 初始检索的候选数量\n",[88,265,266],{"class":90,"line":115},[88,267,268],{},"    top_k: 20 \n",[88,270,271],{"class":90,"line":121},[88,272,273],{},"    # ...\n",[58,275,277],{"id":276},"引入-reranker-进阶","引入 Reranker (进阶)",[11,279,280,281,284],{},"MemOS 支持在检索后引入 Reranker 进行精排。这通常需要在初始化 ",[28,282,283],{},"Searcher"," 组件时指定。如果你是作为开发者集成 MemOS，可以在代码中配置：",[41,286,290],{"className":287,"code":288,"language":289,"meta":49,"style":49},"language-python shiki shiki-themes material-theme-lighter github-light-high-contrast github-dark-default","from memos.reranker.factory import RerankerFactory\n\n# 在初始化 Searcher 时\nreranker = RerankerFactory.from_config({\n    \"backend\": \"sentence_transformer\",\n    \"config\": {\n        \"model_name_or_path\": \"BAAI/bge-reranker-base\"\n    }\n})\n","python",[28,291,292,320,326,332,353,380,394,414,419],{"__ignoreMap":49},[88,293,294,298,302,306,309,311,314,317],{"class":90,"line":91},[88,295,297],{"class":296},"sBMTB","from",[88,299,301],{"class":300},"s5ojA"," memos",[88,303,305],{"class":304},"suWxN",".",[88,307,308],{"class":300},"reranker",[88,310,305],{"class":304},[88,312,313],{"class":300},"factory ",[88,315,316],{"class":296},"import",[88,318,319],{"class":300}," RerankerFactory\n",[88,321,322],{"class":90,"line":97},[88,323,325],{"emptyLinePlaceholder":324},true,"\n",[88,327,328],{"class":90,"line":103},[88,329,331],{"class":330},"sfVK4","# 在初始化 Searcher 时\n",[88,333,334,337,341,344,346,350],{"class":90,"line":109},[88,335,336],{"class":300},"reranker ",[88,338,340],{"class":339},"saN0X","=",[88,342,343],{"class":300}," RerankerFactory",[88,345,305],{"class":304},[88,347,349],{"class":348},"sa-2m","from_config",[88,351,352],{"class":304},"({\n",[88,354,355,359,363,366,369,372,375,377],{"class":90,"line":115},[88,356,358],{"class":357},"sjUum","    \"",[88,360,362],{"class":361},"sp1uZ","backend",[88,364,365],{"class":357},"\"",[88,367,368],{"class":304},":",[88,370,371],{"class":357}," \"",[88,373,374],{"class":361},"sentence_transformer",[88,376,365],{"class":357},[88,378,379],{"class":304},",\n",[88,381,382,384,387,389,391],{"class":90,"line":121},[88,383,358],{"class":357},[88,385,386],{"class":361},"config",[88,388,365],{"class":357},[88,390,368],{"class":304},[88,392,393],{"class":304}," {\n",[88,395,396,399,402,404,406,408,411],{"class":90,"line":127},[88,397,398],{"class":357},"        \"",[88,400,401],{"class":361},"model_name_or_path",[88,403,365],{"class":357},[88,405,368],{"class":304},[88,407,371],{"class":357},[88,409,410],{"class":361},"BAAI/bge-reranker-base",[88,412,413],{"class":357},"\"\n",[88,415,416],{"class":90,"line":133},[88,417,418],{"class":304},"    }\n",[88,420,421],{"class":90,"line":139},[88,422,423],{"class":304},"})\n",[33,425,427],{"id":426},"_4-系统资源与容量限制","4. 系统资源与容量限制",[11,429,430,431,434],{},"合理限制各类记忆的容量可以防止内存无限增长，并保持检索速度。这通常在 ",[28,432,433],{},"mem_cube"," 的配置中设置。",[58,436,438],{"id":437},"内存容量配置-memory-size","内存容量配置 (Memory Size)",[11,440,441,442,445],{},"在 YAML 配置文件中，配置 ",[28,443,444],{},"memory_size"," 字典：",[41,447,449],{"className":82,"code":448,"language":84,"meta":49,"style":49},"mem_cube:\n  backend: \"general\"\n  config:\n    text_mem:\n      backend: \"tree\"\n      config:\n        # 限制各类记忆的条目数\n        memory_size:\n          WorkingMemory: 10         # 最近几轮对话的短期记忆\n          LongTermMemory: 2000      # 长期记忆上限\n          UserMemory: 500           # 用户画像/偏好上限\n",[28,450,451,456,461,465,470,475,479,484,489,494,499],{"__ignoreMap":49},[88,452,453],{"class":90,"line":91},[88,454,455],{},"mem_cube:\n",[88,457,458],{"class":90,"line":97},[88,459,460],{},"  backend: \"general\"\n",[88,462,463],{"class":90,"line":103},[88,464,106],{},[88,466,467],{"class":90,"line":109},[88,468,469],{},"    text_mem:\n",[88,471,472],{"class":90,"line":115},[88,473,474],{},"      backend: \"tree\"\n",[88,476,477],{"class":90,"line":121},[88,478,136],{},[88,480,481],{"class":90,"line":127},[88,482,483],{},"        # 限制各类记忆的条目数\n",[88,485,486],{"class":90,"line":133},[88,487,488],{},"        memory_size:\n",[88,490,491],{"class":90,"line":139},[88,492,493],{},"          WorkingMemory: 10         # 最近几轮对话的短期记忆\n",[88,495,496],{"class":90,"line":145},[88,497,498],{},"          LongTermMemory: 2000      # 长期记忆上限\n",[88,500,501],{"class":90,"line":151},[88,502,503],{},"          UserMemory: 500           # 用户画像/偏好上限\n",[58,505,506],{"id":506},"批处理与并发",[11,508,232,509,511],{},[28,510,235],{}," 中可以配置并发处理能力：",[41,513,515],{"className":82,"code":514,"language":84,"meta":49,"style":49},"mem_scheduler:\n  config:\n    thread_pool_max_workers: 10     # 并行处理线程数\n    consume_interval_seconds: 0.01  # 消息队列消费间隔\n    enable_parallel_dispatch: true  # 开启并行分发\n",[28,516,517,521,525,530,535],{"__ignoreMap":49},[88,518,519],{"class":90,"line":91},[88,520,249],{},[88,522,523],{"class":90,"line":97},[88,524,106],{},[88,526,527],{"class":90,"line":103},[88,528,529],{},"    thread_pool_max_workers: 10     # 并行处理线程数\n",[88,531,532],{"class":90,"line":109},[88,533,534],{},"    consume_interval_seconds: 0.01  # 消息队列消费间隔\n",[88,536,537],{"class":90,"line":115},[88,538,539],{},"    enable_parallel_dispatch: true  # 开启并行分发\n",[541,542,543],"style",{},"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 .sBMTB, html code.shiki .sBMTB{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#A0111F;--shiki-default-font-style:inherit;--shiki-dark:#FF7B72;--shiki-dark-font-style:inherit}html pre.shiki code .s5ojA, html code.shiki .s5ojA{--shiki-light:#90A4AE;--shiki-default:#0E1116;--shiki-dark:#E6EDF3}html pre.shiki code .suWxN, html code.shiki .suWxN{--shiki-light:#39ADB5;--shiki-default:#0E1116;--shiki-dark:#E6EDF3}html pre.shiki code .sfVK4, html code.shiki .sfVK4{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#66707B;--shiki-default-font-style:inherit;--shiki-dark:#8B949E;--shiki-dark-font-style:inherit}html pre.shiki code .saN0X, html code.shiki .saN0X{--shiki-light:#39ADB5;--shiki-default:#A0111F;--shiki-dark:#FF7B72}html pre.shiki code .sa-2m, html code.shiki .sa-2m{--shiki-light:#6182B8;--shiki-default:#0E1116;--shiki-dark:#E6EDF3}html pre.shiki code .sjUum, html code.shiki .sjUum{--shiki-light:#39ADB5;--shiki-default:#032563;--shiki-dark:#A5D6FF}html pre.shiki code .sp1uZ, html code.shiki .sp1uZ{--shiki-light:#91B859;--shiki-default:#032563;--shiki-dark:#A5D6FF}",{"title":49,"searchDepth":97,"depth":97,"links":545},[546,547,550,554],{"id":35,"depth":97,"text":36},{"id":52,"depth":97,"text":53,"children":548},[549],{"id":60,"depth":103,"text":60},{"id":217,"depth":97,"text":218,"children":551},[552,553],{"id":228,"depth":103,"text":229},{"id":276,"depth":103,"text":277},{"id":426,"depth":97,"text":427,"children":555},[556,557],{"id":437,"depth":103,"text":438},{"id":506,"depth":103,"text":506},"MemOS 的性能优化主要围绕 记忆提取 (Mem-Reader)、向量嵌入 (Embedding) 和 检索排序 (Search Ranking) 展开。大部分配置可以通过修改 YAML 配置文件（如 memos_config_w_scheduler.yaml）或直接调整源代码来实现。","md",{},"/cn/open_source/best_practice/performance_tuning",{"title":5,"description":558},"cn/open_source/best_practice/performance_tuning","CSLNQRm4e4FJLJ9bCNsuON54Xx48NwfQnM8WOyRDsBI",[566,573],{"title":567,"path":568,"stem":569,"icon":570,"framework":6,"module":6,"class":571,"target":-1,"active":572,"defaultOpen":572,"children":-1,"description":-1},"参数记忆 (正在开发中)","/cn/open_source/modules/memories/parametric_memory","open_source/modules/memories/parametric_memory","i-ri-cpu-line",[],false,{"title":574,"path":575,"stem":576,"icon":577,"framework":6,"module":6,"class":578,"target":-1,"active":572,"defaultOpen":572,"children":-1,"description":579},"网络问题解决方案","/cn/open_source/best_practice/network_workarounds","open_source/best_practice/network_workarounds","i-ri-wifi-line",[],"以下是一些在开发过程中可能遇到的网络问题的应对方案。",1786949722458]