[{"data":1,"prerenderedAt":6253},["ShallowReactive",2],{"\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fkv_cache_memory":3,"surround-\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fkv_cache_memory":6238},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":6231,"description":2005,"extension":6232,"links":6,"meta":6233,"navigation":6,"path":6234,"seo":6235,"stem":6236,"__hash__":6237},"docs\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fkv_cache_memory.md","KVCacheMemory: 激活记忆",null,{"type":8,"value":9,"toc":6211},"minimark",[10,15,24,34,50,65,69,79,84,96,100,114,117,120,134,137,148,152,155,159,165,168,183,186,200,207,210,213,223,891,895,906,909,923,926,930,935,1181,1186,1421,1425,1430,1666,1671,1907,1910,1914,1921,1927,1989,1996,1999,2031,2034,2165,2171,2179,2185,2188,2192,4441,4445,6187,6190,6207],[11,12,14],"h2",{"id":13},"kv-cache记忆使用案例","KV Cache记忆使用案例",[16,17,18,19,23],"p",{},"在MemOS中，KV Cache最适合存储",[20,21,22],"strong",{},"语义稳定且经常复用的背景信息","，例如：",[25,26,27,31],"ul",{},[28,29,30],"li",{},"常见问题（FAQs）或特定领域知识",[28,32,33],{},"先前的对话历史",[16,35,36,37,40,41,45,46,49],{},"这些稳定的",[20,38,39],{},"明文记忆项","由",[42,43,44],"code",{},"MemScheduler","模块自动识别和管理。一旦被选中，它们就会被提前转换成KV格式的表示(",[42,47,48],{},"KVCacheItem",")。这个预计算步骤以可复用的格式存储记忆的激活状态（键值对张量），允许它们在推理期间注入到模型的注意力缓存中。",[16,51,52,53,56,57,60,61,64],{},"一旦进行转换，这些KV记忆就可以",[20,54,55],{},"跨查询复用","，而不需要对原始内容重新编码。这减少了处理和存储大量文本的计算开销，使其成为需要",[20,58,59],{},"快速响应时间","和",[20,62,63],{},"高吞吐量","的应用程序的理想选择。",[11,66,68],{"id":67},"为什么是kv-cache记忆","为什么是KV Cache记忆",[16,70,71,72,74,75,78],{},"将",[42,73,44],{},"与KV Cache记忆集成可以实现显著的性能优化，特别是在LLM推理的",[20,76,77],{},"预填充阶段","。",[80,81,83],"h3",{"id":82},"无kv-cache记忆","无KV Cache记忆",[25,85,86,89],{},[28,87,88],{},"每个新查询都被添加到完整的提示模板中，包括背景知识。",[28,90,91,92,95],{},"模型必须在整个序列上",[20,93,94],{},"重新计算token嵌入和注意力","——即使是未更改的记忆。",[80,97,99],{"id":98},"有kv-cache记忆","有KV Cache记忆",[25,101,102,108,111],{},[28,103,104,105,78],{},"背景知识以键值对张量的形式",[20,106,107],{},"缓存一次",[28,109,110],{},"对于每个查询，只对新用户输入（查询token）进行编码。",[28,112,113],{},"之前缓存的KV被直接注入到注意力机制中。",[80,115,116],{"id":116},"好处",[16,118,119],{},"这种分离减少了预填充阶段的冗余计算，从而导致:",[25,121,122,125,128],{},[28,123,124],{},"跳过背景知识的重复编码",[28,126,127],{},"更快的查询token和缓存记忆之间的注意力计算",[28,129,130,133],{},[20,131,132],{},"降低首次token时间(Time To First Token, TTFT)"," 生成过程中的延迟",[16,135,136],{},"这种优化在以下方面特别有价值:",[25,138,139,142,145],{},[28,140,141],{},"多回合聊天机器人交互",[28,143,144],{},"检索增强生成或上下文增强生成(RAG, CAG)",[28,146,147],{},"在固定文档或FAQ风格记忆上操作的助理",[80,149,151],{"id":150},"kv-cache记忆加速评估","KV Cache记忆加速评估",[16,153,154],{},"为了验证基于KV的记忆注入对性能的影响，我们进行了一组在MemOS中模拟真实记忆复用的对照实验。",[156,157,158],"h4",{"id":158},"实验建立",[16,160,161,162,164],{},"在典型的使用中，",[42,163,44],{},"模块持续跟踪交互模式，并将高频、稳定的明文记忆提升为KV格式。这些KV记忆作为激活缓存加载到GPU内存中，并在推理过程中重复使用。",[16,166,167],{},"评估比较两种记忆策略:",[169,170,171,177],"ol",{},[28,172,173,176],{},[20,174,175],{},"基于提示的注入",": 背景知识被作为原始文本添加",[28,178,179,182],{},[20,180,181],{},"KV Cache注入",": 记忆被直接注入到模型的注意力缓存",[16,184,185],{},"我们对这些策略进行了测试:",[25,187,188,194],{},[28,189,190,193],{},[20,191,192],{},"三种文本长度",": 短文本, 中等长度文本和长文本",[28,195,196,199],{},[20,197,198],{},"三种查询类型",": 短查询, 中等查询和长查询",[16,201,202,203,206],{},"主要指标是",[20,204,205],{},"首次token时间(TTFT)","，这是响应式生成的关键延迟指标。",[156,208,209],{"id":209},"实验结果",[16,211,212],{},"下表显示了跨三个模型的结果(Qwen3-8B, Qwen3-32B, Qwen2.5-72B).KV Cache注入下的TTFT始终低于基于提示的注入，而两种策略的输出token保持一致.",[214,215,217],"note",{"icon":216},"ri:bnb-fill",[16,218,219,222],{},[42,220,221],{},"Build (s)","是指将记忆转换为KV格式的一次性预处理成本，分摊到多个查询中.",[224,225,226,259],"table",{},[227,228,229],"thead",{},[230,231,232,236,239,242,245,248,250,253,256],"tr",{},[233,234,235],"th",{},"Model",[233,237,238],{},"Ctx",[233,240,241],{},"CtxTok",[233,243,244],{},"Qry",[233,246,247],{},"QryTok",[233,249,221],{},[233,251,252],{},"KV TTFT (s)",[233,254,255],{},"Dir TTFT (s)",[233,257,258],{},"Speedup (%)",[260,261,262,291,317,342,367,390,413,437,460,483,508,531,554,577,599,621,644,665,687,711,734,757,780,803,825,847,869],"tbody",{},[230,263,264,268,271,274,276,279,282,285,288],{},[265,266,267],"td",{},"Qwen3-8B",[265,269,270],{},"long",[265,272,273],{},"6064",[265,275,270],{},[265,277,278],{},"952.7",[265,280,281],{},"0.92",[265,283,284],{},"0.50",[265,286,287],{},"2.37",[265,289,290],{},"79.1",[230,292,293,295,297,299,302,305,308,311,314],{},[265,294],{},[265,296],{},[265,298],{},[265,300,301],{},"medium",[265,303,304],{},"302.7",[265,306,307],{},"0.93",[265,309,310],{},"0.19",[265,312,313],{},"2.16",[265,315,316],{},"91.1",[230,318,319,321,323,325,328,331,333,336,339],{},[265,320],{},[265,322],{},[265,324],{},[265,326,327],{},"short",[265,329,330],{},"167",[265,332,307],{},[265,334,335],{},"0.12",[265,337,338],{},"2.04",[265,340,341],{},"94.2",[230,343,344,346,348,351,353,355,358,361,364],{},[265,345],{},[265,347,301],{},[265,349,350],{},"2773",[265,352,270],{},[265,354,278],{},[265,356,357],{},"0.41",[265,359,360],{},"0.43",[265,362,363],{},"1.22",[265,365,366],{},"64.6",[230,368,369,371,373,375,377,379,381,384,387],{},[265,370],{},[265,372],{},[265,374],{},[265,376,301],{},[265,378,304],{},[265,380,357],{},[265,382,383],{},"0.16",[265,385,386],{},"1.08",[265,388,389],{},"85.1",[230,391,392,394,396,398,400,402,404,407,410],{},[265,393],{},[265,395],{},[265,397],{},[265,399,327],{},[265,401,330],{},[265,403,360],{},[265,405,406],{},"0.10",[265,408,409],{},"0.95",[265,411,412],{},"89.7",[230,414,415,417,419,422,424,426,428,431,434],{},[265,416],{},[265,418,327],{},[265,420,421],{},"583",[265,423,270],{},[265,425,278],{},[265,427,335],{},[265,429,430],{},"0.39",[265,432,433],{},"0.51",[265,435,436],{},"23.0",[230,438,439,441,443,445,447,449,451,454,457],{},[265,440],{},[265,442],{},[265,444],{},[265,446,301],{},[265,448,304],{},[265,450,335],{},[265,452,453],{},"0.14",[265,455,456],{},"0.32",[265,458,459],{},"55.6",[230,461,462,464,466,468,470,472,474,477,480],{},[265,463],{},[265,465],{},[265,467],{},[265,469,327],{},[265,471,330],{},[265,473,335],{},[265,475,476],{},"0.08",[265,478,479],{},"0.29",[265,481,482],{},"71.3",[230,484,485,488,490,492,494,496,499,502,505],{},[265,486,487],{},"Qwen3-32B",[265,489,270],{},[265,491,273],{},[265,493,270],{},[265,495,278],{},[265,497,498],{},"0.71",[265,500,501],{},"0.31",[265,503,504],{},"1.09",[265,506,507],{},"71.4",[230,509,510,512,514,516,518,520,522,525,528],{},[265,511],{},[265,513],{},[265,515],{},[265,517,301],{},[265,519,304],{},[265,521,498],{},[265,523,524],{},"0.15",[265,526,527],{},"0.98",[265,529,530],{},"84.3",[230,532,533,535,537,539,541,543,545,548,551],{},[265,534],{},[265,536],{},[265,538],{},[265,540,327],{},[265,542,330],{},[265,544,498],{},[265,546,547],{},"0.11",[265,549,550],{},"0.96",[265,552,553],{},"88.8",[230,555,556,558,560,562,564,566,568,571,574],{},[265,557],{},[265,559,301],{},[265,561,350],{},[265,563,270],{},[265,565,278],{},[265,567,501],{},[265,569,570],{},"0.24",[265,572,573],{},"0.56",[265,575,576],{},"56.9",[230,578,579,581,583,585,587,589,591,593,596],{},[265,580],{},[265,582],{},[265,584],{},[265,586,301],{},[265,588,304],{},[265,590,501],{},[265,592,335],{},[265,594,595],{},"0.47",[265,597,598],{},"75.1",[230,600,601,603,605,607,609,611,613,615,618],{},[265,602],{},[265,604],{},[265,606],{},[265,608,327],{},[265,610,330],{},[265,612,501],{},[265,614,476],{},[265,616,617],{},"0.44",[265,619,620],{},"81.2",[230,622,623,625,627,629,631,633,636,639,641],{},[265,624],{},[265,626,327],{},[265,628,421],{},[265,630,270],{},[265,632,278],{},[265,634,635],{},"0.09",[265,637,638],{},"0.20",[265,640,570],{},[265,642,643],{},"18.6",[230,645,646,648,650,652,654,656,658,660,662],{},[265,647],{},[265,649],{},[265,651],{},[265,653,301],{},[265,655,304],{},[265,657,635],{},[265,659,635],{},[265,661,524],{},[265,663,664],{},"39.6",[230,666,667,669,671,673,675,677,679,682,684],{},[265,668],{},[265,670],{},[265,672],{},[265,674,327],{},[265,676,330],{},[265,678,635],{},[265,680,681],{},"0.07",[265,683,453],{},[265,685,686],{},"53.5",[230,688,689,692,694,696,698,700,703,706,708],{},[265,690,691],{},"Qwen2.5-72B",[265,693,270],{},[265,695,273],{},[265,697,270],{},[265,699,278],{},[265,701,702],{},"1.26",[265,704,705],{},"0.48",[265,707,338],{},[265,709,710],{},"76.4",[230,712,713,715,717,719,721,723,725,728,731],{},[265,714],{},[265,716],{},[265,718],{},[265,720,301],{},[265,722,304],{},[265,724,702],{},[265,726,727],{},"0.23",[265,729,730],{},"1.82",[265,732,733],{},"87.2",[230,735,736,738,740,742,744,746,749,751,754],{},[265,737],{},[265,739],{},[265,741],{},[265,743,327],{},[265,745,330],{},[265,747,748],{},"1.27",[265,750,524],{},[265,752,753],{},"1.79",[265,755,756],{},"91.4",[230,758,759,761,763,765,767,769,772,774,777],{},[265,760],{},[265,762,301],{},[265,764,350],{},[265,766,270],{},[265,768,278],{},[265,770,771],{},"0.58",[265,773,430],{},[265,775,776],{},"1.05",[265,778,779],{},"62.7",[230,781,782,784,786,788,790,792,794,797,800],{},[265,783],{},[265,785],{},[265,787],{},[265,789,301],{},[265,791,304],{},[265,793,771],{},[265,795,796],{},"0.18",[265,798,799],{},"0.89",[265,801,802],{},"79.2",[230,804,805,807,809,811,813,815,817,819,822],{},[265,806],{},[265,808],{},[265,810],{},[265,812,327],{},[265,814,330],{},[265,816,498],{},[265,818,727],{},[265,820,821],{},"0.82",[265,823,824],{},"71.6",[230,826,827,829,831,833,835,837,839,842,844],{},[265,828],{},[265,830,327],{},[265,832,421],{},[265,834,270],{},[265,836,278],{},[265,838,383],{},[265,840,841],{},"0.33",[265,843,360],{},[265,845,846],{},"23.8",[230,848,849,851,853,855,857,859,861,863,866],{},[265,850],{},[265,852],{},[265,854],{},[265,856,301],{},[265,858,304],{},[265,860,383],{},[265,862,524],{},[265,864,865],{},"0.27",[265,867,868],{},"43.2",[230,870,871,873,875,877,879,881,883,885,888],{},[265,872],{},[265,874],{},[265,876],{},[265,878,327],{},[265,880,330],{},[265,882,383],{},[265,884,406],{},[265,886,887],{},"0.25",[265,889,890],{},"60.5",[156,892,894],{"id":893},"基于-vllm-的性能表现","基于 vLLM 的性能表现",[16,896,897,898,901,902,905],{},"MemOS 现在支持使用 vLLM 管理激活内存。为了评估KV Cache预存不同长度的前缀文本带来的影响，我们在一个配备 8 张 ",[42,899,900],{},"H800 80GB GPU（112 vCPU，1920 GiB 内存）","的系统，以及一个配备 8张 ",[42,903,904],{},"RTX4090-24G-PCIe(112 vCPU，960 GiB 内存)"," 的系统上分别进行了性能测试。评估覆盖了当前两种核心模型：Qwen3-32B 和 Qwen2.5-72B。",[16,907,908],{},"基准测试在一系列记忆和上下文长度组合下运行，以模拟各种激活内存场景：",[25,910,911,917],{},[28,912,913,916],{},[20,914,915],{},"记忆文本长度（tokens）","：500、1000、2000",[28,918,919,922],{},[20,920,921],{},"上下文文本长度（tokens）","：500、1000、2000、4000",[16,924,925],{},"下表总结了基准测试结果。",[16,927,928],{},[20,929,691],{},[25,931,932],{},[28,933,934],{},"On 4090（2 Nodes 16 GPUs）",[224,936,937,959],{},[227,938,939],{},[230,940,941,944,947,950,953,956],{},[233,942,943],{},"mem tks",[233,945,946],{},"prompt tks",[233,948,949],{},"TTFT (without cache, ms)",[233,951,952],{},"TTFT (With cache, ms)",[233,954,955],{},"TTFT Speedup (%)",[233,957,958],{},"Abs Dis(ms)",[260,960,961,980,999,1018,1037,1055,1073,1091,1109,1127,1145,1163],{},[230,962,963,966,968,971,974,977],{},[265,964,965],{},"0.5k",[265,967,965],{},[265,969,970],{},"1787.21",[265,972,973],{},"851.47",[265,975,976],{},"52.358%",[265,978,979],{},"935.74",[230,981,982,984,987,990,993,996],{},[265,983,965],{},[265,985,986],{},"1k",[265,988,989],{},"2506.26",[265,991,992],{},"1290.68",[265,994,995],{},"48.502%",[265,997,998],{},"1215.58",[230,1000,1001,1003,1006,1009,1012,1015],{},[265,1002,965],{},[265,1004,1005],{},"2k",[265,1007,1008],{},"3843.48",[265,1010,1011],{},"2897.97",[265,1013,1014],{},"24.600%",[265,1016,1017],{},"945.51",[230,1019,1020,1022,1025,1028,1031,1034],{},[265,1021,965],{},[265,1023,1024],{},"4k",[265,1026,1027],{},"6078.01",[265,1029,1030],{},"5200.86",[265,1032,1033],{},"14.432%",[265,1035,1036],{},"877.15",[230,1038,1039,1041,1043,1046,1049,1052],{},[265,1040,986],{},[265,1042,965],{},[265,1044,1045],{},"2274.61",[265,1047,1048],{},"920.16",[265,1050,1051],{},"59.546%",[265,1053,1054],{},"1354.45",[230,1056,1057,1059,1061,1064,1067,1070],{},[265,1058,986],{},[265,1060,986],{},[265,1062,1063],{},"2907.17",[265,1065,1066],{},"1407.65",[265,1068,1069],{},"51.580%",[265,1071,1072],{},"1499.52",[230,1074,1075,1077,1079,1082,1085,1088],{},[265,1076,986],{},[265,1078,1005],{},[265,1080,1081],{},"4278.53",[265,1083,1084],{},"2916.47",[265,1086,1087],{},"31.835%",[265,1089,1090],{},"1362.06",[230,1092,1093,1095,1097,1100,1103,1106],{},[265,1094,986],{},[265,1096,1024],{},[265,1098,1099],{},"6897.99",[265,1101,1102],{},"5218.94",[265,1104,1105],{},"24.341%",[265,1107,1108],{},"1679.05",[230,1110,1111,1113,1115,1118,1121,1124],{},[265,1112,1005],{},[265,1114,965],{},[265,1116,1117],{},"3460.12",[265,1119,1120],{},"782.73",[265,1122,1123],{},"77.379%",[265,1125,1126],{},"2677.39",[230,1128,1129,1131,1133,1136,1139,1142],{},[265,1130,1005],{},[265,1132,986],{},[265,1134,1135],{},"4443.34",[265,1137,1138],{},"1491.24",[265,1140,1141],{},"66.439%",[265,1143,1144],{},"2952.10",[230,1146,1147,1149,1151,1154,1157,1160],{},[265,1148,1005],{},[265,1150,1005],{},[265,1152,1153],{},"5733.14",[265,1155,1156],{},"2758.48",[265,1158,1159],{},"51.885%",[265,1161,1162],{},"2974.66",[230,1164,1165,1167,1169,1172,1175,1178],{},[265,1166,1005],{},[265,1168,1024],{},[265,1170,1171],{},"8152.76",[265,1173,1174],{},"5627.41",[265,1176,1177],{},"30.975%",[265,1179,1180],{},"2525.35",[25,1182,1183],{},[28,1184,1185],{},"On H800（4 GPUs）",[224,1187,1188,1204],{},[227,1189,1190],{},[230,1191,1192,1194,1196,1198,1200,1202],{},[233,1193,943],{},[233,1195,946],{},[233,1197,949],{},[233,1199,952],{},[233,1201,955],{},[233,1203,958],{},[260,1205,1206,1224,1242,1260,1277,1295,1313,1331,1349,1367,1385,1403],{},[230,1207,1208,1210,1212,1215,1218,1221],{},[265,1209,965],{},[265,1211,965],{},[265,1213,1214],{},"51.65",[265,1216,1217],{},"52.17",[265,1219,1220],{},"-1.007%",[265,1222,1223],{},"-0.52",[230,1225,1226,1228,1230,1233,1236,1239],{},[265,1227,965],{},[265,1229,986],{},[265,1231,1232],{},"55.70",[265,1234,1235],{},"57.03",[265,1237,1238],{},"-2.388%",[265,1240,1241],{},"-1.33",[230,1243,1244,1246,1248,1251,1254,1257],{},[265,1245,965],{},[265,1247,1005],{},[265,1249,1250],{},"74.23",[265,1252,1253],{},"78.56",[265,1255,1256],{},"-5.833%",[265,1258,1259],{},"-4.33",[230,1261,1262,1264,1266,1269,1272,1275],{},[265,1263,965],{},[265,1265,1024],{},[265,1267,1268],{},"77.56",[265,1270,1271],{},"77.45",[265,1273,1274],{},"0.142%",[265,1276,547],{},[230,1278,1279,1281,1283,1286,1289,1292],{},[265,1280,986],{},[265,1282,965],{},[265,1284,1285],{},"55.90",[265,1287,1288],{},"55.73",[265,1290,1291],{},"0.304%",[265,1293,1294],{},"0.17",[230,1296,1297,1299,1301,1304,1307,1310],{},[265,1298,986],{},[265,1300,986],{},[265,1302,1303],{},"55.35",[265,1305,1306],{},"52.89",[265,1308,1309],{},"4.444%",[265,1311,1312],{},"2.46",[230,1314,1315,1317,1319,1322,1325,1328],{},[265,1316,986],{},[265,1318,1005],{},[265,1320,1321],{},"80.14",[265,1323,1324],{},"73.82",[265,1326,1327],{},"7.886%",[265,1329,1330],{},"6.32",[230,1332,1333,1335,1337,1340,1343,1346],{},[265,1334,986],{},[265,1336,1024],{},[265,1338,1339],{},"82.83",[265,1341,1342],{},"73.51",[265,1344,1345],{},"11.252%",[265,1347,1348],{},"9.32",[230,1350,1351,1353,1355,1358,1361,1364],{},[265,1352,1005],{},[265,1354,965],{},[265,1356,1357],{},"75.82",[265,1359,1360],{},"71.31",[265,1362,1363],{},"5.948%",[265,1365,1366],{},"4.51",[230,1368,1369,1371,1373,1376,1379,1382],{},[265,1370,1005],{},[265,1372,986],{},[265,1374,1375],{},"80.60",[265,1377,1378],{},"78.71",[265,1380,1381],{},"2.345%",[265,1383,1384],{},"1.89",[230,1386,1387,1389,1391,1394,1397,1400],{},[265,1388,1005],{},[265,1390,1005],{},[265,1392,1393],{},"83.91",[265,1395,1396],{},"78.60",[265,1398,1399],{},"6.328%",[265,1401,1402],{},"5.31",[230,1404,1405,1407,1409,1412,1415,1418],{},[265,1406,1005],{},[265,1408,1024],{},[265,1410,1411],{},"99.15",[265,1413,1414],{},"80.12",[265,1416,1417],{},"19.193%",[265,1419,1420],{},"19.03",[16,1422,1423],{},[20,1424,487],{},[25,1426,1427],{},[28,1428,1429],{},"On 4090（1 Nodes 8 GPUs）",[224,1431,1432,1448],{},[227,1433,1434],{},[230,1435,1436,1438,1440,1442,1444,1446],{},[233,1437,943],{},[233,1439,946],{},[233,1441,949],{},[233,1443,952],{},[233,1445,955],{},[233,1447,958],{},[260,1449,1450,1468,1486,1504,1522,1540,1558,1576,1594,1612,1630,1648],{},[230,1451,1452,1454,1456,1459,1462,1465],{},[265,1453,965],{},[265,1455,965],{},[265,1457,1458],{},"288.72",[265,1460,1461],{},"139.29",[265,1463,1464],{},"51.756%",[265,1466,1467],{},"149.43",[230,1469,1470,1472,1474,1477,1480,1483],{},[265,1471,965],{},[265,1473,986],{},[265,1475,1476],{},"428.72",[265,1478,1479],{},"245.85",[265,1481,1482],{},"42.655%",[265,1484,1485],{},"182.87",[230,1487,1488,1490,1492,1495,1498,1501],{},[265,1489,965],{},[265,1491,1005],{},[265,1493,1494],{},"683.65",[265,1496,1497],{},"538.59",[265,1499,1500],{},"21.218%",[265,1502,1503],{},"145.06",[230,1505,1506,1508,1510,1513,1516,1519],{},[265,1507,965],{},[265,1509,1024],{},[265,1511,1512],{},"1170.48",[265,1514,1515],{},"986.94",[265,1517,1518],{},"15.681%",[265,1520,1521],{},"183.54",[230,1523,1524,1526,1528,1531,1534,1537],{},[265,1525,986],{},[265,1527,965],{},[265,1529,1530],{},"409.83",[265,1532,1533],{},"137.96",[265,1535,1536],{},"66.337%",[265,1538,1539],{},"271.87",[230,1541,1542,1544,1546,1549,1552,1555],{},[265,1543,986],{},[265,1545,986],{},[265,1547,1548],{},"507.95",[265,1550,1551],{},"262.21",[265,1553,1554],{},"48.379%",[265,1556,1557],{},"245.74",[230,1559,1560,1562,1564,1567,1570,1573],{},[265,1561,986],{},[265,1563,1005],{},[265,1565,1566],{},"743.48",[265,1568,1569],{},"539.71",[265,1571,1572],{},"27.408%",[265,1574,1575],{},"203.77",[230,1577,1578,1580,1582,1585,1588,1591],{},[265,1579,986],{},[265,1581,1024],{},[265,1583,1584],{},"1325.34",[265,1586,1587],{},"1038.59",[265,1589,1590],{},"21.636%",[265,1592,1593],{},"286.75",[230,1595,1596,1598,1600,1603,1606,1609],{},[265,1597,1005],{},[265,1599,965],{},[265,1601,1602],{},"686.01",[265,1604,1605],{},"147.34",[265,1607,1608],{},"78.522%",[265,1610,1611],{},"538.67",[230,1613,1614,1616,1618,1621,1624,1627],{},[265,1615,1005],{},[265,1617,986],{},[265,1619,1620],{},"762.96",[265,1622,1623],{},"246.22",[265,1625,1626],{},"67.728%",[265,1628,1629],{},"516.74",[230,1631,1632,1634,1636,1639,1642,1645],{},[265,1633,1005],{},[265,1635,1005],{},[265,1637,1638],{},"1083.93",[265,1640,1641],{},"498.05",[265,1643,1644],{},"54.051%",[265,1646,1647],{},"585.88",[230,1649,1650,1652,1654,1657,1660,1663],{},[265,1651,1005],{},[265,1653,1024],{},[265,1655,1656],{},"1435.39",[265,1658,1659],{},"1053.31",[265,1661,1662],{},"26.619%",[265,1664,1665],{},"382.08",[25,1667,1668],{},[28,1669,1670],{},"On H800（2 GPUs）",[224,1672,1673,1689],{},[227,1674,1675],{},[230,1676,1677,1679,1681,1683,1685,1687],{},[233,1678,943],{},[233,1680,946],{},[233,1682,949],{},[233,1684,952],{},[233,1686,955],{},[233,1688,958],{},[260,1690,1691,1709,1727,1745,1763,1781,1799,1817,1835,1853,1871,1889],{},[230,1692,1693,1695,1697,1700,1703,1706],{},[265,1694,965],{},[265,1696,965],{},[265,1698,1699],{},"161.18",[265,1701,1702],{},"97.61",[265,1704,1705],{},"39.440%",[265,1707,1708],{},"63.57",[230,1710,1711,1713,1715,1718,1721,1724],{},[265,1712,965],{},[265,1714,986],{},[265,1716,1717],{},"164.00",[265,1719,1720],{},"121.39",[265,1722,1723],{},"25.982%",[265,1725,1726],{},"42.61",[230,1728,1729,1731,1733,1736,1739,1742],{},[265,1730,965],{},[265,1732,1005],{},[265,1734,1735],{},"257.34",[265,1737,1738],{},"215.20",[265,1740,1741],{},"16.375%",[265,1743,1744],{},"42.14",[230,1746,1747,1749,1751,1754,1757,1760],{},[265,1748,965],{},[265,1750,1024],{},[265,1752,1753],{},"365.14",[265,1755,1756],{},"317.95",[265,1758,1759],{},"12.924%",[265,1761,1762],{},"47.19",[230,1764,1765,1767,1769,1772,1775,1778],{},[265,1766,986],{},[265,1768,965],{},[265,1770,1771],{},"169.45",[265,1773,1774],{},"100.52",[265,1776,1777],{},"40.679%",[265,1779,1780],{},"68.93",[230,1782,1783,1785,1787,1790,1793,1796],{},[265,1784,986],{},[265,1786,986],{},[265,1788,1789],{},"180.91",[265,1791,1792],{},"128.25",[265,1794,1795],{},"29.108%",[265,1797,1798],{},"52.66",[230,1800,1801,1803,1805,1808,1811,1814],{},[265,1802,986],{},[265,1804,1005],{},[265,1806,1807],{},"271.69",[265,1809,1810],{},"210.00",[265,1812,1813],{},"22.706%",[265,1815,1816],{},"61.69",[230,1818,1819,1821,1823,1826,1829,1832],{},[265,1820,986],{},[265,1822,1024],{},[265,1824,1825],{},"389.30",[265,1827,1828],{},"314.64",[265,1830,1831],{},"19.178%",[265,1833,1834],{},"74.66",[230,1836,1837,1839,1841,1844,1847,1850],{},[265,1838,1005],{},[265,1840,965],{},[265,1842,1843],{},"251.43",[265,1845,1846],{},"130.92",[265,1848,1849],{},"47.930%",[265,1851,1852],{},"120.51",[230,1854,1855,1857,1859,1862,1865,1868],{},[265,1856,1005],{},[265,1858,986],{},[265,1860,1861],{},"275.81",[265,1863,1864],{},"159.60",[265,1866,1867],{},"42.134%",[265,1869,1870],{},"116.21",[230,1872,1873,1875,1877,1880,1883,1886],{},[265,1874,1005],{},[265,1876,1005],{},[265,1878,1879],{},"331.11",[265,1881,1882],{},"218.17",[265,1884,1885],{},"34.110%",[265,1887,1888],{},"112.94",[230,1890,1891,1893,1895,1898,1901,1904],{},[265,1892,1005],{},[265,1894,1024],{},[265,1896,1897],{},"451.06",[265,1899,1900],{},"334.80",[265,1902,1903],{},"25.775%",[265,1905,1906],{},"116.26",[16,1908,1909],{},"结果清楚地表明，集成 vLLM 的 KV 缓存重用功能为 MemOS 带来了革命性的性能提升。",[11,1911,1913],{"id":1912},"kv-cache的记忆结构","KV Cache的记忆结构",[16,1915,1916,1917,1920],{},"通过",[42,1918,1919],{},"KVCacheMemory","实现基于KV的记忆复用，在保持相同输出的同时，大大减少了模型大小和查询类型之间的延迟。通过将可复用记忆从明文提示转移到预先计算的KV Cache，MemOS消除了冗余的上下文编码，并实现了更快的响应时间，特别是在实时的、记忆增强的LLM应用程序中。",[16,1922,1923,1924,1926],{},"每个缓存被存储为一个",[42,1925,48],{},":",[224,1928,1929,1942],{},[227,1930,1931],{},[230,1932,1933,1936,1939],{},[233,1934,1935],{},"字段",[233,1937,1938],{},"类型",[233,1940,1941],{},"描述",[260,1943,1944,1959,1974],{},[230,1945,1946,1951,1956],{},[265,1947,1948],{},[42,1949,1950],{},"kv_cache_id",[265,1952,1953],{},[42,1954,1955],{},"str",[265,1957,1958],{},"缓存中的唯一ID(UUID)",[230,1960,1961,1966,1971],{},[265,1962,1963],{},[42,1964,1965],{},"kv_cache",[265,1967,1968],{},[42,1969,1970],{},"DynamicCache",[265,1972,1973],{},"实际的KV Cache(transformers)",[230,1975,1976,1981,1986],{},[265,1977,1978],{},[42,1979,1980],{},"metadata",[265,1982,1983],{},[42,1984,1985],{},"dict",[265,1987,1988],{},"元数据 (源, 抽取时间等.)",[11,1990,1992,1993,1995],{"id":1991},"api总结-kvcachememory","API总结 (",[42,1994,1919],{},")",[80,1997,1998],{"id":1998},"初始化",[2000,2001,2006],"pre",{"className":2002,"code":2003,"language":2004,"meta":2005,"style":2005},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","KVCacheMemory(config: KVCacheMemoryConfig)\n","python","",[42,2007,2008],{"__ignoreMap":2005},[2009,2010,2013,2016,2020,2023,2025,2028],"span",{"class":2011,"line":2012},"line",1,[2009,2014,1919],{"class":2015},"s2Zo4",[2009,2017,2019],{"class":2018},"sMK4o","(",[2009,2021,2022],{"class":2015},"config",[2009,2024,1926],{"class":2018},[2009,2026,2027],{"class":2015}," KVCacheMemoryConfig",[2009,2029,2030],{"class":2018},")\n",[80,2032,2033],{"id":2033},"核心方法",[224,2035,2036,2045],{},[227,2037,2038],{},[230,2039,2040,2043],{},[233,2041,2042],{},"方法",[233,2044,1941],{},[260,2046,2047,2057,2070,2080,2090,2100,2110,2120,2130,2140,2150],{},[230,2048,2049,2054],{},[265,2050,2051],{},[42,2052,2053],{},"extract(text)",[265,2055,2056],{},"使用LLM从输入文本中提取KV Cache",[230,2058,2059,2064],{},[265,2060,2061],{},[42,2062,2063],{},"add(memories)",[265,2065,2066,2067,2069],{},"添加一个或多个",[42,2068,48],{},"到记忆中",[230,2071,2072,2077],{},[265,2073,2074],{},[42,2075,2076],{},"get(memory_id)",[265,2078,2079],{},"根据ID获取单个缓存",[230,2081,2082,2087],{},[265,2083,2084],{},[42,2085,2086],{},"get_by_ids(ids)",[265,2088,2089],{},"根据IDs获取多个缓存",[230,2091,2092,2097],{},[265,2093,2094],{},[42,2095,2096],{},"get_all()",[265,2098,2099],{},"返回所有存储的缓存",[230,2101,2102,2107],{},[265,2103,2104],{},[42,2105,2106],{},"get_cache(cache_ids)",[265,2108,2109],{},"从多个IDs合并并返回组合缓存",[230,2111,2112,2117],{},[265,2113,2114],{},[42,2115,2116],{},"delete(ids)",[265,2118,2119],{},"通过IDs删除缓存",[230,2121,2122,2127],{},[265,2123,2124],{},[42,2125,2126],{},"delete_all()",[265,2128,2129],{},"删除所有缓存",[230,2131,2132,2137],{},[265,2133,2134],{},[42,2135,2136],{},"dump(dir)",[265,2138,2139],{},"将所有缓存序列化到目录中的pickle文件",[230,2141,2142,2147],{},[265,2143,2144],{},[42,2145,2146],{},"load(dir)",[265,2148,2149],{},"从目录中的pickle文件加载缓存",[230,2151,2152,2157],{},[265,2153,2154],{},[42,2155,2156],{},"from_textual_memory(mem)",[265,2158,71,2159,2162,2163],{},[42,2160,2161],{},"TextualMemoryItem"," 转换为 ",[42,2164,48],{},[16,2166,2167,2168,2170],{},"当调用",[42,2169,2136],{},", 系统写到:",[2000,2172,2177],{"className":2173,"code":2175,"language":2176},[2174],"language-text","\u003Cdir>\u002F\u003Cconfig.memory_filename>\n","text",[42,2178,2175],{"__ignoreMap":2005},[16,2180,2181,2182,2184],{},"该文件包含所有KV Cache的pickle字典，可以使用",[42,2183,2146],{},"重新加载。",[11,2186,2187],{"id":2187},"如何使用",[80,2189,2191],{"id":2190},"hf-kvcache-memory","HF KVCache Memory",[2000,2193,2195],{"className":2002,"code":2194,"language":2004,"meta":2005,"style":2005},"import json\n\nfrom transformers import DynamicCache\n\nfrom memos.configs.memory import MemoryConfigFactory\nfrom memos.memories.activation.item import KVCacheItem\nfrom memos.memories.factory import MemoryFactory\n\n\ndef get_cache_info(cache):\n    if not cache:\n        return None\n\n    num_layers = 0\n    total_size_bytes = 0\n\n    if hasattr(cache, \"layers\"):\n        num_layers = len(cache.layers)\n        for layer in cache.layers:\n            if hasattr(layer, \"key_cache\") and layer.key_cache is not None:\n                total_size_bytes += layer.key_cache.nelement() * layer.key_cache.element_size()\n            if hasattr(layer, \"value_cache\") and layer.value_cache is not None:\n                total_size_bytes += layer.value_cache.nelement() * layer.value_cache.element_size()\n\n            if hasattr(layer, \"keys\") and layer.keys is not None:\n                total_size_bytes += layer.keys.nelement() * layer.keys.element_size()\n            if hasattr(layer, \"values\") and layer.values is not None:\n                total_size_bytes += layer.values.nelement() * layer.values.element_size()\n\n    elif hasattr(cache, \"key_cache\") and hasattr(cache, \"value_cache\"):\n        num_layers = len(cache.key_cache)\n        for k, v in zip(cache.key_cache, cache.value_cache, strict=False):\n            if k is not None:\n                total_size_bytes += k.nelement() * k.element_size()\n            if v is not None:\n                total_size_bytes += v.nelement() * v.element_size()\n\n    return {\n        \"num_layers\": num_layers,\n        \"size_bytes\": total_size_bytes,\n        \"size_mb\": f\"{total_size_bytes \u002F (1024 * 1024):.2f} MB\",\n    }\n\n\ndef serialize_item(obj):\n    if isinstance(obj, list):\n        return [serialize_item(x) for x in obj]\n\n    if isinstance(obj, KVCacheItem):\n        return {\n            \"id\": obj.id,\n            \"metadata\": obj.metadata,\n            \"records\": obj.records.model_dump()\n            if hasattr(obj.records, \"model_dump\")\n            else obj.records,\n            \"memory\": get_cache_info(obj.memory),\n        }\n\n    if isinstance(obj, DynamicCache):\n        return get_cache_info(obj)\n\n    return str(obj)\n\n\nif __name__ == \"__main__\":\n    # ===== 示例：使用工厂和 HFLLM 构建及管理 KVCacheMemory =====\n\n    # 1. 创建 KVCacheMemory 配置（使用 HuggingFace 后端）\n    config = MemoryConfigFactory(\n        backend=\"kv_cache\",\n        config={\n            \"extractor_llm\": {\n                \"backend\": \"huggingface\",\n                \"config\": {\n                    \"model_name_or_path\": \"Qwen\u002FQwen3-0.6B\",  # 使用有效的 HuggingFace 模型名称\n                    \"max_tokens\": 32,\n                    \"add_generation_prompt\": True,\n                    \"remove_think_prefix\": True,\n                },\n            },\n        },\n    )\n\n    # 2. 使用工厂实例化 KVCacheMemory\n    kv_mem = MemoryFactory.from_config(config)\n\n    # 3. 从提示中提取 KVCacheItem (DynamicCache)（内部使用 HFLLM.build_kv_cache）\n    prompt = [\n        {\"role\": \"user\", \"content\": \"What is MemOS?\"},\n        {\"role\": \"assistant\", \"content\": \"MemOS is a memory operating system for LLMs.\"},\n    ]\n    print(\"===== Extract KVCacheItem =====\")\n    cache_item = kv_mem.extract(prompt)\n    print(json.dumps(serialize_item(cache_item), indent=2, default=str))\n    print()\n\n    # 4. 添加提取的 KVCacheItem\n    print(\"===== Add KVCacheItem =====\")\n    kv_mem.add([cache_item])\n    print(json.dumps(serialize_item(kv_mem.get_all()), indent=2, default=str))\n    print()\n\n    # 5. 根据 ID 获取\n    print(\"===== Get KVCacheItem by id =====\")\n    retrieved = kv_mem.get(cache_item.id)\n    print(json.dumps(serialize_item(retrieved), indent=2, default=str))\n    print()\n\n    # 6. 合并缓存（使用两个项目进行模拟）\n    print(\"===== Merge DynamicCache =====\")\n    item2 = kv_mem.extract([{\"role\": \"user\", \"content\": \"Tell me a joke.\"}])\n    kv_mem.add([item2])\n    merged_cache = kv_mem.get_cache([cache_item.id, item2.id])\n    print(json.dumps(serialize_item(merged_cache), indent=2, default=str))\n    print()\n\n    # 7. 删除一个\n    print(\"===== Delete one KVCacheItem =====\")\n    kv_mem.delete([cache_item.id])\n    print(json.dumps(serialize_item(kv_mem.get_all()), indent=2, default=str))\n    print()\n\n    # 8. 转储和加载\n    print(\"===== Dump and Load KVCacheMemory =====\")\n    kv_mem.dump(\"tmp\u002Fkv_mem\")\n    print(\"Memory dumped to 'tmp\u002Fkv_mem'.\")\n    kv_mem.delete_all()\n    kv_mem.load(\"tmp\u002Fkv_mem\")\n    print(\n        \"Memory loaded from 'tmp\u002Fkv_mem':\",\n        json.dumps(serialize_item(kv_mem.get_all()), indent=2, default=str),\n    )\n",[42,2196,2197,2207,2214,2228,2233,2257,2284,2305,2310,2315,2334,2349,2358,2363,2376,2386,2391,2418,2440,2460,2502,2542,2578,2611,2616,2652,2685,2721,2754,2759,2799,2818,2860,2875,2900,2913,2939,2944,2953,2972,2989,3039,3045,3050,3055,3070,3090,3122,3127,3145,3152,3173,3192,3217,3242,3256,3281,3287,3292,3310,3323,3328,3342,3347,3352,3373,3380,3385,3391,3405,3421,3430,3444,3466,3479,3504,3521,3536,3550,3556,3562,3568,3574,3579,3585,3607,3612,3618,3629,3672,3711,3717,3734,3757,3804,3811,3816,3822,3838,3857,3903,3910,3915,3921,3937,3962,4002,4009,4014,4020,4036,4087,4103,4137,4177,4184,4189,4195,4211,4231,4274,4281,4286,4292,4308,4329,4345,4357,4377,4384,4396,4436],{"__ignoreMap":2005},[2009,2198,2199,2203],{"class":2011,"line":2012},[2009,2200,2202],{"class":2201},"s7zQu","import",[2009,2204,2206],{"class":2205},"sTEyZ"," json\n",[2009,2208,2210],{"class":2011,"line":2209},2,[2009,2211,2213],{"emptyLinePlaceholder":2212},true,"\n",[2009,2215,2217,2220,2223,2225],{"class":2011,"line":2216},3,[2009,2218,2219],{"class":2201},"from",[2009,2221,2222],{"class":2205}," transformers ",[2009,2224,2202],{"class":2201},[2009,2226,2227],{"class":2205}," DynamicCache\n",[2009,2229,2231],{"class":2011,"line":2230},4,[2009,2232,2213],{"emptyLinePlaceholder":2212},[2009,2234,2236,2238,2241,2244,2247,2249,2252,2254],{"class":2011,"line":2235},5,[2009,2237,2219],{"class":2201},[2009,2239,2240],{"class":2205}," memos",[2009,2242,2243],{"class":2018},".",[2009,2245,2246],{"class":2205},"configs",[2009,2248,2243],{"class":2018},[2009,2250,2251],{"class":2205},"memory ",[2009,2253,2202],{"class":2201},[2009,2255,2256],{"class":2205}," MemoryConfigFactory\n",[2009,2258,2260,2262,2264,2266,2269,2271,2274,2276,2279,2281],{"class":2011,"line":2259},6,[2009,2261,2219],{"class":2201},[2009,2263,2240],{"class":2205},[2009,2265,2243],{"class":2018},[2009,2267,2268],{"class":2205},"memories",[2009,2270,2243],{"class":2018},[2009,2272,2273],{"class":2205},"activation",[2009,2275,2243],{"class":2018},[2009,2277,2278],{"class":2205},"item ",[2009,2280,2202],{"class":2201},[2009,2282,2283],{"class":2205}," KVCacheItem\n",[2009,2285,2287,2289,2291,2293,2295,2297,2300,2302],{"class":2011,"line":2286},7,[2009,2288,2219],{"class":2201},[2009,2290,2240],{"class":2205},[2009,2292,2243],{"class":2018},[2009,2294,2268],{"class":2205},[2009,2296,2243],{"class":2018},[2009,2298,2299],{"class":2205},"factory ",[2009,2301,2202],{"class":2201},[2009,2303,2304],{"class":2205}," MemoryFactory\n",[2009,2306,2308],{"class":2011,"line":2307},8,[2009,2309,2213],{"emptyLinePlaceholder":2212},[2009,2311,2313],{"class":2011,"line":2312},9,[2009,2314,2213],{"emptyLinePlaceholder":2212},[2009,2316,2318,2322,2325,2327,2331],{"class":2011,"line":2317},10,[2009,2319,2321],{"class":2320},"spNyl","def",[2009,2323,2324],{"class":2015}," get_cache_info",[2009,2326,2019],{"class":2018},[2009,2328,2330],{"class":2329},"sHdIc","cache",[2009,2332,2333],{"class":2018},"):\n",[2009,2335,2337,2340,2343,2346],{"class":2011,"line":2336},11,[2009,2338,2339],{"class":2201},"    if",[2009,2341,2342],{"class":2018}," not",[2009,2344,2345],{"class":2205}," cache",[2009,2347,2348],{"class":2018},":\n",[2009,2350,2352,2355],{"class":2011,"line":2351},12,[2009,2353,2354],{"class":2201},"        return",[2009,2356,2357],{"class":2018}," None\n",[2009,2359,2361],{"class":2011,"line":2360},13,[2009,2362,2213],{"emptyLinePlaceholder":2212},[2009,2364,2366,2369,2372],{"class":2011,"line":2365},14,[2009,2367,2368],{"class":2205},"    num_layers ",[2009,2370,2371],{"class":2018},"=",[2009,2373,2375],{"class":2374},"sbssI"," 0\n",[2009,2377,2379,2382,2384],{"class":2011,"line":2378},15,[2009,2380,2381],{"class":2205},"    total_size_bytes ",[2009,2383,2371],{"class":2018},[2009,2385,2375],{"class":2374},[2009,2387,2389],{"class":2011,"line":2388},16,[2009,2390,2213],{"emptyLinePlaceholder":2212},[2009,2392,2394,2396,2399,2401,2403,2406,2409,2413,2416],{"class":2011,"line":2393},17,[2009,2395,2339],{"class":2201},[2009,2397,2398],{"class":2015}," hasattr",[2009,2400,2019],{"class":2018},[2009,2402,2330],{"class":2015},[2009,2404,2405],{"class":2018},",",[2009,2407,2408],{"class":2018}," \"",[2009,2410,2412],{"class":2411},"sfazB","layers",[2009,2414,2415],{"class":2018},"\"",[2009,2417,2333],{"class":2018},[2009,2419,2421,2424,2426,2429,2431,2433,2435,2438],{"class":2011,"line":2420},18,[2009,2422,2423],{"class":2205},"        num_layers ",[2009,2425,2371],{"class":2018},[2009,2427,2428],{"class":2015}," len",[2009,2430,2019],{"class":2018},[2009,2432,2330],{"class":2015},[2009,2434,2243],{"class":2018},[2009,2436,2412],{"class":2437},"swJcz",[2009,2439,2030],{"class":2018},[2009,2441,2443,2446,2449,2452,2454,2456,2458],{"class":2011,"line":2442},19,[2009,2444,2445],{"class":2201},"        for",[2009,2447,2448],{"class":2205}," layer ",[2009,2450,2451],{"class":2201},"in",[2009,2453,2345],{"class":2205},[2009,2455,2243],{"class":2018},[2009,2457,2412],{"class":2437},[2009,2459,2348],{"class":2018},[2009,2461,2463,2466,2468,2470,2473,2475,2477,2480,2482,2484,2487,2490,2492,2494,2497,2499],{"class":2011,"line":2462},20,[2009,2464,2465],{"class":2201},"            if",[2009,2467,2398],{"class":2015},[2009,2469,2019],{"class":2018},[2009,2471,2472],{"class":2015},"layer",[2009,2474,2405],{"class":2018},[2009,2476,2408],{"class":2018},[2009,2478,2479],{"class":2411},"key_cache",[2009,2481,2415],{"class":2018},[2009,2483,1995],{"class":2018},[2009,2485,2486],{"class":2018}," and",[2009,2488,2489],{"class":2205}," layer",[2009,2491,2243],{"class":2018},[2009,2493,2479],{"class":2437},[2009,2495,2496],{"class":2018}," is",[2009,2498,2342],{"class":2018},[2009,2500,2501],{"class":2018}," None:\n",[2009,2503,2505,2508,2511,2513,2515,2517,2519,2522,2525,2528,2530,2532,2534,2536,2539],{"class":2011,"line":2504},21,[2009,2506,2507],{"class":2205},"                total_size_bytes ",[2009,2509,2510],{"class":2018},"+=",[2009,2512,2489],{"class":2205},[2009,2514,2243],{"class":2018},[2009,2516,2479],{"class":2437},[2009,2518,2243],{"class":2018},[2009,2520,2521],{"class":2015},"nelement",[2009,2523,2524],{"class":2018},"()",[2009,2526,2527],{"class":2018}," *",[2009,2529,2489],{"class":2205},[2009,2531,2243],{"class":2018},[2009,2533,2479],{"class":2437},[2009,2535,2243],{"class":2018},[2009,2537,2538],{"class":2015},"element_size",[2009,2540,2541],{"class":2018},"()\n",[2009,2543,2545,2547,2549,2551,2553,2555,2557,2560,2562,2564,2566,2568,2570,2572,2574,2576],{"class":2011,"line":2544},22,[2009,2546,2465],{"class":2201},[2009,2548,2398],{"class":2015},[2009,2550,2019],{"class":2018},[2009,2552,2472],{"class":2015},[2009,2554,2405],{"class":2018},[2009,2556,2408],{"class":2018},[2009,2558,2559],{"class":2411},"value_cache",[2009,2561,2415],{"class":2018},[2009,2563,1995],{"class":2018},[2009,2565,2486],{"class":2018},[2009,2567,2489],{"class":2205},[2009,2569,2243],{"class":2018},[2009,2571,2559],{"class":2437},[2009,2573,2496],{"class":2018},[2009,2575,2342],{"class":2018},[2009,2577,2501],{"class":2018},[2009,2579,2581,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609],{"class":2011,"line":2580},23,[2009,2582,2507],{"class":2205},[2009,2584,2510],{"class":2018},[2009,2586,2489],{"class":2205},[2009,2588,2243],{"class":2018},[2009,2590,2559],{"class":2437},[2009,2592,2243],{"class":2018},[2009,2594,2521],{"class":2015},[2009,2596,2524],{"class":2018},[2009,2598,2527],{"class":2018},[2009,2600,2489],{"class":2205},[2009,2602,2243],{"class":2018},[2009,2604,2559],{"class":2437},[2009,2606,2243],{"class":2018},[2009,2608,2538],{"class":2015},[2009,2610,2541],{"class":2018},[2009,2612,2614],{"class":2011,"line":2613},24,[2009,2615,2213],{"emptyLinePlaceholder":2212},[2009,2617,2619,2621,2623,2625,2627,2629,2631,2634,2636,2638,2640,2642,2644,2646,2648,2650],{"class":2011,"line":2618},25,[2009,2620,2465],{"class":2201},[2009,2622,2398],{"class":2015},[2009,2624,2019],{"class":2018},[2009,2626,2472],{"class":2015},[2009,2628,2405],{"class":2018},[2009,2630,2408],{"class":2018},[2009,2632,2633],{"class":2411},"keys",[2009,2635,2415],{"class":2018},[2009,2637,1995],{"class":2018},[2009,2639,2486],{"class":2018},[2009,2641,2489],{"class":2205},[2009,2643,2243],{"class":2018},[2009,2645,2633],{"class":2437},[2009,2647,2496],{"class":2018},[2009,2649,2342],{"class":2018},[2009,2651,2501],{"class":2018},[2009,2653,2655,2657,2659,2661,2663,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683],{"class":2011,"line":2654},26,[2009,2656,2507],{"class":2205},[2009,2658,2510],{"class":2018},[2009,2660,2489],{"class":2205},[2009,2662,2243],{"class":2018},[2009,2664,2633],{"class":2437},[2009,2666,2243],{"class":2018},[2009,2668,2521],{"class":2015},[2009,2670,2524],{"class":2018},[2009,2672,2527],{"class":2018},[2009,2674,2489],{"class":2205},[2009,2676,2243],{"class":2018},[2009,2678,2633],{"class":2437},[2009,2680,2243],{"class":2018},[2009,2682,2538],{"class":2015},[2009,2684,2541],{"class":2018},[2009,2686,2688,2690,2692,2694,2696,2698,2700,2703,2705,2707,2709,2711,2713,2715,2717,2719],{"class":2011,"line":2687},27,[2009,2689,2465],{"class":2201},[2009,2691,2398],{"class":2015},[2009,2693,2019],{"class":2018},[2009,2695,2472],{"class":2015},[2009,2697,2405],{"class":2018},[2009,2699,2408],{"class":2018},[2009,2701,2702],{"class":2411},"values",[2009,2704,2415],{"class":2018},[2009,2706,1995],{"class":2018},[2009,2708,2486],{"class":2018},[2009,2710,2489],{"class":2205},[2009,2712,2243],{"class":2018},[2009,2714,2702],{"class":2437},[2009,2716,2496],{"class":2018},[2009,2718,2342],{"class":2018},[2009,2720,2501],{"class":2018},[2009,2722,2724,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752],{"class":2011,"line":2723},28,[2009,2725,2507],{"class":2205},[2009,2727,2510],{"class":2018},[2009,2729,2489],{"class":2205},[2009,2731,2243],{"class":2018},[2009,2733,2702],{"class":2437},[2009,2735,2243],{"class":2018},[2009,2737,2521],{"class":2015},[2009,2739,2524],{"class":2018},[2009,2741,2527],{"class":2018},[2009,2743,2489],{"class":2205},[2009,2745,2243],{"class":2018},[2009,2747,2702],{"class":2437},[2009,2749,2243],{"class":2018},[2009,2751,2538],{"class":2015},[2009,2753,2541],{"class":2018},[2009,2755,2757],{"class":2011,"line":2756},29,[2009,2758,2213],{"emptyLinePlaceholder":2212},[2009,2760,2762,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797],{"class":2011,"line":2761},30,[2009,2763,2764],{"class":2201},"    elif",[2009,2766,2398],{"class":2015},[2009,2768,2019],{"class":2018},[2009,2770,2330],{"class":2015},[2009,2772,2405],{"class":2018},[2009,2774,2408],{"class":2018},[2009,2776,2479],{"class":2411},[2009,2778,2415],{"class":2018},[2009,2780,1995],{"class":2018},[2009,2782,2486],{"class":2018},[2009,2784,2398],{"class":2015},[2009,2786,2019],{"class":2018},[2009,2788,2330],{"class":2015},[2009,2790,2405],{"class":2018},[2009,2792,2408],{"class":2018},[2009,2794,2559],{"class":2411},[2009,2796,2415],{"class":2018},[2009,2798,2333],{"class":2018},[2009,2800,2802,2804,2806,2808,2810,2812,2814,2816],{"class":2011,"line":2801},31,[2009,2803,2423],{"class":2205},[2009,2805,2371],{"class":2018},[2009,2807,2428],{"class":2015},[2009,2809,2019],{"class":2018},[2009,2811,2330],{"class":2015},[2009,2813,2243],{"class":2018},[2009,2815,2479],{"class":2437},[2009,2817,2030],{"class":2018},[2009,2819,2821,2823,2826,2828,2831,2833,2836,2838,2840,2842,2844,2846,2848,2850,2852,2854,2857],{"class":2011,"line":2820},32,[2009,2822,2445],{"class":2201},[2009,2824,2825],{"class":2205}," k",[2009,2827,2405],{"class":2018},[2009,2829,2830],{"class":2205}," v ",[2009,2832,2451],{"class":2201},[2009,2834,2835],{"class":2015}," zip",[2009,2837,2019],{"class":2018},[2009,2839,2330],{"class":2015},[2009,2841,2243],{"class":2018},[2009,2843,2479],{"class":2437},[2009,2845,2405],{"class":2018},[2009,2847,2345],{"class":2015},[2009,2849,2243],{"class":2018},[2009,2851,2559],{"class":2437},[2009,2853,2405],{"class":2018},[2009,2855,2856],{"class":2329}," strict",[2009,2858,2859],{"class":2018},"=False):\n",[2009,2861,2863,2865,2868,2871,2873],{"class":2011,"line":2862},33,[2009,2864,2465],{"class":2201},[2009,2866,2867],{"class":2205}," k ",[2009,2869,2870],{"class":2018},"is",[2009,2872,2342],{"class":2018},[2009,2874,2501],{"class":2018},[2009,2876,2878,2880,2882,2884,2886,2888,2890,2892,2894,2896,2898],{"class":2011,"line":2877},34,[2009,2879,2507],{"class":2205},[2009,2881,2510],{"class":2018},[2009,2883,2825],{"class":2205},[2009,2885,2243],{"class":2018},[2009,2887,2521],{"class":2015},[2009,2889,2524],{"class":2018},[2009,2891,2527],{"class":2018},[2009,2893,2825],{"class":2205},[2009,2895,2243],{"class":2018},[2009,2897,2538],{"class":2015},[2009,2899,2541],{"class":2018},[2009,2901,2903,2905,2907,2909,2911],{"class":2011,"line":2902},35,[2009,2904,2465],{"class":2201},[2009,2906,2830],{"class":2205},[2009,2908,2870],{"class":2018},[2009,2910,2342],{"class":2018},[2009,2912,2501],{"class":2018},[2009,2914,2916,2918,2920,2923,2925,2927,2929,2931,2933,2935,2937],{"class":2011,"line":2915},36,[2009,2917,2507],{"class":2205},[2009,2919,2510],{"class":2018},[2009,2921,2922],{"class":2205}," v",[2009,2924,2243],{"class":2018},[2009,2926,2521],{"class":2015},[2009,2928,2524],{"class":2018},[2009,2930,2527],{"class":2018},[2009,2932,2922],{"class":2205},[2009,2934,2243],{"class":2018},[2009,2936,2538],{"class":2015},[2009,2938,2541],{"class":2018},[2009,2940,2942],{"class":2011,"line":2941},37,[2009,2943,2213],{"emptyLinePlaceholder":2212},[2009,2945,2947,2950],{"class":2011,"line":2946},38,[2009,2948,2949],{"class":2201},"    return",[2009,2951,2952],{"class":2018}," {\n",[2009,2954,2956,2959,2962,2964,2966,2969],{"class":2011,"line":2955},39,[2009,2957,2958],{"class":2018},"        \"",[2009,2960,2961],{"class":2411},"num_layers",[2009,2963,2415],{"class":2018},[2009,2965,1926],{"class":2018},[2009,2967,2968],{"class":2205}," num_layers",[2009,2970,2971],{"class":2018},",\n",[2009,2973,2975,2977,2980,2982,2984,2987],{"class":2011,"line":2974},40,[2009,2976,2958],{"class":2018},[2009,2978,2979],{"class":2411},"size_bytes",[2009,2981,2415],{"class":2018},[2009,2983,1926],{"class":2018},[2009,2985,2986],{"class":2205}," total_size_bytes",[2009,2988,2971],{"class":2018},[2009,2990,2992,2994,2997,2999,3001,3004,3006,3009,3012,3015,3018,3021,3023,3026,3028,3031,3034,3037],{"class":2011,"line":2991},41,[2009,2993,2958],{"class":2018},[2009,2995,2996],{"class":2411},"size_mb",[2009,2998,2415],{"class":2018},[2009,3000,1926],{"class":2018},[2009,3002,3003],{"class":2320}," f",[2009,3005,2415],{"class":2411},[2009,3007,3008],{"class":2374},"{",[2009,3010,3011],{"class":2205},"total_size_bytes ",[2009,3013,3014],{"class":2018},"\u002F",[2009,3016,3017],{"class":2018}," (",[2009,3019,3020],{"class":2374},"1024",[2009,3022,2527],{"class":2018},[2009,3024,3025],{"class":2374}," 1024",[2009,3027,1995],{"class":2018},[2009,3029,3030],{"class":2320},":.2f",[2009,3032,3033],{"class":2374},"}",[2009,3035,3036],{"class":2411}," MB\"",[2009,3038,2971],{"class":2018},[2009,3040,3042],{"class":2011,"line":3041},42,[2009,3043,3044],{"class":2018},"    }\n",[2009,3046,3048],{"class":2011,"line":3047},43,[2009,3049,2213],{"emptyLinePlaceholder":2212},[2009,3051,3053],{"class":2011,"line":3052},44,[2009,3054,2213],{"emptyLinePlaceholder":2212},[2009,3056,3058,3060,3063,3065,3068],{"class":2011,"line":3057},45,[2009,3059,2321],{"class":2320},[2009,3061,3062],{"class":2015}," serialize_item",[2009,3064,2019],{"class":2018},[2009,3066,3067],{"class":2329},"obj",[2009,3069,2333],{"class":2018},[2009,3071,3073,3075,3078,3080,3082,3084,3088],{"class":2011,"line":3072},46,[2009,3074,2339],{"class":2201},[2009,3076,3077],{"class":2015}," isinstance",[2009,3079,2019],{"class":2018},[2009,3081,3067],{"class":2015},[2009,3083,2405],{"class":2018},[2009,3085,3087],{"class":3086},"sBMFI"," list",[2009,3089,2333],{"class":2018},[2009,3091,3093,3095,3098,3101,3103,3106,3108,3111,3114,3116,3119],{"class":2011,"line":3092},47,[2009,3094,2354],{"class":2201},[2009,3096,3097],{"class":2018}," [",[2009,3099,3100],{"class":2015},"serialize_item",[2009,3102,2019],{"class":2018},[2009,3104,3105],{"class":2015},"x",[2009,3107,1995],{"class":2018},[2009,3109,3110],{"class":2201}," for",[2009,3112,3113],{"class":2205}," x ",[2009,3115,2451],{"class":2201},[2009,3117,3118],{"class":2205}," obj",[2009,3120,3121],{"class":2018},"]\n",[2009,3123,3125],{"class":2011,"line":3124},48,[2009,3126,2213],{"emptyLinePlaceholder":2212},[2009,3128,3130,3132,3134,3136,3138,3140,3143],{"class":2011,"line":3129},49,[2009,3131,2339],{"class":2201},[2009,3133,3077],{"class":2015},[2009,3135,2019],{"class":2018},[2009,3137,3067],{"class":2015},[2009,3139,2405],{"class":2018},[2009,3141,3142],{"class":2015}," KVCacheItem",[2009,3144,2333],{"class":2018},[2009,3146,3148,3150],{"class":2011,"line":3147},50,[2009,3149,2354],{"class":2201},[2009,3151,2952],{"class":2018},[2009,3153,3155,3158,3161,3163,3165,3167,3169,3171],{"class":2011,"line":3154},51,[2009,3156,3157],{"class":2018},"            \"",[2009,3159,3160],{"class":2411},"id",[2009,3162,2415],{"class":2018},[2009,3164,1926],{"class":2018},[2009,3166,3118],{"class":2205},[2009,3168,2243],{"class":2018},[2009,3170,3160],{"class":2437},[2009,3172,2971],{"class":2018},[2009,3174,3176,3178,3180,3182,3184,3186,3188,3190],{"class":2011,"line":3175},52,[2009,3177,3157],{"class":2018},[2009,3179,1980],{"class":2411},[2009,3181,2415],{"class":2018},[2009,3183,1926],{"class":2018},[2009,3185,3118],{"class":2205},[2009,3187,2243],{"class":2018},[2009,3189,1980],{"class":2437},[2009,3191,2971],{"class":2018},[2009,3193,3195,3197,3200,3202,3204,3206,3208,3210,3212,3215],{"class":2011,"line":3194},53,[2009,3196,3157],{"class":2018},[2009,3198,3199],{"class":2411},"records",[2009,3201,2415],{"class":2018},[2009,3203,1926],{"class":2018},[2009,3205,3118],{"class":2205},[2009,3207,2243],{"class":2018},[2009,3209,3199],{"class":2437},[2009,3211,2243],{"class":2018},[2009,3213,3214],{"class":2015},"model_dump",[2009,3216,2541],{"class":2018},[2009,3218,3220,3222,3224,3226,3228,3230,3232,3234,3236,3238,3240],{"class":2011,"line":3219},54,[2009,3221,2465],{"class":2201},[2009,3223,2398],{"class":2015},[2009,3225,2019],{"class":2018},[2009,3227,3067],{"class":2015},[2009,3229,2243],{"class":2018},[2009,3231,3199],{"class":2437},[2009,3233,2405],{"class":2018},[2009,3235,2408],{"class":2018},[2009,3237,3214],{"class":2411},[2009,3239,2415],{"class":2018},[2009,3241,2030],{"class":2018},[2009,3243,3245,3248,3250,3252,3254],{"class":2011,"line":3244},55,[2009,3246,3247],{"class":2201},"            else",[2009,3249,3118],{"class":2205},[2009,3251,2243],{"class":2018},[2009,3253,3199],{"class":2437},[2009,3255,2971],{"class":2018},[2009,3257,3259,3261,3264,3266,3268,3270,3272,3274,3276,3278],{"class":2011,"line":3258},56,[2009,3260,3157],{"class":2018},[2009,3262,3263],{"class":2411},"memory",[2009,3265,2415],{"class":2018},[2009,3267,1926],{"class":2018},[2009,3269,2324],{"class":2015},[2009,3271,2019],{"class":2018},[2009,3273,3067],{"class":2015},[2009,3275,2243],{"class":2018},[2009,3277,3263],{"class":2437},[2009,3279,3280],{"class":2018},"),\n",[2009,3282,3284],{"class":2011,"line":3283},57,[2009,3285,3286],{"class":2018},"        }\n",[2009,3288,3290],{"class":2011,"line":3289},58,[2009,3291,2213],{"emptyLinePlaceholder":2212},[2009,3293,3295,3297,3299,3301,3303,3305,3308],{"class":2011,"line":3294},59,[2009,3296,2339],{"class":2201},[2009,3298,3077],{"class":2015},[2009,3300,2019],{"class":2018},[2009,3302,3067],{"class":2015},[2009,3304,2405],{"class":2018},[2009,3306,3307],{"class":2015}," DynamicCache",[2009,3309,2333],{"class":2018},[2009,3311,3313,3315,3317,3319,3321],{"class":2011,"line":3312},60,[2009,3314,2354],{"class":2201},[2009,3316,2324],{"class":2015},[2009,3318,2019],{"class":2018},[2009,3320,3067],{"class":2015},[2009,3322,2030],{"class":2018},[2009,3324,3326],{"class":2011,"line":3325},61,[2009,3327,2213],{"emptyLinePlaceholder":2212},[2009,3329,3331,3333,3336,3338,3340],{"class":2011,"line":3330},62,[2009,3332,2949],{"class":2201},[2009,3334,3335],{"class":3086}," str",[2009,3337,2019],{"class":2018},[2009,3339,3067],{"class":2015},[2009,3341,2030],{"class":2018},[2009,3343,3345],{"class":2011,"line":3344},63,[2009,3346,2213],{"emptyLinePlaceholder":2212},[2009,3348,3350],{"class":2011,"line":3349},64,[2009,3351,2213],{"emptyLinePlaceholder":2212},[2009,3353,3355,3358,3361,3364,3366,3369,3371],{"class":2011,"line":3354},65,[2009,3356,3357],{"class":2201},"if",[2009,3359,3360],{"class":2205}," __name__ ",[2009,3362,3363],{"class":2018},"==",[2009,3365,2408],{"class":2018},[2009,3367,3368],{"class":2411},"__main__",[2009,3370,2415],{"class":2018},[2009,3372,2348],{"class":2018},[2009,3374,3376],{"class":2011,"line":3375},66,[2009,3377,3379],{"class":3378},"sHwdD","    # ===== 示例：使用工厂和 HFLLM 构建及管理 KVCacheMemory =====\n",[2009,3381,3383],{"class":2011,"line":3382},67,[2009,3384,2213],{"emptyLinePlaceholder":2212},[2009,3386,3388],{"class":2011,"line":3387},68,[2009,3389,3390],{"class":3378},"    # 1. 创建 KVCacheMemory 配置（使用 HuggingFace 后端）\n",[2009,3392,3394,3397,3399,3402],{"class":2011,"line":3393},69,[2009,3395,3396],{"class":2205},"    config ",[2009,3398,2371],{"class":2018},[2009,3400,3401],{"class":2015}," MemoryConfigFactory",[2009,3403,3404],{"class":2018},"(\n",[2009,3406,3408,3411,3413,3415,3417,3419],{"class":2011,"line":3407},70,[2009,3409,3410],{"class":2329},"        backend",[2009,3412,2371],{"class":2018},[2009,3414,2415],{"class":2018},[2009,3416,1965],{"class":2411},[2009,3418,2415],{"class":2018},[2009,3420,2971],{"class":2018},[2009,3422,3424,3427],{"class":2011,"line":3423},71,[2009,3425,3426],{"class":2329},"        config",[2009,3428,3429],{"class":2018},"={\n",[2009,3431,3433,3435,3438,3440,3442],{"class":2011,"line":3432},72,[2009,3434,3157],{"class":2018},[2009,3436,3437],{"class":2411},"extractor_llm",[2009,3439,2415],{"class":2018},[2009,3441,1926],{"class":2018},[2009,3443,2952],{"class":2018},[2009,3445,3447,3450,3453,3455,3457,3459,3462,3464],{"class":2011,"line":3446},73,[2009,3448,3449],{"class":2018},"                \"",[2009,3451,3452],{"class":2411},"backend",[2009,3454,2415],{"class":2018},[2009,3456,1926],{"class":2018},[2009,3458,2408],{"class":2018},[2009,3460,3461],{"class":2411},"huggingface",[2009,3463,2415],{"class":2018},[2009,3465,2971],{"class":2018},[2009,3467,3469,3471,3473,3475,3477],{"class":2011,"line":3468},74,[2009,3470,3449],{"class":2018},[2009,3472,2022],{"class":2411},[2009,3474,2415],{"class":2018},[2009,3476,1926],{"class":2018},[2009,3478,2952],{"class":2018},[2009,3480,3482,3485,3488,3490,3492,3494,3497,3499,3501],{"class":2011,"line":3481},75,[2009,3483,3484],{"class":2018},"                    \"",[2009,3486,3487],{"class":2411},"model_name_or_path",[2009,3489,2415],{"class":2018},[2009,3491,1926],{"class":2018},[2009,3493,2408],{"class":2018},[2009,3495,3496],{"class":2411},"Qwen\u002FQwen3-0.6B",[2009,3498,2415],{"class":2018},[2009,3500,2405],{"class":2018},[2009,3502,3503],{"class":3378},"  # 使用有效的 HuggingFace 模型名称\n",[2009,3505,3507,3509,3512,3514,3516,3519],{"class":2011,"line":3506},76,[2009,3508,3484],{"class":2018},[2009,3510,3511],{"class":2411},"max_tokens",[2009,3513,2415],{"class":2018},[2009,3515,1926],{"class":2018},[2009,3517,3518],{"class":2374}," 32",[2009,3520,2971],{"class":2018},[2009,3522,3524,3526,3529,3531,3533],{"class":2011,"line":3523},77,[2009,3525,3484],{"class":2018},[2009,3527,3528],{"class":2411},"add_generation_prompt",[2009,3530,2415],{"class":2018},[2009,3532,1926],{"class":2018},[2009,3534,3535],{"class":2018}," True,\n",[2009,3537,3539,3541,3544,3546,3548],{"class":2011,"line":3538},78,[2009,3540,3484],{"class":2018},[2009,3542,3543],{"class":2411},"remove_think_prefix",[2009,3545,2415],{"class":2018},[2009,3547,1926],{"class":2018},[2009,3549,3535],{"class":2018},[2009,3551,3553],{"class":2011,"line":3552},79,[2009,3554,3555],{"class":2018},"                },\n",[2009,3557,3559],{"class":2011,"line":3558},80,[2009,3560,3561],{"class":2018},"            },\n",[2009,3563,3565],{"class":2011,"line":3564},81,[2009,3566,3567],{"class":2018},"        },\n",[2009,3569,3571],{"class":2011,"line":3570},82,[2009,3572,3573],{"class":2018},"    )\n",[2009,3575,3577],{"class":2011,"line":3576},83,[2009,3578,2213],{"emptyLinePlaceholder":2212},[2009,3580,3582],{"class":2011,"line":3581},84,[2009,3583,3584],{"class":3378},"    # 2. 使用工厂实例化 KVCacheMemory\n",[2009,3586,3588,3591,3593,3596,3598,3601,3603,3605],{"class":2011,"line":3587},85,[2009,3589,3590],{"class":2205},"    kv_mem ",[2009,3592,2371],{"class":2018},[2009,3594,3595],{"class":2205}," MemoryFactory",[2009,3597,2243],{"class":2018},[2009,3599,3600],{"class":2015},"from_config",[2009,3602,2019],{"class":2018},[2009,3604,2022],{"class":2015},[2009,3606,2030],{"class":2018},[2009,3608,3610],{"class":2011,"line":3609},86,[2009,3611,2213],{"emptyLinePlaceholder":2212},[2009,3613,3615],{"class":2011,"line":3614},87,[2009,3616,3617],{"class":3378},"    # 3. 从提示中提取 KVCacheItem (DynamicCache)（内部使用 HFLLM.build_kv_cache）\n",[2009,3619,3621,3624,3626],{"class":2011,"line":3620},88,[2009,3622,3623],{"class":2205},"    prompt ",[2009,3625,2371],{"class":2018},[2009,3627,3628],{"class":2018}," [\n",[2009,3630,3632,3635,3637,3640,3642,3644,3646,3649,3651,3653,3655,3658,3660,3662,3664,3667,3669],{"class":2011,"line":3631},89,[2009,3633,3634],{"class":2018},"        {",[2009,3636,2415],{"class":2018},[2009,3638,3639],{"class":2411},"role",[2009,3641,2415],{"class":2018},[2009,3643,1926],{"class":2018},[2009,3645,2408],{"class":2018},[2009,3647,3648],{"class":2411},"user",[2009,3650,2415],{"class":2018},[2009,3652,2405],{"class":2018},[2009,3654,2408],{"class":2018},[2009,3656,3657],{"class":2411},"content",[2009,3659,2415],{"class":2018},[2009,3661,1926],{"class":2018},[2009,3663,2408],{"class":2018},[2009,3665,3666],{"class":2411},"What is MemOS?",[2009,3668,2415],{"class":2018},[2009,3670,3671],{"class":2018},"},\n",[2009,3673,3675,3677,3679,3681,3683,3685,3687,3690,3692,3694,3696,3698,3700,3702,3704,3707,3709],{"class":2011,"line":3674},90,[2009,3676,3634],{"class":2018},[2009,3678,2415],{"class":2018},[2009,3680,3639],{"class":2411},[2009,3682,2415],{"class":2018},[2009,3684,1926],{"class":2018},[2009,3686,2408],{"class":2018},[2009,3688,3689],{"class":2411},"assistant",[2009,3691,2415],{"class":2018},[2009,3693,2405],{"class":2018},[2009,3695,2408],{"class":2018},[2009,3697,3657],{"class":2411},[2009,3699,2415],{"class":2018},[2009,3701,1926],{"class":2018},[2009,3703,2408],{"class":2018},[2009,3705,3706],{"class":2411},"MemOS is a memory operating system for LLMs.",[2009,3708,2415],{"class":2018},[2009,3710,3671],{"class":2018},[2009,3712,3714],{"class":2011,"line":3713},91,[2009,3715,3716],{"class":2018},"    ]\n",[2009,3718,3720,3723,3725,3727,3730,3732],{"class":2011,"line":3719},92,[2009,3721,3722],{"class":2015},"    print",[2009,3724,2019],{"class":2018},[2009,3726,2415],{"class":2018},[2009,3728,3729],{"class":2411},"===== Extract KVCacheItem =====",[2009,3731,2415],{"class":2018},[2009,3733,2030],{"class":2018},[2009,3735,3737,3740,3742,3745,3747,3750,3752,3755],{"class":2011,"line":3736},93,[2009,3738,3739],{"class":2205},"    cache_item ",[2009,3741,2371],{"class":2018},[2009,3743,3744],{"class":2205}," kv_mem",[2009,3746,2243],{"class":2018},[2009,3748,3749],{"class":2015},"extract",[2009,3751,2019],{"class":2018},[2009,3753,3754],{"class":2015},"prompt",[2009,3756,2030],{"class":2018},[2009,3758,3760,3762,3764,3767,3769,3772,3774,3776,3778,3781,3784,3787,3789,3792,3794,3797,3799,3801],{"class":2011,"line":3759},94,[2009,3761,3722],{"class":2015},[2009,3763,2019],{"class":2018},[2009,3765,3766],{"class":2015},"json",[2009,3768,2243],{"class":2018},[2009,3770,3771],{"class":2015},"dumps",[2009,3773,2019],{"class":2018},[2009,3775,3100],{"class":2015},[2009,3777,2019],{"class":2018},[2009,3779,3780],{"class":2015},"cache_item",[2009,3782,3783],{"class":2018},"),",[2009,3785,3786],{"class":2329}," indent",[2009,3788,2371],{"class":2018},[2009,3790,3791],{"class":2374},"2",[2009,3793,2405],{"class":2018},[2009,3795,3796],{"class":2329}," default",[2009,3798,2371],{"class":2018},[2009,3800,1955],{"class":3086},[2009,3802,3803],{"class":2018},"))\n",[2009,3805,3807,3809],{"class":2011,"line":3806},95,[2009,3808,3722],{"class":2015},[2009,3810,2541],{"class":2018},[2009,3812,3814],{"class":2011,"line":3813},96,[2009,3815,2213],{"emptyLinePlaceholder":2212},[2009,3817,3819],{"class":2011,"line":3818},97,[2009,3820,3821],{"class":3378},"    # 4. 添加提取的 KVCacheItem\n",[2009,3823,3825,3827,3829,3831,3834,3836],{"class":2011,"line":3824},98,[2009,3826,3722],{"class":2015},[2009,3828,2019],{"class":2018},[2009,3830,2415],{"class":2018},[2009,3832,3833],{"class":2411},"===== Add KVCacheItem =====",[2009,3835,2415],{"class":2018},[2009,3837,2030],{"class":2018},[2009,3839,3841,3844,3846,3849,3852,3854],{"class":2011,"line":3840},99,[2009,3842,3843],{"class":2205},"    kv_mem",[2009,3845,2243],{"class":2018},[2009,3847,3848],{"class":2015},"add",[2009,3850,3851],{"class":2018},"([",[2009,3853,3780],{"class":2015},[2009,3855,3856],{"class":2018},"])\n",[2009,3858,3860,3862,3864,3866,3868,3870,3872,3874,3876,3879,3881,3884,3887,3889,3891,3893,3895,3897,3899,3901],{"class":2011,"line":3859},100,[2009,3861,3722],{"class":2015},[2009,3863,2019],{"class":2018},[2009,3865,3766],{"class":2015},[2009,3867,2243],{"class":2018},[2009,3869,3771],{"class":2015},[2009,3871,2019],{"class":2018},[2009,3873,3100],{"class":2015},[2009,3875,2019],{"class":2018},[2009,3877,3878],{"class":2015},"kv_mem",[2009,3880,2243],{"class":2018},[2009,3882,3883],{"class":2015},"get_all",[2009,3885,3886],{"class":2018},"()),",[2009,3888,3786],{"class":2329},[2009,3890,2371],{"class":2018},[2009,3892,3791],{"class":2374},[2009,3894,2405],{"class":2018},[2009,3896,3796],{"class":2329},[2009,3898,2371],{"class":2018},[2009,3900,1955],{"class":3086},[2009,3902,3803],{"class":2018},[2009,3904,3906,3908],{"class":2011,"line":3905},101,[2009,3907,3722],{"class":2015},[2009,3909,2541],{"class":2018},[2009,3911,3913],{"class":2011,"line":3912},102,[2009,3914,2213],{"emptyLinePlaceholder":2212},[2009,3916,3918],{"class":2011,"line":3917},103,[2009,3919,3920],{"class":3378},"    # 5. 根据 ID 获取\n",[2009,3922,3924,3926,3928,3930,3933,3935],{"class":2011,"line":3923},104,[2009,3925,3722],{"class":2015},[2009,3927,2019],{"class":2018},[2009,3929,2415],{"class":2018},[2009,3931,3932],{"class":2411},"===== Get KVCacheItem by id =====",[2009,3934,2415],{"class":2018},[2009,3936,2030],{"class":2018},[2009,3938,3940,3943,3945,3947,3949,3952,3954,3956,3958,3960],{"class":2011,"line":3939},105,[2009,3941,3942],{"class":2205},"    retrieved ",[2009,3944,2371],{"class":2018},[2009,3946,3744],{"class":2205},[2009,3948,2243],{"class":2018},[2009,3950,3951],{"class":2015},"get",[2009,3953,2019],{"class":2018},[2009,3955,3780],{"class":2015},[2009,3957,2243],{"class":2018},[2009,3959,3160],{"class":2437},[2009,3961,2030],{"class":2018},[2009,3963,3965,3967,3969,3971,3973,3975,3977,3979,3981,3984,3986,3988,3990,3992,3994,3996,3998,4000],{"class":2011,"line":3964},106,[2009,3966,3722],{"class":2015},[2009,3968,2019],{"class":2018},[2009,3970,3766],{"class":2015},[2009,3972,2243],{"class":2018},[2009,3974,3771],{"class":2015},[2009,3976,2019],{"class":2018},[2009,3978,3100],{"class":2015},[2009,3980,2019],{"class":2018},[2009,3982,3983],{"class":2015},"retrieved",[2009,3985,3783],{"class":2018},[2009,3987,3786],{"class":2329},[2009,3989,2371],{"class":2018},[2009,3991,3791],{"class":2374},[2009,3993,2405],{"class":2018},[2009,3995,3796],{"class":2329},[2009,3997,2371],{"class":2018},[2009,3999,1955],{"class":3086},[2009,4001,3803],{"class":2018},[2009,4003,4005,4007],{"class":2011,"line":4004},107,[2009,4006,3722],{"class":2015},[2009,4008,2541],{"class":2018},[2009,4010,4012],{"class":2011,"line":4011},108,[2009,4013,2213],{"emptyLinePlaceholder":2212},[2009,4015,4017],{"class":2011,"line":4016},109,[2009,4018,4019],{"class":3378},"    # 6. 合并缓存（使用两个项目进行模拟）\n",[2009,4021,4023,4025,4027,4029,4032,4034],{"class":2011,"line":4022},110,[2009,4024,3722],{"class":2015},[2009,4026,2019],{"class":2018},[2009,4028,2415],{"class":2018},[2009,4030,4031],{"class":2411},"===== Merge DynamicCache =====",[2009,4033,2415],{"class":2018},[2009,4035,2030],{"class":2018},[2009,4037,4039,4042,4044,4046,4048,4050,4053,4055,4057,4059,4061,4063,4065,4067,4069,4071,4073,4075,4077,4079,4082,4084],{"class":2011,"line":4038},111,[2009,4040,4041],{"class":2205},"    item2 ",[2009,4043,2371],{"class":2018},[2009,4045,3744],{"class":2205},[2009,4047,2243],{"class":2018},[2009,4049,3749],{"class":2015},[2009,4051,4052],{"class":2018},"([{",[2009,4054,2415],{"class":2018},[2009,4056,3639],{"class":2411},[2009,4058,2415],{"class":2018},[2009,4060,1926],{"class":2018},[2009,4062,2408],{"class":2018},[2009,4064,3648],{"class":2411},[2009,4066,2415],{"class":2018},[2009,4068,2405],{"class":2018},[2009,4070,2408],{"class":2018},[2009,4072,3657],{"class":2411},[2009,4074,2415],{"class":2018},[2009,4076,1926],{"class":2018},[2009,4078,2408],{"class":2018},[2009,4080,4081],{"class":2411},"Tell me a joke.",[2009,4083,2415],{"class":2018},[2009,4085,4086],{"class":2018},"}])\n",[2009,4088,4090,4092,4094,4096,4098,4101],{"class":2011,"line":4089},112,[2009,4091,3843],{"class":2205},[2009,4093,2243],{"class":2018},[2009,4095,3848],{"class":2015},[2009,4097,3851],{"class":2018},[2009,4099,4100],{"class":2015},"item2",[2009,4102,3856],{"class":2018},[2009,4104,4106,4109,4111,4113,4115,4118,4120,4122,4124,4126,4128,4131,4133,4135],{"class":2011,"line":4105},113,[2009,4107,4108],{"class":2205},"    merged_cache ",[2009,4110,2371],{"class":2018},[2009,4112,3744],{"class":2205},[2009,4114,2243],{"class":2018},[2009,4116,4117],{"class":2015},"get_cache",[2009,4119,3851],{"class":2018},[2009,4121,3780],{"class":2015},[2009,4123,2243],{"class":2018},[2009,4125,3160],{"class":2437},[2009,4127,2405],{"class":2018},[2009,4129,4130],{"class":2015}," item2",[2009,4132,2243],{"class":2018},[2009,4134,3160],{"class":2437},[2009,4136,3856],{"class":2018},[2009,4138,4140,4142,4144,4146,4148,4150,4152,4154,4156,4159,4161,4163,4165,4167,4169,4171,4173,4175],{"class":2011,"line":4139},114,[2009,4141,3722],{"class":2015},[2009,4143,2019],{"class":2018},[2009,4145,3766],{"class":2015},[2009,4147,2243],{"class":2018},[2009,4149,3771],{"class":2015},[2009,4151,2019],{"class":2018},[2009,4153,3100],{"class":2015},[2009,4155,2019],{"class":2018},[2009,4157,4158],{"class":2015},"merged_cache",[2009,4160,3783],{"class":2018},[2009,4162,3786],{"class":2329},[2009,4164,2371],{"class":2018},[2009,4166,3791],{"class":2374},[2009,4168,2405],{"class":2018},[2009,4170,3796],{"class":2329},[2009,4172,2371],{"class":2018},[2009,4174,1955],{"class":3086},[2009,4176,3803],{"class":2018},[2009,4178,4180,4182],{"class":2011,"line":4179},115,[2009,4181,3722],{"class":2015},[2009,4183,2541],{"class":2018},[2009,4185,4187],{"class":2011,"line":4186},116,[2009,4188,2213],{"emptyLinePlaceholder":2212},[2009,4190,4192],{"class":2011,"line":4191},117,[2009,4193,4194],{"class":3378},"    # 7. 删除一个\n",[2009,4196,4198,4200,4202,4204,4207,4209],{"class":2011,"line":4197},118,[2009,4199,3722],{"class":2015},[2009,4201,2019],{"class":2018},[2009,4203,2415],{"class":2018},[2009,4205,4206],{"class":2411},"===== Delete one KVCacheItem =====",[2009,4208,2415],{"class":2018},[2009,4210,2030],{"class":2018},[2009,4212,4214,4216,4218,4221,4223,4225,4227,4229],{"class":2011,"line":4213},119,[2009,4215,3843],{"class":2205},[2009,4217,2243],{"class":2018},[2009,4219,4220],{"class":2015},"delete",[2009,4222,3851],{"class":2018},[2009,4224,3780],{"class":2015},[2009,4226,2243],{"class":2018},[2009,4228,3160],{"class":2437},[2009,4230,3856],{"class":2018},[2009,4232,4234,4236,4238,4240,4242,4244,4246,4248,4250,4252,4254,4256,4258,4260,4262,4264,4266,4268,4270,4272],{"class":2011,"line":4233},120,[2009,4235,3722],{"class":2015},[2009,4237,2019],{"class":2018},[2009,4239,3766],{"class":2015},[2009,4241,2243],{"class":2018},[2009,4243,3771],{"class":2015},[2009,4245,2019],{"class":2018},[2009,4247,3100],{"class":2015},[2009,4249,2019],{"class":2018},[2009,4251,3878],{"class":2015},[2009,4253,2243],{"class":2018},[2009,4255,3883],{"class":2015},[2009,4257,3886],{"class":2018},[2009,4259,3786],{"class":2329},[2009,4261,2371],{"class":2018},[2009,4263,3791],{"class":2374},[2009,4265,2405],{"class":2018},[2009,4267,3796],{"class":2329},[2009,4269,2371],{"class":2018},[2009,4271,1955],{"class":3086},[2009,4273,3803],{"class":2018},[2009,4275,4277,4279],{"class":2011,"line":4276},121,[2009,4278,3722],{"class":2015},[2009,4280,2541],{"class":2018},[2009,4282,4284],{"class":2011,"line":4283},122,[2009,4285,2213],{"emptyLinePlaceholder":2212},[2009,4287,4289],{"class":2011,"line":4288},123,[2009,4290,4291],{"class":3378},"    # 8. 转储和加载\n",[2009,4293,4295,4297,4299,4301,4304,4306],{"class":2011,"line":4294},124,[2009,4296,3722],{"class":2015},[2009,4298,2019],{"class":2018},[2009,4300,2415],{"class":2018},[2009,4302,4303],{"class":2411},"===== Dump and Load KVCacheMemory =====",[2009,4305,2415],{"class":2018},[2009,4307,2030],{"class":2018},[2009,4309,4311,4313,4315,4318,4320,4322,4325,4327],{"class":2011,"line":4310},125,[2009,4312,3843],{"class":2205},[2009,4314,2243],{"class":2018},[2009,4316,4317],{"class":2015},"dump",[2009,4319,2019],{"class":2018},[2009,4321,2415],{"class":2018},[2009,4323,4324],{"class":2411},"tmp\u002Fkv_mem",[2009,4326,2415],{"class":2018},[2009,4328,2030],{"class":2018},[2009,4330,4332,4334,4336,4338,4341,4343],{"class":2011,"line":4331},126,[2009,4333,3722],{"class":2015},[2009,4335,2019],{"class":2018},[2009,4337,2415],{"class":2018},[2009,4339,4340],{"class":2411},"Memory dumped to 'tmp\u002Fkv_mem'.",[2009,4342,2415],{"class":2018},[2009,4344,2030],{"class":2018},[2009,4346,4348,4350,4352,4355],{"class":2011,"line":4347},127,[2009,4349,3843],{"class":2205},[2009,4351,2243],{"class":2018},[2009,4353,4354],{"class":2015},"delete_all",[2009,4356,2541],{"class":2018},[2009,4358,4360,4362,4364,4367,4369,4371,4373,4375],{"class":2011,"line":4359},128,[2009,4361,3843],{"class":2205},[2009,4363,2243],{"class":2018},[2009,4365,4366],{"class":2015},"load",[2009,4368,2019],{"class":2018},[2009,4370,2415],{"class":2018},[2009,4372,4324],{"class":2411},[2009,4374,2415],{"class":2018},[2009,4376,2030],{"class":2018},[2009,4378,4380,4382],{"class":2011,"line":4379},129,[2009,4381,3722],{"class":2015},[2009,4383,3404],{"class":2018},[2009,4385,4387,4389,4392,4394],{"class":2011,"line":4386},130,[2009,4388,2958],{"class":2018},[2009,4390,4391],{"class":2411},"Memory loaded from 'tmp\u002Fkv_mem':",[2009,4393,2415],{"class":2018},[2009,4395,2971],{"class":2018},[2009,4397,4399,4402,4404,4406,4408,4410,4412,4414,4416,4418,4420,4422,4424,4426,4428,4430,4432,4434],{"class":2011,"line":4398},131,[2009,4400,4401],{"class":2015},"        json",[2009,4403,2243],{"class":2018},[2009,4405,3771],{"class":2015},[2009,4407,2019],{"class":2018},[2009,4409,3100],{"class":2015},[2009,4411,2019],{"class":2018},[2009,4413,3878],{"class":2015},[2009,4415,2243],{"class":2018},[2009,4417,3883],{"class":2015},[2009,4419,3886],{"class":2018},[2009,4421,3786],{"class":2329},[2009,4423,2371],{"class":2018},[2009,4425,3791],{"class":2374},[2009,4427,2405],{"class":2018},[2009,4429,3796],{"class":2329},[2009,4431,2371],{"class":2018},[2009,4433,1955],{"class":3086},[2009,4435,3280],{"class":2018},[2009,4437,4439],{"class":2011,"line":4438},132,[2009,4440,3573],{"class":2018},[80,4442,4444],{"id":4443},"vllm-kvcache-memory","VLLM KVCache Memory",[2000,4446,4448],{"className":2002,"code":4447,"language":2004,"meta":2005,"style":2005},"#!\u002Fusr\u002Fbin\u002Fenv python3\n\"\"\"\n演示如何使用带有 vLLM 后端的 VLLMKVCacheMemory 的示例。\n此示例展示了如何使用新的兼容 vLLM 的 KV cache 记忆。\n\"\"\"\n\nfrom memos.configs.memory import MemoryConfigFactory\nfrom memos.memories.factory import MemoryFactory\n\n\ndef main():\n    \"\"\"演示 VLLMKVCacheMemory 用法的主函数。\"\"\"\n\n    print(\"=== VLLM KV Cache Memory Example ===\\n\")\n\n    # 1. 创建 VLLMKVCacheMemory 配置（使用 vLLM 后端）\n    config = MemoryConfigFactory(\n        backend=\"vllm_kv_cache\",  # 使用新的 vLLM KV cache 后端\n        config={\n            \"extractor_llm\": {\n                \"backend\": \"vllm\",\n                \"config\": {\n                    \"model_name_or_path\": \"Qwen\u002FQwen3-0.6B\",\n                    \"api_base\": \"http:\u002F\u002Flocalhost:8088\u002Fv1\",\n                    \"temperature\": 0.7,\n                    \"max_tokens\": 1024,\n                    \"model_schema\": \"memos.configs.llm.VLLMLLMConfig\",\n                },\n            },\n        },\n    )\n\n    # 2. 使用工厂实例化 VLLMKVCacheMemory\n    print(\"Initializing VLLM KV Cache Memory...\")\n    vllm_kv_mem = MemoryFactory.from_config(config)\n    print(\"✓ VLLM KV Cache Memory initialized successfully.\\n\")\n\n    # 3. 从提示中提取 VLLMKVCacheItem\n    print(\"===== Extract VLLMKVCacheItem =====\")\n    system_prompt = [\n        {\"role\": \"system\", \"content\": \"You are a helpful AI assistant.\"},\n        {\"role\": \"user\", \"content\": \"What is MemOS?\"},\n        {\"role\": \"assistant\", \"content\": \"MemOS is a memory operating system for LLMs.\"},\n    ]\n\n    try:\n        cache_item = vllm_kv_mem.extract(system_prompt)\n        print(\"✓ KV cache item extracted successfully\")\n        print(f\"  ID: {cache_item.id}\")\n        print(f\"  Memory (prompt): {cache_item.memory[:100]}...\")\n        print(f\"  Metadata: {cache_item.metadata}\")\n        print()\n    except Exception as e:\n        print(f\"✗ Failed to extract KV cache item: {e}\")\n        return\n\n    # 4. 添加提取的 VLLMKVCacheItem\n    print(\"===== Add VLLMKVCacheItem =====\")\n    vllm_kv_mem.add([cache_item])\n    all_items = vllm_kv_mem.get_all()\n    print(f\"✓ Added cache item. Total items: {len(all_items)}\")\n    print()\n\n    # 5. 根据 ID 获取\n    print(\"===== Get VLLMKVCacheItem by id =====\")\n    retrieved = vllm_kv_mem.get(cache_item.id)\n    if retrieved:\n        print(f\"✓ Retrieved cache item: {retrieved.id}\")\n        print(f\"  Memory (prompt): {retrieved.memory[:100]}...\")\n    else:\n        print(\"✗ Failed to retrieve cache item\")\n    print()\n\n    # 6. 获取缓存（返回 vLLM 的提示字符串）\n    print(\"===== Get Cache (Prompt String) =====\")\n    prompt_string = vllm_kv_mem.get_cache([cache_item.id])\n    if prompt_string:\n        print(f\"✓ Retrieved prompt string: {prompt_string[:100]}...\")\n        print(\"  This prompt can be used for vLLM generation with preloaded KV cache\")\n    else:\n        print(\"✗ Failed to retrieve prompt string\")\n    print()\n\n    # 7. 提取另一个缓存项进行演示\n    print(\"===== Extract Another VLLMKVCacheItem =====\")\n    another_prompt = [\n        {\"role\": \"system\", \"content\": \"You are a coding assistant.\"},\n        {\"role\": \"user\", \"content\": \"Write a Python function to calculate fibonacci numbers.\"},\n    ]\n\n    try:\n        cache_item2 = vllm_kv_mem.extract(another_prompt)\n        vllm_kv_mem.add([cache_item2])\n        print(f\"✓ Added second cache item. Total items: {len(vllm_kv_mem.get_all())}\")\n        print()\n    except Exception as e:\n        print(f\"✗ Failed to extract second KV cache item: {e}\")\n        print()\n\n    # 8. 在 vLLM 服务器上预加载 KV cache\n    print(\"===== Preload KV Cache on vLLM Server =====\")\n    try:\n        vllm_kv_mem.preload_kv_cache([cache_item.id, cache_item2.id])\n        print(\"✓ KV cache preloaded on vLLM server successfully\")\n        print(\"  The server now has the KV cache ready for fast generation\")\n    except Exception as e:\n        print(f\"✗ Failed to preload KV cache: {e}\")\n    print()\n\n    # 9. 删除一个项目\n    print(\"===== Delete One VLLMKVCacheItem =====\")\n    vllm_kv_mem.delete([cache_item.id])\n    remaining_items = vllm_kv_mem.get_all()\n    print(f\"✓ Deleted cache item. Remaining items: {len(remaining_items)}\")\n    print()\n\n    # 10. 转储和加载\n    print(\"===== Dump and Load VLLMKVCacheMemory =====\")\n    try:\n        vllm_kv_mem.dump(\"tmp\u002Fvllm_kv_mem\")\n        print(\"✓ Memory dumped to 'tmp\u002Fvllm_kv_mem'\")\n\n        # 清除记忆并重新加载\n        vllm_kv_mem.delete_all()\n        vllm_kv_mem.load(\"tmp\u002Fvllm_kv_mem\")\n        reloaded_items = vllm_kv_mem.get_all()\n        print(f\"✓ Memory loaded from 'tmp\u002Fvllm_kv_mem': {len(reloaded_items)} items\")\n    except Exception as e:\n        print(f\"✗ Failed to dump\u002Fload memory: {e}\")\n    print()\n\n    print(\"=== Example completed successfully ===\")\n\n\nif __name__ == \"__main__\":\n    main()\n",[42,4449,4450,4455,4460,4465,4470,4474,4478,4496,4514,4518,4522,4532,4542,4546,4564,4568,4573,4583,4601,4607,4619,4638,4650,4668,4688,4704,4718,4738,4742,4746,4750,4754,4758,4763,4778,4797,4814,4818,4823,4838,4847,4885,4921,4957,4961,4965,4972,4993,5009,5035,5070,5095,5101,5117,5139,5144,5148,5153,5168,5183,5198,5227,5233,5237,5241,5256,5278,5287,5312,5342,5349,5364,5370,5374,5379,5394,5417,5426,5454,5469,5475,5490,5496,5500,5505,5520,5529,5566,5603,5607,5611,5617,5637,5653,5686,5692,5704,5725,5731,5735,5740,5755,5761,5789,5804,5819,5831,5852,5858,5862,5867,5882,5900,5915,5943,5949,5953,5958,5973,5979,5998,6013,6017,6022,6032,6050,6065,6094,6106,6127,6133,6137,6152,6157,6162,6179],{"__ignoreMap":2005},[2009,4451,4452],{"class":2011,"line":2012},[2009,4453,4454],{"class":3378},"#!\u002Fusr\u002Fbin\u002Fenv python3\n",[2009,4456,4457],{"class":2011,"line":2209},[2009,4458,4459],{"class":2201},"\"\"\"\n",[2009,4461,4462],{"class":2011,"line":2216},[2009,4463,4464],{"class":3378},"演示如何使用带有 vLLM 后端的 VLLMKVCacheMemory 的示例。\n",[2009,4466,4467],{"class":2011,"line":2230},[2009,4468,4469],{"class":3378},"此示例展示了如何使用新的兼容 vLLM 的 KV cache 记忆。\n",[2009,4471,4472],{"class":2011,"line":2235},[2009,4473,4459],{"class":2201},[2009,4475,4476],{"class":2011,"line":2259},[2009,4477,2213],{"emptyLinePlaceholder":2212},[2009,4479,4480,4482,4484,4486,4488,4490,4492,4494],{"class":2011,"line":2286},[2009,4481,2219],{"class":2201},[2009,4483,2240],{"class":2205},[2009,4485,2243],{"class":2018},[2009,4487,2246],{"class":2205},[2009,4489,2243],{"class":2018},[2009,4491,2251],{"class":2205},[2009,4493,2202],{"class":2201},[2009,4495,2256],{"class":2205},[2009,4497,4498,4500,4502,4504,4506,4508,4510,4512],{"class":2011,"line":2307},[2009,4499,2219],{"class":2201},[2009,4501,2240],{"class":2205},[2009,4503,2243],{"class":2018},[2009,4505,2268],{"class":2205},[2009,4507,2243],{"class":2018},[2009,4509,2299],{"class":2205},[2009,4511,2202],{"class":2201},[2009,4513,2304],{"class":2205},[2009,4515,4516],{"class":2011,"line":2312},[2009,4517,2213],{"emptyLinePlaceholder":2212},[2009,4519,4520],{"class":2011,"line":2317},[2009,4521,2213],{"emptyLinePlaceholder":2212},[2009,4523,4524,4526,4529],{"class":2011,"line":2336},[2009,4525,2321],{"class":2320},[2009,4527,4528],{"class":2015}," main",[2009,4530,4531],{"class":2018},"():\n",[2009,4533,4534,4537,4540],{"class":2011,"line":2351},[2009,4535,4536],{"class":2201},"    \"\"\"",[2009,4538,4539],{"class":3378},"演示 VLLMKVCacheMemory 用法的主函数。",[2009,4541,4459],{"class":2201},[2009,4543,4544],{"class":2011,"line":2360},[2009,4545,2213],{"emptyLinePlaceholder":2212},[2009,4547,4548,4550,4552,4554,4557,4560,4562],{"class":2011,"line":2365},[2009,4549,3722],{"class":2015},[2009,4551,2019],{"class":2018},[2009,4553,2415],{"class":2018},[2009,4555,4556],{"class":2411},"=== VLLM KV Cache Memory Example ===",[2009,4558,4559],{"class":2205},"\\n",[2009,4561,2415],{"class":2018},[2009,4563,2030],{"class":2018},[2009,4565,4566],{"class":2011,"line":2378},[2009,4567,2213],{"emptyLinePlaceholder":2212},[2009,4569,4570],{"class":2011,"line":2388},[2009,4571,4572],{"class":3378},"    # 1. 创建 VLLMKVCacheMemory 配置（使用 vLLM 后端）\n",[2009,4574,4575,4577,4579,4581],{"class":2011,"line":2393},[2009,4576,3396],{"class":2205},[2009,4578,2371],{"class":2018},[2009,4580,3401],{"class":2015},[2009,4582,3404],{"class":2018},[2009,4584,4585,4587,4589,4591,4594,4596,4598],{"class":2011,"line":2420},[2009,4586,3410],{"class":2329},[2009,4588,2371],{"class":2018},[2009,4590,2415],{"class":2018},[2009,4592,4593],{"class":2411},"vllm_kv_cache",[2009,4595,2415],{"class":2018},[2009,4597,2405],{"class":2018},[2009,4599,4600],{"class":3378},"  # 使用新的 vLLM KV cache 后端\n",[2009,4602,4603,4605],{"class":2011,"line":2442},[2009,4604,3426],{"class":2329},[2009,4606,3429],{"class":2018},[2009,4608,4609,4611,4613,4615,4617],{"class":2011,"line":2462},[2009,4610,3157],{"class":2018},[2009,4612,3437],{"class":2411},[2009,4614,2415],{"class":2018},[2009,4616,1926],{"class":2018},[2009,4618,2952],{"class":2018},[2009,4620,4621,4623,4625,4627,4629,4631,4634,4636],{"class":2011,"line":2504},[2009,4622,3449],{"class":2018},[2009,4624,3452],{"class":2411},[2009,4626,2415],{"class":2018},[2009,4628,1926],{"class":2018},[2009,4630,2408],{"class":2018},[2009,4632,4633],{"class":2411},"vllm",[2009,4635,2415],{"class":2018},[2009,4637,2971],{"class":2018},[2009,4639,4640,4642,4644,4646,4648],{"class":2011,"line":2544},[2009,4641,3449],{"class":2018},[2009,4643,2022],{"class":2411},[2009,4645,2415],{"class":2018},[2009,4647,1926],{"class":2018},[2009,4649,2952],{"class":2018},[2009,4651,4652,4654,4656,4658,4660,4662,4664,4666],{"class":2011,"line":2580},[2009,4653,3484],{"class":2018},[2009,4655,3487],{"class":2411},[2009,4657,2415],{"class":2018},[2009,4659,1926],{"class":2018},[2009,4661,2408],{"class":2018},[2009,4663,3496],{"class":2411},[2009,4665,2415],{"class":2018},[2009,4667,2971],{"class":2018},[2009,4669,4670,4672,4675,4677,4679,4681,4684,4686],{"class":2011,"line":2613},[2009,4671,3484],{"class":2018},[2009,4673,4674],{"class":2411},"api_base",[2009,4676,2415],{"class":2018},[2009,4678,1926],{"class":2018},[2009,4680,2408],{"class":2018},[2009,4682,4683],{"class":2411},"http:\u002F\u002Flocalhost:8088\u002Fv1",[2009,4685,2415],{"class":2018},[2009,4687,2971],{"class":2018},[2009,4689,4690,4692,4695,4697,4699,4702],{"class":2011,"line":2618},[2009,4691,3484],{"class":2018},[2009,4693,4694],{"class":2411},"temperature",[2009,4696,2415],{"class":2018},[2009,4698,1926],{"class":2018},[2009,4700,4701],{"class":2374}," 0.7",[2009,4703,2971],{"class":2018},[2009,4705,4706,4708,4710,4712,4714,4716],{"class":2011,"line":2654},[2009,4707,3484],{"class":2018},[2009,4709,3511],{"class":2411},[2009,4711,2415],{"class":2018},[2009,4713,1926],{"class":2018},[2009,4715,3025],{"class":2374},[2009,4717,2971],{"class":2018},[2009,4719,4720,4722,4725,4727,4729,4731,4734,4736],{"class":2011,"line":2687},[2009,4721,3484],{"class":2018},[2009,4723,4724],{"class":2411},"model_schema",[2009,4726,2415],{"class":2018},[2009,4728,1926],{"class":2018},[2009,4730,2408],{"class":2018},[2009,4732,4733],{"class":2411},"memos.configs.llm.VLLMLLMConfig",[2009,4735,2415],{"class":2018},[2009,4737,2971],{"class":2018},[2009,4739,4740],{"class":2011,"line":2723},[2009,4741,3555],{"class":2018},[2009,4743,4744],{"class":2011,"line":2756},[2009,4745,3561],{"class":2018},[2009,4747,4748],{"class":2011,"line":2761},[2009,4749,3567],{"class":2018},[2009,4751,4752],{"class":2011,"line":2801},[2009,4753,3573],{"class":2018},[2009,4755,4756],{"class":2011,"line":2820},[2009,4757,2213],{"emptyLinePlaceholder":2212},[2009,4759,4760],{"class":2011,"line":2862},[2009,4761,4762],{"class":3378},"    # 2. 使用工厂实例化 VLLMKVCacheMemory\n",[2009,4764,4765,4767,4769,4771,4774,4776],{"class":2011,"line":2877},[2009,4766,3722],{"class":2015},[2009,4768,2019],{"class":2018},[2009,4770,2415],{"class":2018},[2009,4772,4773],{"class":2411},"Initializing VLLM KV Cache Memory...",[2009,4775,2415],{"class":2018},[2009,4777,2030],{"class":2018},[2009,4779,4780,4783,4785,4787,4789,4791,4793,4795],{"class":2011,"line":2902},[2009,4781,4782],{"class":2205},"    vllm_kv_mem ",[2009,4784,2371],{"class":2018},[2009,4786,3595],{"class":2205},[2009,4788,2243],{"class":2018},[2009,4790,3600],{"class":2015},[2009,4792,2019],{"class":2018},[2009,4794,2022],{"class":2015},[2009,4796,2030],{"class":2018},[2009,4798,4799,4801,4803,4805,4808,4810,4812],{"class":2011,"line":2915},[2009,4800,3722],{"class":2015},[2009,4802,2019],{"class":2018},[2009,4804,2415],{"class":2018},[2009,4806,4807],{"class":2411},"✓ VLLM KV Cache Memory initialized successfully.",[2009,4809,4559],{"class":2205},[2009,4811,2415],{"class":2018},[2009,4813,2030],{"class":2018},[2009,4815,4816],{"class":2011,"line":2941},[2009,4817,2213],{"emptyLinePlaceholder":2212},[2009,4819,4820],{"class":2011,"line":2946},[2009,4821,4822],{"class":3378},"    # 3. 从提示中提取 VLLMKVCacheItem\n",[2009,4824,4825,4827,4829,4831,4834,4836],{"class":2011,"line":2955},[2009,4826,3722],{"class":2015},[2009,4828,2019],{"class":2018},[2009,4830,2415],{"class":2018},[2009,4832,4833],{"class":2411},"===== Extract VLLMKVCacheItem =====",[2009,4835,2415],{"class":2018},[2009,4837,2030],{"class":2018},[2009,4839,4840,4843,4845],{"class":2011,"line":2974},[2009,4841,4842],{"class":2205},"    system_prompt ",[2009,4844,2371],{"class":2018},[2009,4846,3628],{"class":2018},[2009,4848,4849,4851,4853,4855,4857,4859,4861,4864,4866,4868,4870,4872,4874,4876,4878,4881,4883],{"class":2011,"line":2991},[2009,4850,3634],{"class":2018},[2009,4852,2415],{"class":2018},[2009,4854,3639],{"class":2411},[2009,4856,2415],{"class":2018},[2009,4858,1926],{"class":2018},[2009,4860,2408],{"class":2018},[2009,4862,4863],{"class":2411},"system",[2009,4865,2415],{"class":2018},[2009,4867,2405],{"class":2018},[2009,4869,2408],{"class":2018},[2009,4871,3657],{"class":2411},[2009,4873,2415],{"class":2018},[2009,4875,1926],{"class":2018},[2009,4877,2408],{"class":2018},[2009,4879,4880],{"class":2411},"You are a helpful AI assistant.",[2009,4882,2415],{"class":2018},[2009,4884,3671],{"class":2018},[2009,4886,4887,4889,4891,4893,4895,4897,4899,4901,4903,4905,4907,4909,4911,4913,4915,4917,4919],{"class":2011,"line":3041},[2009,4888,3634],{"class":2018},[2009,4890,2415],{"class":2018},[2009,4892,3639],{"class":2411},[2009,4894,2415],{"class":2018},[2009,4896,1926],{"class":2018},[2009,4898,2408],{"class":2018},[2009,4900,3648],{"class":2411},[2009,4902,2415],{"class":2018},[2009,4904,2405],{"class":2018},[2009,4906,2408],{"class":2018},[2009,4908,3657],{"class":2411},[2009,4910,2415],{"class":2018},[2009,4912,1926],{"class":2018},[2009,4914,2408],{"class":2018},[2009,4916,3666],{"class":2411},[2009,4918,2415],{"class":2018},[2009,4920,3671],{"class":2018},[2009,4922,4923,4925,4927,4929,4931,4933,4935,4937,4939,4941,4943,4945,4947,4949,4951,4953,4955],{"class":2011,"line":3047},[2009,4924,3634],{"class":2018},[2009,4926,2415],{"class":2018},[2009,4928,3639],{"class":2411},[2009,4930,2415],{"class":2018},[2009,4932,1926],{"class":2018},[2009,4934,2408],{"class":2018},[2009,4936,3689],{"class":2411},[2009,4938,2415],{"class":2018},[2009,4940,2405],{"class":2018},[2009,4942,2408],{"class":2018},[2009,4944,3657],{"class":2411},[2009,4946,2415],{"class":2018},[2009,4948,1926],{"class":2018},[2009,4950,2408],{"class":2018},[2009,4952,3706],{"class":2411},[2009,4954,2415],{"class":2018},[2009,4956,3671],{"class":2018},[2009,4958,4959],{"class":2011,"line":3052},[2009,4960,3716],{"class":2018},[2009,4962,4963],{"class":2011,"line":3057},[2009,4964,2213],{"emptyLinePlaceholder":2212},[2009,4966,4967,4970],{"class":2011,"line":3072},[2009,4968,4969],{"class":2201},"    try",[2009,4971,2348],{"class":2018},[2009,4973,4974,4977,4979,4982,4984,4986,4988,4991],{"class":2011,"line":3092},[2009,4975,4976],{"class":2205},"        cache_item ",[2009,4978,2371],{"class":2018},[2009,4980,4981],{"class":2205}," vllm_kv_mem",[2009,4983,2243],{"class":2018},[2009,4985,3749],{"class":2015},[2009,4987,2019],{"class":2018},[2009,4989,4990],{"class":2015},"system_prompt",[2009,4992,2030],{"class":2018},[2009,4994,4995,4998,5000,5002,5005,5007],{"class":2011,"line":3124},[2009,4996,4997],{"class":2015},"        print",[2009,4999,2019],{"class":2018},[2009,5001,2415],{"class":2018},[2009,5003,5004],{"class":2411},"✓ KV cache item extracted successfully",[2009,5006,2415],{"class":2018},[2009,5008,2030],{"class":2018},[2009,5010,5011,5013,5015,5018,5021,5023,5025,5027,5029,5031,5033],{"class":2011,"line":3129},[2009,5012,4997],{"class":2015},[2009,5014,2019],{"class":2018},[2009,5016,5017],{"class":2320},"f",[2009,5019,5020],{"class":2411},"\"  ID: ",[2009,5022,3008],{"class":2374},[2009,5024,3780],{"class":2015},[2009,5026,2243],{"class":2018},[2009,5028,3160],{"class":2437},[2009,5030,3033],{"class":2374},[2009,5032,2415],{"class":2411},[2009,5034,2030],{"class":2018},[2009,5036,5037,5039,5041,5043,5046,5048,5050,5052,5054,5057,5060,5063,5065,5068],{"class":2011,"line":3147},[2009,5038,4997],{"class":2015},[2009,5040,2019],{"class":2018},[2009,5042,5017],{"class":2320},[2009,5044,5045],{"class":2411},"\"  Memory (prompt): ",[2009,5047,3008],{"class":2374},[2009,5049,3780],{"class":2015},[2009,5051,2243],{"class":2018},[2009,5053,3263],{"class":2437},[2009,5055,5056],{"class":2018},"[:",[2009,5058,5059],{"class":2374},"100",[2009,5061,5062],{"class":2018},"]",[2009,5064,3033],{"class":2374},[2009,5066,5067],{"class":2411},"...\"",[2009,5069,2030],{"class":2018},[2009,5071,5072,5074,5076,5078,5081,5083,5085,5087,5089,5091,5093],{"class":2011,"line":3154},[2009,5073,4997],{"class":2015},[2009,5075,2019],{"class":2018},[2009,5077,5017],{"class":2320},[2009,5079,5080],{"class":2411},"\"  Metadata: ",[2009,5082,3008],{"class":2374},[2009,5084,3780],{"class":2015},[2009,5086,2243],{"class":2018},[2009,5088,1980],{"class":2437},[2009,5090,3033],{"class":2374},[2009,5092,2415],{"class":2411},[2009,5094,2030],{"class":2018},[2009,5096,5097,5099],{"class":2011,"line":3175},[2009,5098,4997],{"class":2015},[2009,5100,2541],{"class":2018},[2009,5102,5103,5106,5109,5112,5115],{"class":2011,"line":3194},[2009,5104,5105],{"class":2201},"    except",[2009,5107,5108],{"class":3086}," Exception",[2009,5110,5111],{"class":2201}," as",[2009,5113,5114],{"class":2205}," e",[2009,5116,2348],{"class":2018},[2009,5118,5119,5121,5123,5125,5128,5130,5133,5135,5137],{"class":2011,"line":3219},[2009,5120,4997],{"class":2015},[2009,5122,2019],{"class":2018},[2009,5124,5017],{"class":2320},[2009,5126,5127],{"class":2411},"\"✗ Failed to extract KV cache item: ",[2009,5129,3008],{"class":2374},[2009,5131,5132],{"class":2015},"e",[2009,5134,3033],{"class":2374},[2009,5136,2415],{"class":2411},[2009,5138,2030],{"class":2018},[2009,5140,5141],{"class":2011,"line":3244},[2009,5142,5143],{"class":2201},"        return\n",[2009,5145,5146],{"class":2011,"line":3258},[2009,5147,2213],{"emptyLinePlaceholder":2212},[2009,5149,5150],{"class":2011,"line":3283},[2009,5151,5152],{"class":3378},"    # 4. 添加提取的 VLLMKVCacheItem\n",[2009,5154,5155,5157,5159,5161,5164,5166],{"class":2011,"line":3289},[2009,5156,3722],{"class":2015},[2009,5158,2019],{"class":2018},[2009,5160,2415],{"class":2018},[2009,5162,5163],{"class":2411},"===== Add VLLMKVCacheItem =====",[2009,5165,2415],{"class":2018},[2009,5167,2030],{"class":2018},[2009,5169,5170,5173,5175,5177,5179,5181],{"class":2011,"line":3294},[2009,5171,5172],{"class":2205},"    vllm_kv_mem",[2009,5174,2243],{"class":2018},[2009,5176,3848],{"class":2015},[2009,5178,3851],{"class":2018},[2009,5180,3780],{"class":2015},[2009,5182,3856],{"class":2018},[2009,5184,5185,5188,5190,5192,5194,5196],{"class":2011,"line":3312},[2009,5186,5187],{"class":2205},"    all_items ",[2009,5189,2371],{"class":2018},[2009,5191,4981],{"class":2205},[2009,5193,2243],{"class":2018},[2009,5195,3883],{"class":2015},[2009,5197,2541],{"class":2018},[2009,5199,5200,5202,5204,5206,5209,5211,5214,5216,5219,5221,5223,5225],{"class":2011,"line":3325},[2009,5201,3722],{"class":2015},[2009,5203,2019],{"class":2018},[2009,5205,5017],{"class":2320},[2009,5207,5208],{"class":2411},"\"✓ Added cache item. Total items: ",[2009,5210,3008],{"class":2374},[2009,5212,5213],{"class":2015},"len",[2009,5215,2019],{"class":2018},[2009,5217,5218],{"class":2015},"all_items",[2009,5220,1995],{"class":2018},[2009,5222,3033],{"class":2374},[2009,5224,2415],{"class":2411},[2009,5226,2030],{"class":2018},[2009,5228,5229,5231],{"class":2011,"line":3330},[2009,5230,3722],{"class":2015},[2009,5232,2541],{"class":2018},[2009,5234,5235],{"class":2011,"line":3344},[2009,5236,2213],{"emptyLinePlaceholder":2212},[2009,5238,5239],{"class":2011,"line":3349},[2009,5240,3920],{"class":3378},[2009,5242,5243,5245,5247,5249,5252,5254],{"class":2011,"line":3354},[2009,5244,3722],{"class":2015},[2009,5246,2019],{"class":2018},[2009,5248,2415],{"class":2018},[2009,5250,5251],{"class":2411},"===== Get VLLMKVCacheItem by id =====",[2009,5253,2415],{"class":2018},[2009,5255,2030],{"class":2018},[2009,5257,5258,5260,5262,5264,5266,5268,5270,5272,5274,5276],{"class":2011,"line":3375},[2009,5259,3942],{"class":2205},[2009,5261,2371],{"class":2018},[2009,5263,4981],{"class":2205},[2009,5265,2243],{"class":2018},[2009,5267,3951],{"class":2015},[2009,5269,2019],{"class":2018},[2009,5271,3780],{"class":2015},[2009,5273,2243],{"class":2018},[2009,5275,3160],{"class":2437},[2009,5277,2030],{"class":2018},[2009,5279,5280,5282,5285],{"class":2011,"line":3382},[2009,5281,2339],{"class":2201},[2009,5283,5284],{"class":2205}," retrieved",[2009,5286,2348],{"class":2018},[2009,5288,5289,5291,5293,5295,5298,5300,5302,5304,5306,5308,5310],{"class":2011,"line":3387},[2009,5290,4997],{"class":2015},[2009,5292,2019],{"class":2018},[2009,5294,5017],{"class":2320},[2009,5296,5297],{"class":2411},"\"✓ Retrieved cache item: ",[2009,5299,3008],{"class":2374},[2009,5301,3983],{"class":2015},[2009,5303,2243],{"class":2018},[2009,5305,3160],{"class":2437},[2009,5307,3033],{"class":2374},[2009,5309,2415],{"class":2411},[2009,5311,2030],{"class":2018},[2009,5313,5314,5316,5318,5320,5322,5324,5326,5328,5330,5332,5334,5336,5338,5340],{"class":2011,"line":3393},[2009,5315,4997],{"class":2015},[2009,5317,2019],{"class":2018},[2009,5319,5017],{"class":2320},[2009,5321,5045],{"class":2411},[2009,5323,3008],{"class":2374},[2009,5325,3983],{"class":2015},[2009,5327,2243],{"class":2018},[2009,5329,3263],{"class":2437},[2009,5331,5056],{"class":2018},[2009,5333,5059],{"class":2374},[2009,5335,5062],{"class":2018},[2009,5337,3033],{"class":2374},[2009,5339,5067],{"class":2411},[2009,5341,2030],{"class":2018},[2009,5343,5344,5347],{"class":2011,"line":3407},[2009,5345,5346],{"class":2201},"    else",[2009,5348,2348],{"class":2018},[2009,5350,5351,5353,5355,5357,5360,5362],{"class":2011,"line":3423},[2009,5352,4997],{"class":2015},[2009,5354,2019],{"class":2018},[2009,5356,2415],{"class":2018},[2009,5358,5359],{"class":2411},"✗ Failed to retrieve cache item",[2009,5361,2415],{"class":2018},[2009,5363,2030],{"class":2018},[2009,5365,5366,5368],{"class":2011,"line":3432},[2009,5367,3722],{"class":2015},[2009,5369,2541],{"class":2018},[2009,5371,5372],{"class":2011,"line":3446},[2009,5373,2213],{"emptyLinePlaceholder":2212},[2009,5375,5376],{"class":2011,"line":3468},[2009,5377,5378],{"class":3378},"    # 6. 获取缓存（返回 vLLM 的提示字符串）\n",[2009,5380,5381,5383,5385,5387,5390,5392],{"class":2011,"line":3481},[2009,5382,3722],{"class":2015},[2009,5384,2019],{"class":2018},[2009,5386,2415],{"class":2018},[2009,5388,5389],{"class":2411},"===== Get Cache (Prompt String) =====",[2009,5391,2415],{"class":2018},[2009,5393,2030],{"class":2018},[2009,5395,5396,5399,5401,5403,5405,5407,5409,5411,5413,5415],{"class":2011,"line":3506},[2009,5397,5398],{"class":2205},"    prompt_string ",[2009,5400,2371],{"class":2018},[2009,5402,4981],{"class":2205},[2009,5404,2243],{"class":2018},[2009,5406,4117],{"class":2015},[2009,5408,3851],{"class":2018},[2009,5410,3780],{"class":2015},[2009,5412,2243],{"class":2018},[2009,5414,3160],{"class":2437},[2009,5416,3856],{"class":2018},[2009,5418,5419,5421,5424],{"class":2011,"line":3523},[2009,5420,2339],{"class":2201},[2009,5422,5423],{"class":2205}," prompt_string",[2009,5425,2348],{"class":2018},[2009,5427,5428,5430,5432,5434,5437,5439,5442,5444,5446,5448,5450,5452],{"class":2011,"line":3538},[2009,5429,4997],{"class":2015},[2009,5431,2019],{"class":2018},[2009,5433,5017],{"class":2320},[2009,5435,5436],{"class":2411},"\"✓ Retrieved prompt string: ",[2009,5438,3008],{"class":2374},[2009,5440,5441],{"class":2015},"prompt_string",[2009,5443,5056],{"class":2018},[2009,5445,5059],{"class":2374},[2009,5447,5062],{"class":2018},[2009,5449,3033],{"class":2374},[2009,5451,5067],{"class":2411},[2009,5453,2030],{"class":2018},[2009,5455,5456,5458,5460,5462,5465,5467],{"class":2011,"line":3552},[2009,5457,4997],{"class":2015},[2009,5459,2019],{"class":2018},[2009,5461,2415],{"class":2018},[2009,5463,5464],{"class":2411},"  This prompt can be used for vLLM generation with preloaded KV cache",[2009,5466,2415],{"class":2018},[2009,5468,2030],{"class":2018},[2009,5470,5471,5473],{"class":2011,"line":3558},[2009,5472,5346],{"class":2201},[2009,5474,2348],{"class":2018},[2009,5476,5477,5479,5481,5483,5486,5488],{"class":2011,"line":3564},[2009,5478,4997],{"class":2015},[2009,5480,2019],{"class":2018},[2009,5482,2415],{"class":2018},[2009,5484,5485],{"class":2411},"✗ Failed to retrieve prompt string",[2009,5487,2415],{"class":2018},[2009,5489,2030],{"class":2018},[2009,5491,5492,5494],{"class":2011,"line":3570},[2009,5493,3722],{"class":2015},[2009,5495,2541],{"class":2018},[2009,5497,5498],{"class":2011,"line":3576},[2009,5499,2213],{"emptyLinePlaceholder":2212},[2009,5501,5502],{"class":2011,"line":3581},[2009,5503,5504],{"class":3378},"    # 7. 提取另一个缓存项进行演示\n",[2009,5506,5507,5509,5511,5513,5516,5518],{"class":2011,"line":3587},[2009,5508,3722],{"class":2015},[2009,5510,2019],{"class":2018},[2009,5512,2415],{"class":2018},[2009,5514,5515],{"class":2411},"===== Extract Another VLLMKVCacheItem =====",[2009,5517,2415],{"class":2018},[2009,5519,2030],{"class":2018},[2009,5521,5522,5525,5527],{"class":2011,"line":3609},[2009,5523,5524],{"class":2205},"    another_prompt ",[2009,5526,2371],{"class":2018},[2009,5528,3628],{"class":2018},[2009,5530,5531,5533,5535,5537,5539,5541,5543,5545,5547,5549,5551,5553,5555,5557,5559,5562,5564],{"class":2011,"line":3614},[2009,5532,3634],{"class":2018},[2009,5534,2415],{"class":2018},[2009,5536,3639],{"class":2411},[2009,5538,2415],{"class":2018},[2009,5540,1926],{"class":2018},[2009,5542,2408],{"class":2018},[2009,5544,4863],{"class":2411},[2009,5546,2415],{"class":2018},[2009,5548,2405],{"class":2018},[2009,5550,2408],{"class":2018},[2009,5552,3657],{"class":2411},[2009,5554,2415],{"class":2018},[2009,5556,1926],{"class":2018},[2009,5558,2408],{"class":2018},[2009,5560,5561],{"class":2411},"You are a coding assistant.",[2009,5563,2415],{"class":2018},[2009,5565,3671],{"class":2018},[2009,5567,5568,5570,5572,5574,5576,5578,5580,5582,5584,5586,5588,5590,5592,5594,5596,5599,5601],{"class":2011,"line":3620},[2009,5569,3634],{"class":2018},[2009,5571,2415],{"class":2018},[2009,5573,3639],{"class":2411},[2009,5575,2415],{"class":2018},[2009,5577,1926],{"class":2018},[2009,5579,2408],{"class":2018},[2009,5581,3648],{"class":2411},[2009,5583,2415],{"class":2018},[2009,5585,2405],{"class":2018},[2009,5587,2408],{"class":2018},[2009,5589,3657],{"class":2411},[2009,5591,2415],{"class":2018},[2009,5593,1926],{"class":2018},[2009,5595,2408],{"class":2018},[2009,5597,5598],{"class":2411},"Write a Python function to calculate fibonacci numbers.",[2009,5600,2415],{"class":2018},[2009,5602,3671],{"class":2018},[2009,5604,5605],{"class":2011,"line":3631},[2009,5606,3716],{"class":2018},[2009,5608,5609],{"class":2011,"line":3674},[2009,5610,2213],{"emptyLinePlaceholder":2212},[2009,5612,5613,5615],{"class":2011,"line":3713},[2009,5614,4969],{"class":2201},[2009,5616,2348],{"class":2018},[2009,5618,5619,5622,5624,5626,5628,5630,5632,5635],{"class":2011,"line":3719},[2009,5620,5621],{"class":2205},"        cache_item2 ",[2009,5623,2371],{"class":2018},[2009,5625,4981],{"class":2205},[2009,5627,2243],{"class":2018},[2009,5629,3749],{"class":2015},[2009,5631,2019],{"class":2018},[2009,5633,5634],{"class":2015},"another_prompt",[2009,5636,2030],{"class":2018},[2009,5638,5639,5642,5644,5646,5648,5651],{"class":2011,"line":3736},[2009,5640,5641],{"class":2205},"        vllm_kv_mem",[2009,5643,2243],{"class":2018},[2009,5645,3848],{"class":2015},[2009,5647,3851],{"class":2018},[2009,5649,5650],{"class":2015},"cache_item2",[2009,5652,3856],{"class":2018},[2009,5654,5655,5657,5659,5661,5664,5666,5668,5670,5673,5675,5677,5680,5682,5684],{"class":2011,"line":3759},[2009,5656,4997],{"class":2015},[2009,5658,2019],{"class":2018},[2009,5660,5017],{"class":2320},[2009,5662,5663],{"class":2411},"\"✓ Added second cache item. Total items: ",[2009,5665,3008],{"class":2374},[2009,5667,5213],{"class":2015},[2009,5669,2019],{"class":2018},[2009,5671,5672],{"class":2015},"vllm_kv_mem",[2009,5674,2243],{"class":2018},[2009,5676,3883],{"class":2015},[2009,5678,5679],{"class":2018},"())",[2009,5681,3033],{"class":2374},[2009,5683,2415],{"class":2411},[2009,5685,2030],{"class":2018},[2009,5687,5688,5690],{"class":2011,"line":3806},[2009,5689,4997],{"class":2015},[2009,5691,2541],{"class":2018},[2009,5693,5694,5696,5698,5700,5702],{"class":2011,"line":3813},[2009,5695,5105],{"class":2201},[2009,5697,5108],{"class":3086},[2009,5699,5111],{"class":2201},[2009,5701,5114],{"class":2205},[2009,5703,2348],{"class":2018},[2009,5705,5706,5708,5710,5712,5715,5717,5719,5721,5723],{"class":2011,"line":3818},[2009,5707,4997],{"class":2015},[2009,5709,2019],{"class":2018},[2009,5711,5017],{"class":2320},[2009,5713,5714],{"class":2411},"\"✗ Failed to extract second KV cache item: ",[2009,5716,3008],{"class":2374},[2009,5718,5132],{"class":2015},[2009,5720,3033],{"class":2374},[2009,5722,2415],{"class":2411},[2009,5724,2030],{"class":2018},[2009,5726,5727,5729],{"class":2011,"line":3824},[2009,5728,4997],{"class":2015},[2009,5730,2541],{"class":2018},[2009,5732,5733],{"class":2011,"line":3840},[2009,5734,2213],{"emptyLinePlaceholder":2212},[2009,5736,5737],{"class":2011,"line":3859},[2009,5738,5739],{"class":3378},"    # 8. 在 vLLM 服务器上预加载 KV cache\n",[2009,5741,5742,5744,5746,5748,5751,5753],{"class":2011,"line":3905},[2009,5743,3722],{"class":2015},[2009,5745,2019],{"class":2018},[2009,5747,2415],{"class":2018},[2009,5749,5750],{"class":2411},"===== Preload KV Cache on vLLM Server =====",[2009,5752,2415],{"class":2018},[2009,5754,2030],{"class":2018},[2009,5756,5757,5759],{"class":2011,"line":3912},[2009,5758,4969],{"class":2201},[2009,5760,2348],{"class":2018},[2009,5762,5763,5765,5767,5770,5772,5774,5776,5778,5780,5783,5785,5787],{"class":2011,"line":3917},[2009,5764,5641],{"class":2205},[2009,5766,2243],{"class":2018},[2009,5768,5769],{"class":2015},"preload_kv_cache",[2009,5771,3851],{"class":2018},[2009,5773,3780],{"class":2015},[2009,5775,2243],{"class":2018},[2009,5777,3160],{"class":2437},[2009,5779,2405],{"class":2018},[2009,5781,5782],{"class":2015}," cache_item2",[2009,5784,2243],{"class":2018},[2009,5786,3160],{"class":2437},[2009,5788,3856],{"class":2018},[2009,5790,5791,5793,5795,5797,5800,5802],{"class":2011,"line":3923},[2009,5792,4997],{"class":2015},[2009,5794,2019],{"class":2018},[2009,5796,2415],{"class":2018},[2009,5798,5799],{"class":2411},"✓ KV cache preloaded on vLLM server successfully",[2009,5801,2415],{"class":2018},[2009,5803,2030],{"class":2018},[2009,5805,5806,5808,5810,5812,5815,5817],{"class":2011,"line":3939},[2009,5807,4997],{"class":2015},[2009,5809,2019],{"class":2018},[2009,5811,2415],{"class":2018},[2009,5813,5814],{"class":2411},"  The server now has the KV cache ready for fast generation",[2009,5816,2415],{"class":2018},[2009,5818,2030],{"class":2018},[2009,5820,5821,5823,5825,5827,5829],{"class":2011,"line":3964},[2009,5822,5105],{"class":2201},[2009,5824,5108],{"class":3086},[2009,5826,5111],{"class":2201},[2009,5828,5114],{"class":2205},[2009,5830,2348],{"class":2018},[2009,5832,5833,5835,5837,5839,5842,5844,5846,5848,5850],{"class":2011,"line":4004},[2009,5834,4997],{"class":2015},[2009,5836,2019],{"class":2018},[2009,5838,5017],{"class":2320},[2009,5840,5841],{"class":2411},"\"✗ Failed to preload KV cache: ",[2009,5843,3008],{"class":2374},[2009,5845,5132],{"class":2015},[2009,5847,3033],{"class":2374},[2009,5849,2415],{"class":2411},[2009,5851,2030],{"class":2018},[2009,5853,5854,5856],{"class":2011,"line":4011},[2009,5855,3722],{"class":2015},[2009,5857,2541],{"class":2018},[2009,5859,5860],{"class":2011,"line":4016},[2009,5861,2213],{"emptyLinePlaceholder":2212},[2009,5863,5864],{"class":2011,"line":4022},[2009,5865,5866],{"class":3378},"    # 9. 删除一个项目\n",[2009,5868,5869,5871,5873,5875,5878,5880],{"class":2011,"line":4038},[2009,5870,3722],{"class":2015},[2009,5872,2019],{"class":2018},[2009,5874,2415],{"class":2018},[2009,5876,5877],{"class":2411},"===== Delete One VLLMKVCacheItem =====",[2009,5879,2415],{"class":2018},[2009,5881,2030],{"class":2018},[2009,5883,5884,5886,5888,5890,5892,5894,5896,5898],{"class":2011,"line":4089},[2009,5885,5172],{"class":2205},[2009,5887,2243],{"class":2018},[2009,5889,4220],{"class":2015},[2009,5891,3851],{"class":2018},[2009,5893,3780],{"class":2015},[2009,5895,2243],{"class":2018},[2009,5897,3160],{"class":2437},[2009,5899,3856],{"class":2018},[2009,5901,5902,5905,5907,5909,5911,5913],{"class":2011,"line":4105},[2009,5903,5904],{"class":2205},"    remaining_items ",[2009,5906,2371],{"class":2018},[2009,5908,4981],{"class":2205},[2009,5910,2243],{"class":2018},[2009,5912,3883],{"class":2015},[2009,5914,2541],{"class":2018},[2009,5916,5917,5919,5921,5923,5926,5928,5930,5932,5935,5937,5939,5941],{"class":2011,"line":4139},[2009,5918,3722],{"class":2015},[2009,5920,2019],{"class":2018},[2009,5922,5017],{"class":2320},[2009,5924,5925],{"class":2411},"\"✓ Deleted cache item. Remaining items: ",[2009,5927,3008],{"class":2374},[2009,5929,5213],{"class":2015},[2009,5931,2019],{"class":2018},[2009,5933,5934],{"class":2015},"remaining_items",[2009,5936,1995],{"class":2018},[2009,5938,3033],{"class":2374},[2009,5940,2415],{"class":2411},[2009,5942,2030],{"class":2018},[2009,5944,5945,5947],{"class":2011,"line":4179},[2009,5946,3722],{"class":2015},[2009,5948,2541],{"class":2018},[2009,5950,5951],{"class":2011,"line":4186},[2009,5952,2213],{"emptyLinePlaceholder":2212},[2009,5954,5955],{"class":2011,"line":4191},[2009,5956,5957],{"class":3378},"    # 10. 转储和加载\n",[2009,5959,5960,5962,5964,5966,5969,5971],{"class":2011,"line":4197},[2009,5961,3722],{"class":2015},[2009,5963,2019],{"class":2018},[2009,5965,2415],{"class":2018},[2009,5967,5968],{"class":2411},"===== Dump and Load VLLMKVCacheMemory =====",[2009,5970,2415],{"class":2018},[2009,5972,2030],{"class":2018},[2009,5974,5975,5977],{"class":2011,"line":4213},[2009,5976,4969],{"class":2201},[2009,5978,2348],{"class":2018},[2009,5980,5981,5983,5985,5987,5989,5991,5994,5996],{"class":2011,"line":4233},[2009,5982,5641],{"class":2205},[2009,5984,2243],{"class":2018},[2009,5986,4317],{"class":2015},[2009,5988,2019],{"class":2018},[2009,5990,2415],{"class":2018},[2009,5992,5993],{"class":2411},"tmp\u002Fvllm_kv_mem",[2009,5995,2415],{"class":2018},[2009,5997,2030],{"class":2018},[2009,5999,6000,6002,6004,6006,6009,6011],{"class":2011,"line":4276},[2009,6001,4997],{"class":2015},[2009,6003,2019],{"class":2018},[2009,6005,2415],{"class":2018},[2009,6007,6008],{"class":2411},"✓ Memory dumped to 'tmp\u002Fvllm_kv_mem'",[2009,6010,2415],{"class":2018},[2009,6012,2030],{"class":2018},[2009,6014,6015],{"class":2011,"line":4283},[2009,6016,2213],{"emptyLinePlaceholder":2212},[2009,6018,6019],{"class":2011,"line":4288},[2009,6020,6021],{"class":3378},"        # 清除记忆并重新加载\n",[2009,6023,6024,6026,6028,6030],{"class":2011,"line":4294},[2009,6025,5641],{"class":2205},[2009,6027,2243],{"class":2018},[2009,6029,4354],{"class":2015},[2009,6031,2541],{"class":2018},[2009,6033,6034,6036,6038,6040,6042,6044,6046,6048],{"class":2011,"line":4310},[2009,6035,5641],{"class":2205},[2009,6037,2243],{"class":2018},[2009,6039,4366],{"class":2015},[2009,6041,2019],{"class":2018},[2009,6043,2415],{"class":2018},[2009,6045,5993],{"class":2411},[2009,6047,2415],{"class":2018},[2009,6049,2030],{"class":2018},[2009,6051,6052,6055,6057,6059,6061,6063],{"class":2011,"line":4331},[2009,6053,6054],{"class":2205},"        reloaded_items ",[2009,6056,2371],{"class":2018},[2009,6058,4981],{"class":2205},[2009,6060,2243],{"class":2018},[2009,6062,3883],{"class":2015},[2009,6064,2541],{"class":2018},[2009,6066,6067,6069,6071,6073,6076,6078,6080,6082,6085,6087,6089,6092],{"class":2011,"line":4347},[2009,6068,4997],{"class":2015},[2009,6070,2019],{"class":2018},[2009,6072,5017],{"class":2320},[2009,6074,6075],{"class":2411},"\"✓ Memory loaded from 'tmp\u002Fvllm_kv_mem': ",[2009,6077,3008],{"class":2374},[2009,6079,5213],{"class":2015},[2009,6081,2019],{"class":2018},[2009,6083,6084],{"class":2015},"reloaded_items",[2009,6086,1995],{"class":2018},[2009,6088,3033],{"class":2374},[2009,6090,6091],{"class":2411}," items\"",[2009,6093,2030],{"class":2018},[2009,6095,6096,6098,6100,6102,6104],{"class":2011,"line":4359},[2009,6097,5105],{"class":2201},[2009,6099,5108],{"class":3086},[2009,6101,5111],{"class":2201},[2009,6103,5114],{"class":2205},[2009,6105,2348],{"class":2018},[2009,6107,6108,6110,6112,6114,6117,6119,6121,6123,6125],{"class":2011,"line":4379},[2009,6109,4997],{"class":2015},[2009,6111,2019],{"class":2018},[2009,6113,5017],{"class":2320},[2009,6115,6116],{"class":2411},"\"✗ Failed to dump\u002Fload memory: ",[2009,6118,3008],{"class":2374},[2009,6120,5132],{"class":2015},[2009,6122,3033],{"class":2374},[2009,6124,2415],{"class":2411},[2009,6126,2030],{"class":2018},[2009,6128,6129,6131],{"class":2011,"line":4386},[2009,6130,3722],{"class":2015},[2009,6132,2541],{"class":2018},[2009,6134,6135],{"class":2011,"line":4398},[2009,6136,2213],{"emptyLinePlaceholder":2212},[2009,6138,6139,6141,6143,6145,6148,6150],{"class":2011,"line":4438},[2009,6140,3722],{"class":2015},[2009,6142,2019],{"class":2018},[2009,6144,2415],{"class":2018},[2009,6146,6147],{"class":2411},"=== Example completed successfully ===",[2009,6149,2415],{"class":2018},[2009,6151,2030],{"class":2018},[2009,6153,6155],{"class":2011,"line":6154},133,[2009,6156,2213],{"emptyLinePlaceholder":2212},[2009,6158,6160],{"class":2011,"line":6159},134,[2009,6161,2213],{"emptyLinePlaceholder":2212},[2009,6163,6165,6167,6169,6171,6173,6175,6177],{"class":2011,"line":6164},135,[2009,6166,3357],{"class":2201},[2009,6168,3360],{"class":2205},[2009,6170,3363],{"class":2018},[2009,6172,2408],{"class":2018},[2009,6174,3368],{"class":2411},[2009,6176,2415],{"class":2018},[2009,6178,2348],{"class":2018},[2009,6180,6182,6185],{"class":2011,"line":6181},136,[2009,6183,6184],{"class":2015},"    main",[2009,6186,2541],{"class":2018},[11,6188,6189],{"id":6189},"开发者注意事项",[25,6191,6192,6198,6201],{},[28,6193,6194,6195,6197],{},"使用HuggingFace ",[42,6196,1970],{}," 高效的键值存储",[28,6199,6200],{},"基于pickle的序列化，用于快速加载\u002F保存",[28,6202,6203,6206],{},[42,6204,6205],{},"\u002Ftests","中的集成测试涵盖了所有方法。",[6208,6209,6210],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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":2005,"searchDepth":2209,"depth":2209,"links":6212},[6213,6214,6220,6221,6226,6230],{"id":13,"depth":2209,"text":14},{"id":67,"depth":2209,"text":68,"children":6215},[6216,6217,6218,6219],{"id":82,"depth":2216,"text":83},{"id":98,"depth":2216,"text":99},{"id":116,"depth":2216,"text":116},{"id":150,"depth":2216,"text":151},{"id":1912,"depth":2209,"text":1913},{"id":1991,"depth":2209,"text":6222,"children":6223},"API总结 (KVCacheMemory)",[6224,6225],{"id":1998,"depth":2216,"text":1998},{"id":2033,"depth":2216,"text":2033},{"id":2187,"depth":2209,"text":2187,"children":6227},[6228,6229],{"id":2190,"depth":2216,"text":2191},{"id":4443,"depth":2216,"text":4444},{"id":6189,"depth":2209,"text":6189},"`KVCacheMemory` 是MemOS中用于存储和管理KV cache的专用记忆模块，主要用于加速大语言模型（LLMs）推理并支持有效的上下文复用。作为激活记忆，它有助于提升会话式和生成式人工智能系统的性能。","md",{},"\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fkv_cache_memory",{"title":5,"description":2005},"cn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fkv_cache_memory","QP-HrB5UBCnaBtxqPmTOF0ZwadyCId_YumVir8wR5eE",[6239,6247],{"title":6240,"path":6241,"stem":6242,"icon":6243,"framework":6,"module":6,"class":6244,"target":-1,"active":6245,"defaultOpen":6245,"children":-1,"description":6246},"PolarDB 图数据库","\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fpolardb_graph_db","open_source\u002Fmodules\u002Fmemories\u002Fpolardb_graph_db","i-ri-database-line",[],false,"MemOS 支持使用 PolarDB（基于 Apache AGE 扩展）作为图数据库后端，用于存储和检索知识图谱式的记忆数据。PolarDB 结合了 PostgreSQL 的强大功能和图数据库的灵活性，特别适合需要同时进行关系型和图数据查询的场景。",{"title":6248,"path":6249,"stem":6250,"icon":6251,"framework":6,"module":6,"class":6252,"target":-1,"active":6245,"defaultOpen":6245,"children":-1,"description":-1},"参数记忆 (正在开发中)","\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fparametric_memory","open_source\u002Fmodules\u002Fmemories\u002Fparametric_memory","i-ri-cpu-line",[],1774339752378]