[{"data":1,"prerenderedAt":1268},["ShallowReactive",2],{"/open_source/modules/memories/neo4j_graph_db":3,"surround-/open_source/modules/memories/neo4j_graph_db":1253},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":1246,"description":108,"extension":1247,"links":6,"meta":1248,"navigation":6,"path":1249,"seo":1250,"stem":1251,"__hash__":1252},"docs/en/open_source/modules/memories/neo4j_graph_db.md","Neo4j Graph Database",null,{"type":8,"value":9,"toc":1232},"minimark",[10,15,19,49,52,56,95,99,109,113,549,553,561,567,571,607,611,618,783,789,806,810,816,819,836,839,1161,1174,1178,1192,1221,1228],[11,12,14],"h2",{"id":13},"why-graph-for-memory","Why Graph for Memory?",[16,17,18],"p",{},"Unlike flat vector stores, a graph database allows:",[20,21,22,30,40,46],"ul",{},[23,24,25,26],"li",{},"Structuring memory into ",[27,28,29],"strong",{},"chains, hierarchies, and causal links",[23,31,32,33,36,37],{},"Performing ",[27,34,35],{},"multi-hop reasoning"," and ",[27,38,39],{},"subgraph traversal",[23,41,42,43],{},"Supporting memory ",[27,44,45],{},"deduplication, conflict detection, and scheduling",[23,47,48],{},"Dynamically evolving a memory graph over time",[16,50,51],{},"This forms the backbone of long-term, explainable, and compositional memory reasoning.",[11,53,55],{"id":54},"features","Features",[20,57,58,61,64,72,75,86],{},[23,59,60],{},"Unified interface across different graph databases",[23,62,63],{},"Built-in support for Neo4j",[23,65,66,67,71],{},"Support for vector-enhanced retrieval (",[68,69,70],"code",{},"search_by_embedding",")",[23,73,74],{},"Modular, pluggable, and testable",[23,76,77,81,82,85],{},[78,79,80],"span",{},"v0.2.1 New!"," Supports ",[27,83,84],{},"multi-tenant graph memory architecture"," (shared DB, per-user logic)",[23,87,88,90,91,94],{},[78,89,80],{}," Compatible with ",[27,92,93],{},"Neo4j Community Edition"," environments",[11,96,98],{"id":97},"directory-structure","Directory Structure",[100,101,106],"pre",{"className":102,"code":104,"language":105},[103],"language-text","\nsrc/memos/graph_dbs/\n├── base.py            # Abstract interface: BaseGraphDB\n├── factory.py         # Factory to instantiate GraphDB from config\n├── neo4j.py           # Neo4jGraphDB: production implementation\n\n","text",[68,107,104],{"__ignoreMap":108},"",[11,110,112],{"id":111},"how-to-use","How to Use",[100,114,118],{"className":115,"code":116,"language":117,"meta":108,"style":108},"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# Step 1: Build factory config\nconfig = GraphDBConfigFactory(\n    backend=\"neo4j\",\n    config={\n        \"uri\": \"bolt://localhost: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# Step 2: Instantiate the graph store\ngraph = GraphStoreFactory.from_config(config)\n\n# Step 3: Add memory\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","python",[68,119,120,150,172,179,186,202,223,232,256,277,298,319,334,350,356,362,367,373,397,402,408,421,438,455,544],{"__ignoreMap":108},[78,121,124,128,132,136,139,141,144,147],{"class":122,"line":123},"line",1,[78,125,127],{"class":126},"s7zQu","from",[78,129,131],{"class":130},"sTEyZ"," memos",[78,133,135],{"class":134},"sMK4o",".",[78,137,138],{"class":130},"graph_dbs",[78,140,135],{"class":134},[78,142,143],{"class":130},"factory ",[78,145,146],{"class":126},"import",[78,148,149],{"class":130}," GraphStoreFactory\n",[78,151,153,155,157,159,162,164,167,169],{"class":122,"line":152},2,[78,154,127],{"class":126},[78,156,131],{"class":130},[78,158,135],{"class":134},[78,160,161],{"class":130},"configs",[78,163,135],{"class":134},[78,165,166],{"class":130},"graph_db ",[78,168,146],{"class":126},[78,170,171],{"class":130}," GraphDBConfigFactory\n",[78,173,175],{"class":122,"line":174},3,[78,176,178],{"emptyLinePlaceholder":177},true,"\n",[78,180,182],{"class":122,"line":181},4,[78,183,185],{"class":184},"sHwdD","# Step 1: Build factory config\n",[78,187,189,192,195,199],{"class":122,"line":188},5,[78,190,191],{"class":130},"config ",[78,193,194],{"class":134},"=",[78,196,198],{"class":197},"s2Zo4"," GraphDBConfigFactory",[78,200,201],{"class":134},"(\n",[78,203,205,209,211,214,218,220],{"class":122,"line":204},6,[78,206,208],{"class":207},"sHdIc","    backend",[78,210,194],{"class":134},[78,212,213],{"class":134},"\"",[78,215,217],{"class":216},"sfazB","neo4j",[78,219,213],{"class":134},[78,221,222],{"class":134},",\n",[78,224,226,229],{"class":122,"line":225},7,[78,227,228],{"class":207},"    config",[78,230,231],{"class":134},"={\n",[78,233,235,238,241,243,246,249,252,254],{"class":122,"line":234},8,[78,236,237],{"class":134},"        \"",[78,239,240],{"class":216},"uri",[78,242,213],{"class":134},[78,244,245],{"class":134},":",[78,247,248],{"class":134}," \"",[78,250,251],{"class":216},"bolt://localhost:7687",[78,253,213],{"class":134},[78,255,222],{"class":134},[78,257,259,261,264,266,268,270,273,275],{"class":122,"line":258},9,[78,260,237],{"class":134},[78,262,263],{"class":216},"user",[78,265,213],{"class":134},[78,267,245],{"class":134},[78,269,248],{"class":134},[78,271,272],{"class":216},"your_neo4j_user_name",[78,274,213],{"class":134},[78,276,222],{"class":134},[78,278,280,282,285,287,289,291,294,296],{"class":122,"line":279},10,[78,281,237],{"class":134},[78,283,284],{"class":216},"password",[78,286,213],{"class":134},[78,288,245],{"class":134},[78,290,248],{"class":134},[78,292,293],{"class":216},"your_password",[78,295,213],{"class":134},[78,297,222],{"class":134},[78,299,301,303,306,308,310,312,315,317],{"class":122,"line":300},11,[78,302,237],{"class":134},[78,304,305],{"class":216},"db_name",[78,307,213],{"class":134},[78,309,245],{"class":134},[78,311,248],{"class":134},[78,313,314],{"class":216},"memory_user1",[78,316,213],{"class":134},[78,318,222],{"class":134},[78,320,322,324,327,329,331],{"class":122,"line":321},12,[78,323,237],{"class":134},[78,325,326],{"class":216},"auto_create",[78,328,213],{"class":134},[78,330,245],{"class":134},[78,332,333],{"class":134}," True,\n",[78,335,337,339,342,344,346],{"class":122,"line":336},13,[78,338,237],{"class":134},[78,340,341],{"class":216},"embedding_dimension",[78,343,213],{"class":134},[78,345,245],{"class":134},[78,347,349],{"class":348},"sbssI"," 768\n",[78,351,353],{"class":122,"line":352},14,[78,354,355],{"class":134},"    }\n",[78,357,359],{"class":122,"line":358},15,[78,360,361],{"class":134},")\n",[78,363,365],{"class":122,"line":364},16,[78,366,178],{"emptyLinePlaceholder":177},[78,368,370],{"class":122,"line":369},17,[78,371,372],{"class":184},"# Step 2: Instantiate the graph store\n",[78,374,376,379,381,384,386,389,392,395],{"class":122,"line":375},18,[78,377,378],{"class":130},"graph ",[78,380,194],{"class":134},[78,382,383],{"class":130}," GraphStoreFactory",[78,385,135],{"class":134},[78,387,388],{"class":197},"from_config",[78,390,391],{"class":134},"(",[78,393,394],{"class":197},"config",[78,396,361],{"class":134},[78,398,400],{"class":122,"line":399},19,[78,401,178],{"emptyLinePlaceholder":177},[78,403,405],{"class":122,"line":404},20,[78,406,407],{"class":184},"# Step 3: Add memory\n",[78,409,411,414,416,419],{"class":122,"line":410},21,[78,412,413],{"class":130},"graph",[78,415,135],{"class":134},[78,417,418],{"class":197},"add_node",[78,420,201],{"class":134},[78,422,424,427,429,431,434,436],{"class":122,"line":423},22,[78,425,426],{"class":207},"    id",[78,428,194],{"class":134},[78,430,213],{"class":134},[78,432,433],{"class":216},"node-001",[78,435,213],{"class":134},[78,437,222],{"class":134},[78,439,441,444,446,448,451,453],{"class":122,"line":440},23,[78,442,443],{"class":207},"    memory",[78,445,194],{"class":134},[78,447,213],{"class":134},[78,449,450],{"class":216},"Today I learned about retrieval-augmented generation.",[78,452,213],{"class":134},[78,454,222],{"class":134},[78,456,458,461,464,466,469,471,473,475,478,480,483,485,488,490,492,495,497,500,502,504,506,509,511,514,516,519,521,523,525,528,530,532,534,537,539,541],{"class":122,"line":457},24,[78,459,460],{"class":207},"    metadata",[78,462,463],{"class":134},"={",[78,465,213],{"class":134},[78,467,468],{"class":216},"type",[78,470,213],{"class":134},[78,472,245],{"class":134},[78,474,248],{"class":134},[78,476,477],{"class":216},"WorkingMemory",[78,479,213],{"class":134},[78,481,482],{"class":134},",",[78,484,248],{"class":134},[78,486,487],{"class":216},"tags",[78,489,213],{"class":134},[78,491,245],{"class":134},[78,493,494],{"class":134}," [",[78,496,213],{"class":134},[78,498,499],{"class":216},"RAG",[78,501,213],{"class":134},[78,503,482],{"class":134},[78,505,248],{"class":134},[78,507,508],{"class":216},"AI",[78,510,213],{"class":134},[78,512,513],{"class":134},"],",[78,515,248],{"class":134},[78,517,518],{"class":216},"timestamp",[78,520,213],{"class":134},[78,522,245],{"class":134},[78,524,248],{"class":134},[78,526,527],{"class":216},"2025-06-05",[78,529,213],{"class":134},[78,531,482],{"class":134},[78,533,248],{"class":134},[78,535,536],{"class":216},"sources",[78,538,213],{"class":134},[78,540,245],{"class":134},[78,542,543],{"class":134}," []}\n",[78,545,547],{"class":122,"line":546},25,[78,548,361],{"class":134},[11,550,552],{"id":551},"pluggable-design","Pluggable Design",[554,555,557,558],"h3",{"id":556},"interface-basegraphdb","Interface: ",[68,559,560],{},"BaseGraphDB",[100,562,565],{"className":563,"code":564,"language":105},[103],"Function Introduction:\n1. Node Operations:\n   Insert: add_node (Adds a single node)\n           add_nodes_batch (Adds multiple nodes in batch)\n   Query: get_node (Retrieves a single node)\n          get_nodes (Retrieves multiple nodes)\n          get_memory_count (Retrieves the count of nodes)\n          node_not_exist (Checks if a node exists)\n          search_by_embedding (Vector search supports adding filter conditions for filtering. For usage of the filter, refer to the function neo4j_example.example_complex_shared_db_search_filter for the complete method documentation.)\n   Update: update_node (Updates a single node)\n   Delete: delete_node (Deletes a single node)\n           clear(deletes all associated nodes by the user_name attribute.)\n           See neo4j_example.example_complex_shared_db_delete_memory for full method docs\n\n2. Edge Operations:\n   Insert: add_edge (Adds a triple/relation as a memory element)\n   Query: get_edges (Retrieves multiple relations/edges)\n          edge_exists (Checks if a relation/edge exists)\n          get_children_with_embeddings (Retrieves a list of child nodes for the PARENT relation type)\n          get_subgraph (Queries multi-hop nodes/retrieves a subgraph)\n   Delete: delete_edge (Deletes a relation/edge)\n\n3. Import/Export Operations:\n   import_graph (Imports an entire graph from a serialized dictionary. Parameters: A dictionary containing all nodes and edges to load, format: {'nodes': [], 'edges': []})\n   export_graph (Exports all graph nodes and edges in a structured format, with pagination support)\n\nSee src/memos/graph_dbs/base.py for full method docs.\n",[68,566,564],{"__ignoreMap":108},[554,568,570],{"id":569},"current-backend","Current Backend:",[572,573,574,590],"table",{},[575,576,577],"thead",{},[578,579,580,584,587],"tr",{},[581,582,583],"th",{},"Backend",[581,585,586],{},"Status",[581,588,589],{},"File",[591,592,593],"tbody",{},[578,594,595,599,602],{},[596,597,598],"td",{},"Neo4j",[596,600,601],{},"Stable",[596,603,604],{},[68,605,606],{},"neo4j.py",[11,608,610],{"id":609},"shared-db-multi-tenant-support","Shared DB, Multi-Tenant Support",[16,612,613,614,617],{},"By specifying the ",[68,615,616],{},"user_name"," field, MemOS can isolate memory graphs for multiple users in a single Neo4j database. Ideal for collaborative systems or multi-agent applications:",[100,619,621],{"className":115,"code":620,"language":117,"meta":108,"style":108},"config = GraphDBConfigFactory(\n    backend=\"neo4j\",\n    config={\n        \"uri\": \"bolt://localhost: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",[68,622,623,633,647,653,671,689,707,726,745,759,774,779],{"__ignoreMap":108},[78,624,625,627,629,631],{"class":122,"line":123},[78,626,191],{"class":130},[78,628,194],{"class":134},[78,630,198],{"class":197},[78,632,201],{"class":134},[78,634,635,637,639,641,643,645],{"class":122,"line":152},[78,636,208],{"class":207},[78,638,194],{"class":134},[78,640,213],{"class":134},[78,642,217],{"class":216},[78,644,213],{"class":134},[78,646,222],{"class":134},[78,648,649,651],{"class":122,"line":174},[78,650,228],{"class":207},[78,652,231],{"class":134},[78,654,655,657,659,661,663,665,667,669],{"class":122,"line":181},[78,656,237],{"class":134},[78,658,240],{"class":216},[78,660,213],{"class":134},[78,662,245],{"class":134},[78,664,248],{"class":134},[78,666,251],{"class":216},[78,668,213],{"class":134},[78,670,222],{"class":134},[78,672,673,675,677,679,681,683,685,687],{"class":122,"line":188},[78,674,237],{"class":134},[78,676,263],{"class":216},[78,678,213],{"class":134},[78,680,245],{"class":134},[78,682,248],{"class":134},[78,684,217],{"class":216},[78,686,213],{"class":134},[78,688,222],{"class":134},[78,690,691,693,695,697,699,701,703,705],{"class":122,"line":204},[78,692,237],{"class":134},[78,694,284],{"class":216},[78,696,213],{"class":134},[78,698,245],{"class":134},[78,700,248],{"class":134},[78,702,293],{"class":216},[78,704,213],{"class":134},[78,706,222],{"class":134},[78,708,709,711,713,715,717,719,722,724],{"class":122,"line":225},[78,710,237],{"class":134},[78,712,305],{"class":216},[78,714,213],{"class":134},[78,716,245],{"class":134},[78,718,248],{"class":134},[78,720,721],{"class":216},"shared-graph",[78,723,213],{"class":134},[78,725,222],{"class":134},[78,727,728,730,732,734,736,738,741,743],{"class":122,"line":234},[78,729,237],{"class":134},[78,731,616],{"class":216},[78,733,213],{"class":134},[78,735,245],{"class":134},[78,737,248],{"class":134},[78,739,740],{"class":216},"alice",[78,742,213],{"class":134},[78,744,222],{"class":134},[78,746,747,749,752,754,756],{"class":122,"line":258},[78,748,237],{"class":134},[78,750,751],{"class":216},"use_multi_db",[78,753,213],{"class":134},[78,755,245],{"class":134},[78,757,758],{"class":134}," False,\n",[78,760,761,763,765,767,769,772],{"class":122,"line":279},[78,762,237],{"class":134},[78,764,341],{"class":216},[78,766,213],{"class":134},[78,768,245],{"class":134},[78,770,771],{"class":348}," 768",[78,773,222],{"class":134},[78,775,776],{"class":122,"line":300},[78,777,778],{"class":134},"    },\n",[78,780,781],{"class":122,"line":321},[78,782,361],{"class":134},[16,784,785,786,788],{},"User data is logically isolated via the ",[68,787,616],{}," field. Filtering is handled automatically during reads, writes, and searches.",[790,791,792],"note",{},[16,793,794,797,800,801,803],{},[27,795,796],{},"Example? You bet.",[798,799],"br",{},"\nNo blah blah, just go check the code:",[798,802],{},[68,804,805],{},"examples/basic_modules/neo4j_example.example_complex_shared_db(db_name=\"shared-traval-group-complex-new\")",[11,807,809],{"id":808},"neo4j-community-edition-support","Neo4j Community Edition Support",[16,811,812,813],{},"New backend identifier: ",[68,814,815],{},"neo4j-community",[16,817,818],{},"Usage is similar to standard Neo4j, but disables Enterprise-only features:",[20,820,821,827,830],{},[23,822,823,824,826],{},"❌ No support for ",[68,825,326],{}," databases",[23,828,829],{},"❌ No native vector indexes (External vector library must be used, currently only Qdrant is supported)",[23,831,832,833,835],{},"✅ Enforces ",[68,834,616],{}," logic-based isolation(Community version or username belong to the same business and do not require strong isolation)",[16,837,838],{},"Example configuration:",[100,840,842],{"className":115,"code":841,"language":117,"meta":108,"style":108},"config = GraphDBConfigFactory(\n    backend=\"neo4j-community\",\n    config={\n        \"uri\": \"bolt://localhost: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",[68,843,844,854,868,874,892,910,929,948,967,979,993,1005,1019,1040,1052,1073,1089,1109,1124,1143,1148,1153,1157],{"__ignoreMap":108},[78,845,846,848,850,852],{"class":122,"line":123},[78,847,191],{"class":130},[78,849,194],{"class":134},[78,851,198],{"class":197},[78,853,201],{"class":134},[78,855,856,858,860,862,864,866],{"class":122,"line":152},[78,857,208],{"class":207},[78,859,194],{"class":134},[78,861,213],{"class":134},[78,863,815],{"class":216},[78,865,213],{"class":134},[78,867,222],{"class":134},[78,869,870,872],{"class":122,"line":174},[78,871,228],{"class":207},[78,873,231],{"class":134},[78,875,876,878,880,882,884,886,888,890],{"class":122,"line":181},[78,877,237],{"class":134},[78,879,240],{"class":216},[78,881,213],{"class":134},[78,883,245],{"class":134},[78,885,248],{"class":134},[78,887,251],{"class":216},[78,889,213],{"class":134},[78,891,222],{"class":134},[78,893,894,896,898,900,902,904,906,908],{"class":122,"line":188},[78,895,237],{"class":134},[78,897,263],{"class":216},[78,899,213],{"class":134},[78,901,245],{"class":134},[78,903,248],{"class":134},[78,905,217],{"class":216},[78,907,213],{"class":134},[78,909,222],{"class":134},[78,911,912,914,916,918,920,922,925,927],{"class":122,"line":204},[78,913,237],{"class":134},[78,915,284],{"class":216},[78,917,213],{"class":134},[78,919,245],{"class":134},[78,921,248],{"class":134},[78,923,924],{"class":216},"12345678",[78,926,213],{"class":134},[78,928,222],{"class":134},[78,930,931,933,935,937,939,941,944,946],{"class":122,"line":225},[78,932,237],{"class":134},[78,934,305],{"class":216},[78,936,213],{"class":134},[78,938,245],{"class":134},[78,940,248],{"class":134},[78,942,943],{"class":216},"paper",[78,945,213],{"class":134},[78,947,222],{"class":134},[78,949,950,952,954,956,958,960,963,965],{"class":122,"line":234},[78,951,237],{"class":134},[78,953,616],{"class":216},[78,955,213],{"class":134},[78,957,245],{"class":134},[78,959,248],{"class":134},[78,961,962],{"class":216},"bob",[78,964,213],{"class":134},[78,966,222],{"class":134},[78,968,969,971,973,975,977],{"class":122,"line":258},[78,970,237],{"class":134},[78,972,326],{"class":216},[78,974,213],{"class":134},[78,976,245],{"class":134},[78,978,758],{"class":134},[78,980,981,983,985,987,989,991],{"class":122,"line":279},[78,982,237],{"class":134},[78,984,341],{"class":216},[78,986,213],{"class":134},[78,988,245],{"class":134},[78,990,771],{"class":348},[78,992,222],{"class":134},[78,994,995,997,999,1001,1003],{"class":122,"line":300},[78,996,237],{"class":134},[78,998,751],{"class":216},[78,1000,213],{"class":134},[78,1002,245],{"class":134},[78,1004,758],{"class":134},[78,1006,1007,1009,1012,1014,1016],{"class":122,"line":321},[78,1008,237],{"class":134},[78,1010,1011],{"class":216},"vec_config",[78,1013,213],{"class":134},[78,1015,245],{"class":134},[78,1017,1018],{"class":134}," {\n",[78,1020,1021,1024,1027,1029,1031,1033,1036,1038],{"class":122,"line":336},[78,1022,1023],{"class":134},"            \"",[78,1025,1026],{"class":216},"backend",[78,1028,213],{"class":134},[78,1030,245],{"class":134},[78,1032,248],{"class":134},[78,1034,1035],{"class":216},"qdrant",[78,1037,213],{"class":134},[78,1039,222],{"class":134},[78,1041,1042,1044,1046,1048,1050],{"class":122,"line":352},[78,1043,1023],{"class":134},[78,1045,394],{"class":216},[78,1047,213],{"class":134},[78,1049,245],{"class":134},[78,1051,1018],{"class":134},[78,1053,1054,1057,1060,1062,1064,1066,1069,1071],{"class":122,"line":358},[78,1055,1056],{"class":134},"                \"",[78,1058,1059],{"class":216},"host",[78,1061,213],{"class":134},[78,1063,245],{"class":134},[78,1065,248],{"class":134},[78,1067,1068],{"class":216},"localhost",[78,1070,213],{"class":134},[78,1072,222],{"class":134},[78,1074,1075,1077,1080,1082,1084,1087],{"class":122,"line":364},[78,1076,1056],{"class":134},[78,1078,1079],{"class":216},"port",[78,1081,213],{"class":134},[78,1083,245],{"class":134},[78,1085,1086],{"class":348}," 6333",[78,1088,222],{"class":134},[78,1090,1091,1093,1096,1098,1100,1102,1105,1107],{"class":122,"line":369},[78,1092,1056],{"class":134},[78,1094,1095],{"class":216},"collection_name",[78,1097,213],{"class":134},[78,1099,245],{"class":134},[78,1101,248],{"class":134},[78,1103,1104],{"class":216},"neo4j_vec_db",[78,1106,213],{"class":134},[78,1108,222],{"class":134},[78,1110,1111,1113,1116,1118,1120,1122],{"class":122,"line":375},[78,1112,1056],{"class":134},[78,1114,1115],{"class":216},"vector_dimension",[78,1117,213],{"class":134},[78,1119,245],{"class":134},[78,1121,771],{"class":348},[78,1123,222],{"class":134},[78,1125,1126,1128,1131,1133,1135,1137,1140],{"class":122,"line":399},[78,1127,1056],{"class":134},[78,1129,1130],{"class":216},"distance_metric",[78,1132,213],{"class":134},[78,1134,245],{"class":134},[78,1136,248],{"class":134},[78,1138,1139],{"class":216},"cosine",[78,1141,1142],{"class":134},"\"\n",[78,1144,1145],{"class":122,"line":404},[78,1146,1147],{"class":134},"            },\n",[78,1149,1150],{"class":122,"line":410},[78,1151,1152],{"class":134},"        },\n",[78,1154,1155],{"class":122,"line":423},[78,1156,778],{"class":134},[78,1158,1159],{"class":122,"line":440},[78,1160,361],{"class":134},[790,1162,1163],{},[16,1164,1165,1167,800,1169,1171],{},[27,1166,796],{},[798,1168],{},[798,1170],{},[68,1172,1173],{},"examples/basic_modules/neo4j_example.example_complex_shared_db(db_name=\"paper\", community=True)",[11,1175,1177],{"id":1176},"extending","Extending",[16,1179,1180,1181,1184,1185,1184,1188,1191],{},"You can add support for any other graph engine (e.g., ",[27,1182,1183],{},"TigerGraph",", ",[27,1186,1187],{},"DGraph",[27,1189,1190],{},"Weaviate hybrid",") by:",[1193,1194,1195,1200,1206],"ol",{},[23,1196,1197,1198],{},"Subclassing ",[68,1199,560],{},[23,1201,1202,1203,71],{},"Creating a config dataclass (e.g., ",[68,1204,1205],{},"DgraphConfig",[23,1207,1208,1209],{},"Registering it in:",[20,1210,1211,1216],{},[23,1212,1213],{},[68,1214,1215],{},"GraphDBConfigFactory.backend_to_class",[23,1217,1218],{},[68,1219,1220],{},"GraphStoreFactory.backend_to_class",[16,1222,1223,1224,1227],{},"See ",[68,1225,1226],{},"src/memos/graph_dbs/neo4j.py"," as a reference for implementation.",[1229,1230,1231],"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":108,"searchDepth":152,"depth":152,"links":1233},[1234,1235,1236,1237,1238,1243,1244,1245],{"id":13,"depth":152,"text":14},{"id":54,"depth":152,"text":55},{"id":97,"depth":152,"text":98},{"id":111,"depth":152,"text":112},{"id":551,"depth":152,"text":552,"children":1239},[1240,1242],{"id":556,"depth":174,"text":1241},"Interface: BaseGraphDB",{"id":569,"depth":174,"text":570},{"id":609,"depth":152,"text":610},{"id":808,"depth":152,"text":809},{"id":1176,"depth":152,"text":1177},"This module provides graph-based memory storage and querying for memory-augmented systems such as RAG, cognitive agents, or personal memory assistants. \u003Cbr/>It defines a clean abstraction (`BaseGraphDB`) and includes a production-ready implementation using **Neo4j**.","md",{},"/en/open_source/modules/memories/neo4j_graph_db",{"title":5,"description":108},"en/open_source/modules/memories/neo4j_graph_db","4YMB7meH7hOqYMg2DXTk7Y_fW-2lzLYpAZoLuwOjBg4",[1254,1261],{"title":1255,"path":1256,"stem":1257,"icon":1258,"framework":6,"module":6,"class":1259,"target":-1,"active":1260,"defaultOpen":1260,"children":-1,"description":-1},"Tree Textual Memory","/open_source/modules/memories/tree_textual_memory","open_source/modules/memories/tree_textual_memory","i-ri-tree-line",[],false,{"title":1262,"path":1263,"stem":1264,"icon":1265,"framework":6,"module":6,"class":1266,"target":-1,"active":1260,"defaultOpen":1260,"children":-1,"description":1267},"PolarDB Graph Database","/open_source/modules/memories/polardb_graph_db","open_source/modules/memories/polardb_graph_db","i-ri-database-line",[],"Configuration and usage of PolarDB graph database in the MemOS framework. MemOS supports using PolarDB (based on Apache AGE extension) as a graph database backend for storing and retrieving knowledge graph-style memory data. PolarDB combines the powerful capabilities of PostgreSQL with the flexibility of graph databases, making it particularly suitable for scenarios requiring both relational and graph data queries.",1770372085889]