[{"data":1,"prerenderedAt":1262},["ShallowReactive",2],{"\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fneo4j_graph_db":3,"surround-\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fneo4j_graph_db":1246},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":1239,"description":106,"extension":1240,"links":6,"meta":1241,"navigation":6,"path":1242,"seo":1243,"stem":1244,"__hash__":1245},"docs\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fneo4j_graph_db.md","Neo4j 图数据库",null,{"type":8,"value":9,"toc":1225},"minimark",[10,15,19,49,52,55,94,97,107,110,546,549,557,563,567,602,606,613,780,786,801,805,811,814,831,834,1157,1168,1171,1185,1214,1221],[11,12,14],"h2",{"id":13},"为什么记忆需要图存储","为什么记忆需要图存储?",[16,17,18],"p",{},"与向量存储不同，一个图数据库允许:",[20,21,22,30,40,46],"ul",{},[23,24,25,26],"li",{},"将记忆组织成",[27,28,29],"strong",{},"链、层次和因果关系",[23,31,32,33,36,37],{},"执行",[27,34,35],{},"多跳推理","和",[27,38,39],{},"子图遍历",[23,41,42,43],{},"支持记忆",[27,44,45],{},"重复数据删除、冲突检测和调度",[23,47,48],{},"随时间动态地演化图记忆",[16,50,51],{},"这构成了长期的、可解释的和组成性记忆推理的主干。",[11,53,54],{"id":54},"特色",[20,56,57,60,63,71,74,85],{},[23,58,59],{},"跨不同图数据库的统一接口",[23,61,62],{},"内置对Neo4j的支持",[23,64,65,66,70],{},"支持向量增强检索(",[67,68,69],"code",{},"search_by_embedding",")",[23,72,73],{},"模块化、可插拔和可测试",[23,75,76,80,81,84],{},[77,78,79],"span",{},"v0.2.1 新特性"," 支持",[27,82,83],{},"多租户图存储架构","（单库多用户）",[23,86,87,89,90,93],{},[77,88,79],{}," 兼容",[27,91,92],{},"Neo4j"," 社区版（Community Edition）",[11,95,96],{"id":96},"目录结构",[98,99,104],"pre",{"className":100,"code":102,"language":103},[101],"language-text","\nsrc\u002Fmemos\u002Fgraph_dbs\u002F\n├── base.py            # BaseGraphDB的抽象接口\n├── factory.py         # 工厂从配置中实例化GraphDB\n├── neo4j.py           # Neo4jGraphDB的产品实现\n\n","text",[67,105,102],{"__ignoreMap":106},"",[11,108,109],{"id":109},"如何使用",[98,111,115],{"className":112,"code":113,"language":114,"meta":106,"style":106},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from memos.graph_dbs.factory import GraphStoreFactory\nfrom memos.configs.graph_db import GraphDBConfigFactory\n\n# 步骤1：构建工厂配置\nconfig = GraphDBConfigFactory(\n    backend=\"neo4j\",\n    config={\n        \"uri\": \"bolt:\u002F\u002Flocalhost:7687\",\n        \"user\": \"your_neo4j_user_name\",\n        \"password\": \"your_password\",\n        \"db_name\": \"memory_user1\",\n        \"auto_create\": True,\n        \"embedding_dimension\": 768\n    }\n)\n\n# 步骤2：实例化图存储\ngraph = GraphStoreFactory.from_config(config)\n\n# 步骤3：增加记忆\ngraph.add_node(\n    id=\"node-001\",\n    memory=\"Today I learned about retrieval-augmented generation.\",\n    metadata={\"type\": \"WorkingMemory\", \"tags\": [\"RAG\", \"AI\"], \"timestamp\": \"2025-06-05\", \"sources\": []}\n)\n\n","python",[67,116,117,147,169,176,183,199,220,229,253,274,295,316,331,347,353,359,364,370,394,399,405,418,435,452,541],{"__ignoreMap":106},[77,118,121,125,129,133,136,138,141,144],{"class":119,"line":120},"line",1,[77,122,124],{"class":123},"s7zQu","from",[77,126,128],{"class":127},"sTEyZ"," memos",[77,130,132],{"class":131},"sMK4o",".",[77,134,135],{"class":127},"graph_dbs",[77,137,132],{"class":131},[77,139,140],{"class":127},"factory ",[77,142,143],{"class":123},"import",[77,145,146],{"class":127}," GraphStoreFactory\n",[77,148,150,152,154,156,159,161,164,166],{"class":119,"line":149},2,[77,151,124],{"class":123},[77,153,128],{"class":127},[77,155,132],{"class":131},[77,157,158],{"class":127},"configs",[77,160,132],{"class":131},[77,162,163],{"class":127},"graph_db ",[77,165,143],{"class":123},[77,167,168],{"class":127}," GraphDBConfigFactory\n",[77,170,172],{"class":119,"line":171},3,[77,173,175],{"emptyLinePlaceholder":174},true,"\n",[77,177,179],{"class":119,"line":178},4,[77,180,182],{"class":181},"sHwdD","# 步骤1：构建工厂配置\n",[77,184,186,189,192,196],{"class":119,"line":185},5,[77,187,188],{"class":127},"config ",[77,190,191],{"class":131},"=",[77,193,195],{"class":194},"s2Zo4"," GraphDBConfigFactory",[77,197,198],{"class":131},"(\n",[77,200,202,206,208,211,215,217],{"class":119,"line":201},6,[77,203,205],{"class":204},"sHdIc","    backend",[77,207,191],{"class":131},[77,209,210],{"class":131},"\"",[77,212,214],{"class":213},"sfazB","neo4j",[77,216,210],{"class":131},[77,218,219],{"class":131},",\n",[77,221,223,226],{"class":119,"line":222},7,[77,224,225],{"class":204},"    config",[77,227,228],{"class":131},"={\n",[77,230,232,235,238,240,243,246,249,251],{"class":119,"line":231},8,[77,233,234],{"class":131},"        \"",[77,236,237],{"class":213},"uri",[77,239,210],{"class":131},[77,241,242],{"class":131},":",[77,244,245],{"class":131}," \"",[77,247,248],{"class":213},"bolt:\u002F\u002Flocalhost:7687",[77,250,210],{"class":131},[77,252,219],{"class":131},[77,254,256,258,261,263,265,267,270,272],{"class":119,"line":255},9,[77,257,234],{"class":131},[77,259,260],{"class":213},"user",[77,262,210],{"class":131},[77,264,242],{"class":131},[77,266,245],{"class":131},[77,268,269],{"class":213},"your_neo4j_user_name",[77,271,210],{"class":131},[77,273,219],{"class":131},[77,275,277,279,282,284,286,288,291,293],{"class":119,"line":276},10,[77,278,234],{"class":131},[77,280,281],{"class":213},"password",[77,283,210],{"class":131},[77,285,242],{"class":131},[77,287,245],{"class":131},[77,289,290],{"class":213},"your_password",[77,292,210],{"class":131},[77,294,219],{"class":131},[77,296,298,300,303,305,307,309,312,314],{"class":119,"line":297},11,[77,299,234],{"class":131},[77,301,302],{"class":213},"db_name",[77,304,210],{"class":131},[77,306,242],{"class":131},[77,308,245],{"class":131},[77,310,311],{"class":213},"memory_user1",[77,313,210],{"class":131},[77,315,219],{"class":131},[77,317,319,321,324,326,328],{"class":119,"line":318},12,[77,320,234],{"class":131},[77,322,323],{"class":213},"auto_create",[77,325,210],{"class":131},[77,327,242],{"class":131},[77,329,330],{"class":131}," True,\n",[77,332,334,336,339,341,343],{"class":119,"line":333},13,[77,335,234],{"class":131},[77,337,338],{"class":213},"embedding_dimension",[77,340,210],{"class":131},[77,342,242],{"class":131},[77,344,346],{"class":345},"sbssI"," 768\n",[77,348,350],{"class":119,"line":349},14,[77,351,352],{"class":131},"    }\n",[77,354,356],{"class":119,"line":355},15,[77,357,358],{"class":131},")\n",[77,360,362],{"class":119,"line":361},16,[77,363,175],{"emptyLinePlaceholder":174},[77,365,367],{"class":119,"line":366},17,[77,368,369],{"class":181},"# 步骤2：实例化图存储\n",[77,371,373,376,378,381,383,386,389,392],{"class":119,"line":372},18,[77,374,375],{"class":127},"graph ",[77,377,191],{"class":131},[77,379,380],{"class":127}," GraphStoreFactory",[77,382,132],{"class":131},[77,384,385],{"class":194},"from_config",[77,387,388],{"class":131},"(",[77,390,391],{"class":194},"config",[77,393,358],{"class":131},[77,395,397],{"class":119,"line":396},19,[77,398,175],{"emptyLinePlaceholder":174},[77,400,402],{"class":119,"line":401},20,[77,403,404],{"class":181},"# 步骤3：增加记忆\n",[77,406,408,411,413,416],{"class":119,"line":407},21,[77,409,410],{"class":127},"graph",[77,412,132],{"class":131},[77,414,415],{"class":194},"add_node",[77,417,198],{"class":131},[77,419,421,424,426,428,431,433],{"class":119,"line":420},22,[77,422,423],{"class":204},"    id",[77,425,191],{"class":131},[77,427,210],{"class":131},[77,429,430],{"class":213},"node-001",[77,432,210],{"class":131},[77,434,219],{"class":131},[77,436,438,441,443,445,448,450],{"class":119,"line":437},23,[77,439,440],{"class":204},"    memory",[77,442,191],{"class":131},[77,444,210],{"class":131},[77,446,447],{"class":213},"Today I learned about retrieval-augmented generation.",[77,449,210],{"class":131},[77,451,219],{"class":131},[77,453,455,458,461,463,466,468,470,472,475,477,480,482,485,487,489,492,494,497,499,501,503,506,508,511,513,516,518,520,522,525,527,529,531,534,536,538],{"class":119,"line":454},24,[77,456,457],{"class":204},"    metadata",[77,459,460],{"class":131},"={",[77,462,210],{"class":131},[77,464,465],{"class":213},"type",[77,467,210],{"class":131},[77,469,242],{"class":131},[77,471,245],{"class":131},[77,473,474],{"class":213},"WorkingMemory",[77,476,210],{"class":131},[77,478,479],{"class":131},",",[77,481,245],{"class":131},[77,483,484],{"class":213},"tags",[77,486,210],{"class":131},[77,488,242],{"class":131},[77,490,491],{"class":131}," [",[77,493,210],{"class":131},[77,495,496],{"class":213},"RAG",[77,498,210],{"class":131},[77,500,479],{"class":131},[77,502,245],{"class":131},[77,504,505],{"class":213},"AI",[77,507,210],{"class":131},[77,509,510],{"class":131},"],",[77,512,245],{"class":131},[77,514,515],{"class":213},"timestamp",[77,517,210],{"class":131},[77,519,242],{"class":131},[77,521,245],{"class":131},[77,523,524],{"class":213},"2025-06-05",[77,526,210],{"class":131},[77,528,479],{"class":131},[77,530,245],{"class":131},[77,532,533],{"class":213},"sources",[77,535,210],{"class":131},[77,537,242],{"class":131},[77,539,540],{"class":131}," []}\n",[77,542,544],{"class":119,"line":543},25,[77,545,358],{"class":131},[11,547,548],{"id":548},"可插拔的设计",[550,551,553,554],"h3",{"id":552},"接口-basegraphdb","接口: ",[67,555,556],{},"BaseGraphDB",[98,558,561],{"className":559,"code":560,"language":103},[101],"函数功能介绍：\n1.节点操作：\n插入：add_node（添加单节点）\n     add_nodes_batch(批量添加节点)\n查询：get_node（查询单节点）\n     get_nodes(查询多个节点)\n     get_memory_count(查询节点数量)\n     node_not_exist（节点是否存在）\n     search_by_embedding(向量搜索可添加filter条件过滤，filter使用参见函数neo4j_example.example_complex_shared_db_search_filter获取完整的方法文档)\n更新：update_node(更新单个节点)\n删除：delete_node(删除单个节点)\n     clear (通过user_name删除所有相关节点)\n     参见函数neo4j_example.example_complex_shared_db_delete_memory获取完整的方法文档\n\n2.边操作\n插入：add_edge(添加三元组记忆)\n查询：get_edges(查询多个关系)\n     edge_exists(是否存在关系)\n     get_children_with_embeddings(查询关系类型PARENT的节点列表)\n     get_subgraph(查询多跳节点)\n删除：delete_edge(删除关系)\n\n3.导入导出操作：\n  import_graph(从序列化的字典中导入整个图,参数包含所有待加载节点和边的字典 参数:{'nodes':[],'edges':[])\n  export_graph(以结构化形式导出所有图节点和边,支持分页)\n\n参见src\u002Fmemos\u002Fgraph_dbs\u002Fbase.py获取完整的方法文档。\n",[67,562,560],{"__ignoreMap":106},[550,564,566],{"id":565},"当前的后端","当前的后端:",[568,569,570,586],"table",{},[571,572,573],"thead",{},[574,575,576,580,583],"tr",{},[577,578,579],"th",{},"后端",[577,581,582],{},"状态",[577,584,585],{},"文件",[587,588,589],"tbody",{},[574,590,591,594,597],{},[592,593,92],"td",{},[592,595,596],{},"Stable",[592,598,599],{},[67,600,601],{},"neo4j.py",[11,603,605],{"id":604},"单库多租户shared-db-multi-tenant","单库多租户（Shared DB, Multi-Tenant）",[16,607,608,609,612],{},"通过配置 ",[67,610,611],{},"user_name"," 字段，MemOS 支持在单个 Neo4j 数据库中隔离多个用户的记忆图谱，适用于协同系统、多角色场景：",[98,614,616],{"className":112,"code":615,"language":114,"meta":106,"style":106},"config = GraphDBConfigFactory(\n    backend=\"neo4j\",\n    config={\n        \"uri\": \"bolt:\u002F\u002Flocalhost:7687\",\n        \"user\": \"neo4j\",\n        \"password\": \"your_password\",\n        \"db_name\": \"shared-graph\",\n        \"user_name\": \"alice\",\n        \"use_multi_db\": false,\n        \"embedding_dimension\": 768,\n    },\n)\n",[67,617,618,628,642,648,666,684,702,721,740,756,771,776],{"__ignoreMap":106},[77,619,620,622,624,626],{"class":119,"line":120},[77,621,188],{"class":127},[77,623,191],{"class":131},[77,625,195],{"class":194},[77,627,198],{"class":131},[77,629,630,632,634,636,638,640],{"class":119,"line":149},[77,631,205],{"class":204},[77,633,191],{"class":131},[77,635,210],{"class":131},[77,637,214],{"class":213},[77,639,210],{"class":131},[77,641,219],{"class":131},[77,643,644,646],{"class":119,"line":171},[77,645,225],{"class":204},[77,647,228],{"class":131},[77,649,650,652,654,656,658,660,662,664],{"class":119,"line":178},[77,651,234],{"class":131},[77,653,237],{"class":213},[77,655,210],{"class":131},[77,657,242],{"class":131},[77,659,245],{"class":131},[77,661,248],{"class":213},[77,663,210],{"class":131},[77,665,219],{"class":131},[77,667,668,670,672,674,676,678,680,682],{"class":119,"line":185},[77,669,234],{"class":131},[77,671,260],{"class":213},[77,673,210],{"class":131},[77,675,242],{"class":131},[77,677,245],{"class":131},[77,679,214],{"class":213},[77,681,210],{"class":131},[77,683,219],{"class":131},[77,685,686,688,690,692,694,696,698,700],{"class":119,"line":201},[77,687,234],{"class":131},[77,689,281],{"class":213},[77,691,210],{"class":131},[77,693,242],{"class":131},[77,695,245],{"class":131},[77,697,290],{"class":213},[77,699,210],{"class":131},[77,701,219],{"class":131},[77,703,704,706,708,710,712,714,717,719],{"class":119,"line":222},[77,705,234],{"class":131},[77,707,302],{"class":213},[77,709,210],{"class":131},[77,711,242],{"class":131},[77,713,245],{"class":131},[77,715,716],{"class":213},"shared-graph",[77,718,210],{"class":131},[77,720,219],{"class":131},[77,722,723,725,727,729,731,733,736,738],{"class":119,"line":231},[77,724,234],{"class":131},[77,726,611],{"class":213},[77,728,210],{"class":131},[77,730,242],{"class":131},[77,732,245],{"class":131},[77,734,735],{"class":213},"alice",[77,737,210],{"class":131},[77,739,219],{"class":131},[77,741,742,744,747,749,751,754],{"class":119,"line":255},[77,743,234],{"class":131},[77,745,746],{"class":213},"use_multi_db",[77,748,210],{"class":131},[77,750,242],{"class":131},[77,752,753],{"class":194}," false",[77,755,219],{"class":131},[77,757,758,760,762,764,766,769],{"class":119,"line":276},[77,759,234],{"class":131},[77,761,338],{"class":213},[77,763,210],{"class":131},[77,765,242],{"class":131},[77,767,768],{"class":345}," 768",[77,770,219],{"class":131},[77,772,773],{"class":119,"line":297},[77,774,775],{"class":131},"    },\n",[77,777,778],{"class":119,"line":318},[77,779,358],{"class":131},[16,781,782,783,785],{},"每个用户的数据通过 ",[67,784,611],{}," 字段在读写、搜索、导出中逻辑隔离，系统自动完成过滤。",[787,788,789],"note",{},[16,790,791,794,797,798],{},[27,792,793],{},"示例参考",[795,796],"br",{},"\n话不多说，都在代码里了",[67,799,800],{},"examples\u002Fbasic_modules \u002Fneo4j_example.example_complex_shared_db(db_name=\"shared-traval-group-complex-new\")",[11,802,804],{"id":803},"neo4j-社区版community-edition支持","Neo4j 社区版（Community Edition）支持",[16,806,807,808],{},"新增后端标识：",[67,809,810],{},"neo4j-community",[16,812,813],{},"使用方式与标准 Neo4j 类似，但自动关闭企业功能：",[20,815,816,822,825],{},[23,817,818,819,821],{},"❌ 不支持 ",[67,820,323],{}," 数据库",[23,823,824],{},"❌ 不支持原生向量索引（必须使用外接向量库，目前只支持Qdrant）",[23,826,827,828,830],{},"✅ 强制启用 ",[67,829,611],{}," 逻辑隔离（社区版、或user_name属于同一业务不需要强隔离）",[16,832,833],{},"示例配置：",[98,835,837],{"className":112,"code":836,"language":114,"meta":106,"style":106},"config = GraphDBConfigFactory(\n    backend=\"neo4j-community\",\n    config={\n        \"uri\": \"bolt:\u002F\u002Flocalhost:7687\",\n        \"user\": \"neo4j\",\n        \"password\": \"12345678\",\n        \"db_name\": \"paper\",\n        \"user_name\": \"bob\",\n        \"auto_create\": False,\n        \"embedding_dimension\": 768,\n        \"use_multi_db\": False,\n        \"vec_config\": {\n            \"backend\": \"qdrant\",\n            \"config\": {\n                \"host\": \"localhost\",\n                \"port\": 6333,\n                \"collection_name\": \"neo4j_vec_db\",\n                \"vector_dimension\": 768,\n                \"distance_metric\": \"cosine\"\n            },\n        },\n    },\n)\n",[67,838,839,849,863,869,887,905,924,943,962,975,989,1001,1015,1036,1048,1069,1085,1105,1120,1139,1144,1149,1153],{"__ignoreMap":106},[77,840,841,843,845,847],{"class":119,"line":120},[77,842,188],{"class":127},[77,844,191],{"class":131},[77,846,195],{"class":194},[77,848,198],{"class":131},[77,850,851,853,855,857,859,861],{"class":119,"line":149},[77,852,205],{"class":204},[77,854,191],{"class":131},[77,856,210],{"class":131},[77,858,810],{"class":213},[77,860,210],{"class":131},[77,862,219],{"class":131},[77,864,865,867],{"class":119,"line":171},[77,866,225],{"class":204},[77,868,228],{"class":131},[77,870,871,873,875,877,879,881,883,885],{"class":119,"line":178},[77,872,234],{"class":131},[77,874,237],{"class":213},[77,876,210],{"class":131},[77,878,242],{"class":131},[77,880,245],{"class":131},[77,882,248],{"class":213},[77,884,210],{"class":131},[77,886,219],{"class":131},[77,888,889,891,893,895,897,899,901,903],{"class":119,"line":185},[77,890,234],{"class":131},[77,892,260],{"class":213},[77,894,210],{"class":131},[77,896,242],{"class":131},[77,898,245],{"class":131},[77,900,214],{"class":213},[77,902,210],{"class":131},[77,904,219],{"class":131},[77,906,907,909,911,913,915,917,920,922],{"class":119,"line":201},[77,908,234],{"class":131},[77,910,281],{"class":213},[77,912,210],{"class":131},[77,914,242],{"class":131},[77,916,245],{"class":131},[77,918,919],{"class":213},"12345678",[77,921,210],{"class":131},[77,923,219],{"class":131},[77,925,926,928,930,932,934,936,939,941],{"class":119,"line":222},[77,927,234],{"class":131},[77,929,302],{"class":213},[77,931,210],{"class":131},[77,933,242],{"class":131},[77,935,245],{"class":131},[77,937,938],{"class":213},"paper",[77,940,210],{"class":131},[77,942,219],{"class":131},[77,944,945,947,949,951,953,955,958,960],{"class":119,"line":231},[77,946,234],{"class":131},[77,948,611],{"class":213},[77,950,210],{"class":131},[77,952,242],{"class":131},[77,954,245],{"class":131},[77,956,957],{"class":213},"bob",[77,959,210],{"class":131},[77,961,219],{"class":131},[77,963,964,966,968,970,972],{"class":119,"line":255},[77,965,234],{"class":131},[77,967,323],{"class":213},[77,969,210],{"class":131},[77,971,242],{"class":131},[77,973,974],{"class":131}," False,\n",[77,976,977,979,981,983,985,987],{"class":119,"line":276},[77,978,234],{"class":131},[77,980,338],{"class":213},[77,982,210],{"class":131},[77,984,242],{"class":131},[77,986,768],{"class":345},[77,988,219],{"class":131},[77,990,991,993,995,997,999],{"class":119,"line":297},[77,992,234],{"class":131},[77,994,746],{"class":213},[77,996,210],{"class":131},[77,998,242],{"class":131},[77,1000,974],{"class":131},[77,1002,1003,1005,1008,1010,1012],{"class":119,"line":318},[77,1004,234],{"class":131},[77,1006,1007],{"class":213},"vec_config",[77,1009,210],{"class":131},[77,1011,242],{"class":131},[77,1013,1014],{"class":131}," {\n",[77,1016,1017,1020,1023,1025,1027,1029,1032,1034],{"class":119,"line":333},[77,1018,1019],{"class":131},"            \"",[77,1021,1022],{"class":213},"backend",[77,1024,210],{"class":131},[77,1026,242],{"class":131},[77,1028,245],{"class":131},[77,1030,1031],{"class":213},"qdrant",[77,1033,210],{"class":131},[77,1035,219],{"class":131},[77,1037,1038,1040,1042,1044,1046],{"class":119,"line":349},[77,1039,1019],{"class":131},[77,1041,391],{"class":213},[77,1043,210],{"class":131},[77,1045,242],{"class":131},[77,1047,1014],{"class":131},[77,1049,1050,1053,1056,1058,1060,1062,1065,1067],{"class":119,"line":355},[77,1051,1052],{"class":131},"                \"",[77,1054,1055],{"class":213},"host",[77,1057,210],{"class":131},[77,1059,242],{"class":131},[77,1061,245],{"class":131},[77,1063,1064],{"class":213},"localhost",[77,1066,210],{"class":131},[77,1068,219],{"class":131},[77,1070,1071,1073,1076,1078,1080,1083],{"class":119,"line":361},[77,1072,1052],{"class":131},[77,1074,1075],{"class":213},"port",[77,1077,210],{"class":131},[77,1079,242],{"class":131},[77,1081,1082],{"class":345}," 6333",[77,1084,219],{"class":131},[77,1086,1087,1089,1092,1094,1096,1098,1101,1103],{"class":119,"line":366},[77,1088,1052],{"class":131},[77,1090,1091],{"class":213},"collection_name",[77,1093,210],{"class":131},[77,1095,242],{"class":131},[77,1097,245],{"class":131},[77,1099,1100],{"class":213},"neo4j_vec_db",[77,1102,210],{"class":131},[77,1104,219],{"class":131},[77,1106,1107,1109,1112,1114,1116,1118],{"class":119,"line":372},[77,1108,1052],{"class":131},[77,1110,1111],{"class":213},"vector_dimension",[77,1113,210],{"class":131},[77,1115,242],{"class":131},[77,1117,768],{"class":345},[77,1119,219],{"class":131},[77,1121,1122,1124,1127,1129,1131,1133,1136],{"class":119,"line":396},[77,1123,1052],{"class":131},[77,1125,1126],{"class":213},"distance_metric",[77,1128,210],{"class":131},[77,1130,242],{"class":131},[77,1132,245],{"class":131},[77,1134,1135],{"class":213},"cosine",[77,1137,1138],{"class":131},"\"\n",[77,1140,1141],{"class":119,"line":401},[77,1142,1143],{"class":131},"            },\n",[77,1145,1146],{"class":119,"line":407},[77,1147,1148],{"class":131},"        },\n",[77,1150,1151],{"class":119,"line":420},[77,1152,775],{"class":131},[77,1154,1155],{"class":119,"line":437},[77,1156,358],{"class":131},[787,1158,1159],{},[16,1160,1161,1163,1165],{},[27,1162,793],{},[795,1164],{},[67,1166,1167],{},"examples\u002Fbasic_modules \u002Fneo4j_example.example_complex_shared_db(db_name=\"paper\",  community=True)",[11,1169,1170],{"id":1170},"扩展",[16,1172,1173,1174,1177,1178,1177,1181,1184],{},"你可以添加任何其他图形引擎的支持（例如，",[27,1175,1176],{},"TigerGraph",", ",[27,1179,1180],{},"DGraph",[27,1182,1183],{},"Weaviate hybrid","）:",[1186,1187,1188,1193,1199],"ol",{},[23,1189,1190,1191],{},"子类 ",[67,1192,556],{},[23,1194,1195,1196,70],{},"创建配置数据类(例如, ",[67,1197,1198],{},"DgraphConfig",[23,1200,1201,1202],{},"将它注册到:",[20,1203,1204,1209],{},[23,1205,1206],{},[67,1207,1208],{},"GraphDBConfigFactory.backend_to_class",[23,1210,1211],{},[67,1212,1213],{},"GraphStoreFactory.backend_to_class",[16,1215,1216,1217,1220],{},"参见 ",[67,1218,1219],{},"src\u002Fmemos\u002Fgraph_dbs\u002Fneo4j.py"," 作为参考实现。",[1222,1223,1224],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .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}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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);}",{"title":106,"searchDepth":149,"depth":149,"links":1226},[1227,1228,1229,1230,1231,1236,1237,1238],{"id":13,"depth":149,"text":14},{"id":54,"depth":149,"text":54},{"id":96,"depth":149,"text":96},{"id":109,"depth":149,"text":109},{"id":548,"depth":149,"text":548,"children":1232},[1233,1235],{"id":552,"depth":171,"text":1234},"接口: BaseGraphDB",{"id":565,"depth":171,"text":566},{"id":604,"depth":149,"text":605},{"id":803,"depth":149,"text":804},{"id":1170,"depth":149,"text":1170},"该模块为记忆增强系统（如RAG、认知代理或个人内存助手）提供基于图结构的记忆存储和查询。 \u003Cbr\u002F>它定义了一个干净的抽象类(`BaseGraphDB`)，并使用**Neo4j**实现了一个可用于生产环境的实现。","md",{},"\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fneo4j_graph_db",{"title":5,"description":106},"cn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fneo4j_graph_db","F4glbCKh3ludTW1tCryX_pS2o-uWa5X3QwCj-OHkuMU",[1247,1255],{"title":1248,"path":1249,"stem":1250,"icon":1251,"framework":6,"module":6,"class":1252,"target":-1,"active":1253,"defaultOpen":1253,"children":-1,"description":1254},"树形明文记忆","\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Ftree_textual_memory","open_source\u002Fmodules\u002Fmemories\u002Ftree_textual_memory","i-ri-tree-line",[],false,"让我们在MemOS中构建你的第一个基于图的、树形明文记忆！ \u003Cbr> TreeTextMemory 支持以结构化方式组织、关联并检索记忆，同时保留丰富的上下文信息与良好的可解释性。 \u003Cbr> MemOS当前使用Neo4j作为后端，未来计划支持更多图数据库。\n",{"title":1256,"path":1257,"stem":1258,"icon":1259,"framework":6,"module":6,"class":1260,"target":-1,"active":1253,"defaultOpen":1253,"children":-1,"description":1261},"PolarDB 图数据库","\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Fpolardb_graph_db","open_source\u002Fmodules\u002Fmemories\u002Fpolardb_graph_db","i-ri-database-line",[],"MemOS 支持使用 PolarDB（基于 Apache AGE 扩展）作为图数据库后端，用于存储和检索知识图谱式的记忆数据。PolarDB 结合了 PostgreSQL 的强大功能和图数据库的灵活性，特别适合需要同时进行关系型和图数据查询的场景。",1774339752173]