[{"data":1,"prerenderedAt":4594},["ShallowReactive",2],{"/open_source/modules/memories/polardb_graph_db":3,"surround-/open_source/modules/memories/polardb_graph_db":4579},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":4572,"description":68,"extension":4573,"links":6,"meta":4574,"navigation":6,"path":4575,"seo":4576,"stem":4577,"__hash__":4578},"docs/en/open_source/modules/memories/polardb_graph_db.md","PolarDB Graph Database",null,{"type":8,"value":9,"toc":4545},"minimark",[10,15,55,59,69,73,78,156,160,165,433,437,665,669,1666,1670,1674,1863,1867,1980,1984,1988,2206,2210,2434,2438,2442,2676,2680,2993,2997,3091,3095,3186,3190,3198,3202,3373,3377,3779,3783,3790,4477,4481,4513,4517,4541],[11,12,14],"h2",{"id":13},"features","Features",[16,17,19],"list",{"icon":18},"ph:check-circle-duotone",[20,21,22,26,29,32,35,38,41,52],"ul",{},[23,24,25],"li",{},"Complete graph database operations: node CRUD, edge management",[23,27,28],{},"Vector embedding search: semantic retrieval with IVFFlat index support",[23,30,31],{},"Connection pool management: automatic database connection management with high concurrency support",[23,33,34],{},"Multi-tenant isolation: supports both physical and logical isolation modes",[23,36,37],{},"JSONB property storage: flexible metadata storage",[23,39,40],{},"Batch operations: supports batch insertion of nodes and edges",[23,42,43,44,48,49],{},"Automatic timestamps: automatically maintains ",[45,46,47],"code",{},"created_at"," and ",[45,50,51],{},"updated_at",[23,53,54],{},"SQL injection protection: built-in parameterized queries and string escaping",[11,56,58],{"id":57},"directory-structure","Directory Structure",[60,61,66],"pre",{"className":62,"code":64,"language":65},[63],"language-text","MemOS/\n└── src/\n    └── memos/\n        ├── configs/\n        │   └── graph_db.py              # PolarDBGraphDBConfig configuration class\n        └── graph_dbs/\n            ├── base.py                  # BaseGraphDB abstract base class\n            ├── factory.py               # GraphDBFactory factory class\n            └── polardb.py               # PolarDBGraphDB implementation\n","text",[45,67,64],{"__ignoreMap":68},"",[11,70,72],{"id":71},"quick-start","Quick Start",[74,75,77],"h3",{"id":76},"_1-install-dependencies","1. Install Dependencies",[60,79,83],{"className":80,"code":81,"language":82,"meta":68,"style":68},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Install psycopg2 driver (choose one)\npip install psycopg2-binary  # Recommended: pre-compiled version\n# or\npip install psycopg2          # Requires PostgreSQL development libraries\n\n# Install MemOS\npip install MemoryOS -U\n","bash",[45,84,85,94,111,117,130,137,143],{"__ignoreMap":68},[86,87,90],"span",{"class":88,"line":89},"line",1,[86,91,93],{"class":92},"sHwdD","# Install psycopg2 driver (choose one)\n",[86,95,97,101,105,108],{"class":88,"line":96},2,[86,98,100],{"class":99},"sBMFI","pip",[86,102,104],{"class":103},"sfazB"," install",[86,106,107],{"class":103}," psycopg2-binary",[86,109,110],{"class":92},"  # Recommended: pre-compiled version\n",[86,112,114],{"class":88,"line":113},3,[86,115,116],{"class":92},"# or\n",[86,118,120,122,124,127],{"class":88,"line":119},4,[86,121,100],{"class":99},[86,123,104],{"class":103},[86,125,126],{"class":103}," psycopg2",[86,128,129],{"class":92},"          # Requires PostgreSQL development libraries\n",[86,131,133],{"class":88,"line":132},5,[86,134,136],{"emptyLinePlaceholder":135},true,"\n",[86,138,140],{"class":88,"line":139},6,[86,141,142],{"class":92},"# Install MemOS\n",[86,144,146,148,150,153],{"class":88,"line":145},7,[86,147,100],{"class":99},[86,149,104],{"class":103},[86,151,152],{"class":103}," MemoryOS",[86,154,155],{"class":103}," -U\n",[74,157,159],{"id":158},"_2-configure-polardb","2. Configure PolarDB",[161,162,164],"h4",{"id":163},"method-1-using-configuration-file-recommended","Method 1: Using Configuration File (Recommended)",[60,166,170],{"className":167,"code":168,"language":169,"meta":68,"style":68},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"graph_db_store\": {\n    \"backend\": \"polardb\",\n    \"config\": {\n      \"host\": \"localhost\",\n      \"port\": 5432,\n      \"user\": \"postgres\",\n      \"password\": \"your_password\",\n      \"db_name\": \"memos_db\",\n      \"user_name\": \"alice\",\n      \"use_multi_db\": true,\n      \"auto_create\": false,\n      \"embedding_dimension\": 1024,\n      \"maxconn\": 100\n    }\n  }\n}\n","json",[45,171,172,178,196,219,232,254,270,290,311,332,353,368,383,400,415,421,427],{"__ignoreMap":68},[86,173,174],{"class":88,"line":89},[86,175,177],{"class":176},"sMK4o","{\n",[86,179,180,183,187,190,193],{"class":88,"line":96},[86,181,182],{"class":176},"  \"",[86,184,186],{"class":185},"spNyl","graph_db_store",[86,188,189],{"class":176},"\"",[86,191,192],{"class":176},":",[86,194,195],{"class":176}," {\n",[86,197,198,201,204,206,208,211,214,216],{"class":88,"line":113},[86,199,200],{"class":176},"    \"",[86,202,203],{"class":99},"backend",[86,205,189],{"class":176},[86,207,192],{"class":176},[86,209,210],{"class":176}," \"",[86,212,213],{"class":103},"polardb",[86,215,189],{"class":176},[86,217,218],{"class":176},",\n",[86,220,221,223,226,228,230],{"class":88,"line":119},[86,222,200],{"class":176},[86,224,225],{"class":99},"config",[86,227,189],{"class":176},[86,229,192],{"class":176},[86,231,195],{"class":176},[86,233,234,237,241,243,245,247,250,252],{"class":88,"line":132},[86,235,236],{"class":176},"      \"",[86,238,240],{"class":239},"sbssI","host",[86,242,189],{"class":176},[86,244,192],{"class":176},[86,246,210],{"class":176},[86,248,249],{"class":103},"localhost",[86,251,189],{"class":176},[86,253,218],{"class":176},[86,255,256,258,261,263,265,268],{"class":88,"line":139},[86,257,236],{"class":176},[86,259,260],{"class":239},"port",[86,262,189],{"class":176},[86,264,192],{"class":176},[86,266,267],{"class":239}," 5432",[86,269,218],{"class":176},[86,271,272,274,277,279,281,283,286,288],{"class":88,"line":145},[86,273,236],{"class":176},[86,275,276],{"class":239},"user",[86,278,189],{"class":176},[86,280,192],{"class":176},[86,282,210],{"class":176},[86,284,285],{"class":103},"postgres",[86,287,189],{"class":176},[86,289,218],{"class":176},[86,291,293,295,298,300,302,304,307,309],{"class":88,"line":292},8,[86,294,236],{"class":176},[86,296,297],{"class":239},"password",[86,299,189],{"class":176},[86,301,192],{"class":176},[86,303,210],{"class":176},[86,305,306],{"class":103},"your_password",[86,308,189],{"class":176},[86,310,218],{"class":176},[86,312,314,316,319,321,323,325,328,330],{"class":88,"line":313},9,[86,315,236],{"class":176},[86,317,318],{"class":239},"db_name",[86,320,189],{"class":176},[86,322,192],{"class":176},[86,324,210],{"class":176},[86,326,327],{"class":103},"memos_db",[86,329,189],{"class":176},[86,331,218],{"class":176},[86,333,335,337,340,342,344,346,349,351],{"class":88,"line":334},10,[86,336,236],{"class":176},[86,338,339],{"class":239},"user_name",[86,341,189],{"class":176},[86,343,192],{"class":176},[86,345,210],{"class":176},[86,347,348],{"class":103},"alice",[86,350,189],{"class":176},[86,352,218],{"class":176},[86,354,356,358,361,363,365],{"class":88,"line":355},11,[86,357,236],{"class":176},[86,359,360],{"class":239},"use_multi_db",[86,362,189],{"class":176},[86,364,192],{"class":176},[86,366,367],{"class":176}," true,\n",[86,369,371,373,376,378,380],{"class":88,"line":370},12,[86,372,236],{"class":176},[86,374,375],{"class":239},"auto_create",[86,377,189],{"class":176},[86,379,192],{"class":176},[86,381,382],{"class":176}," false,\n",[86,384,386,388,391,393,395,398],{"class":88,"line":385},13,[86,387,236],{"class":176},[86,389,390],{"class":239},"embedding_dimension",[86,392,189],{"class":176},[86,394,192],{"class":176},[86,396,397],{"class":239}," 1024",[86,399,218],{"class":176},[86,401,403,405,408,410,412],{"class":88,"line":402},14,[86,404,236],{"class":176},[86,406,407],{"class":239},"maxconn",[86,409,189],{"class":176},[86,411,192],{"class":176},[86,413,414],{"class":239}," 100\n",[86,416,418],{"class":88,"line":417},15,[86,419,420],{"class":176},"    }\n",[86,422,424],{"class":88,"line":423},16,[86,425,426],{"class":176},"  }\n",[86,428,430],{"class":88,"line":429},17,[86,431,432],{"class":176},"}\n",[161,434,436],{"id":435},"method-2-code-initialization","Method 2: Code Initialization",[60,438,442],{"className":439,"code":440,"language":441,"meta":68,"style":68},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from memos.configs.graph_db import PolarDBGraphDBConfig\nfrom memos.graph_dbs.polardb import PolarDBGraphDB\n\n# Create configuration\nconfig = PolarDBGraphDBConfig(\n    host=\"localhost\",\n    port=5432,\n    user=\"postgres\",\n    password=\"your_password\",\n    db_name=\"memos_db\",\n    user_name=\"alice\",\n    use_multi_db=True,\n    embedding_dimension=1024,\n    maxconn=100\n)\n\n# Initialize database\ngraph_db = PolarDBGraphDB(config)\n","python",[45,443,444,471,492,496,501,516,532,544,559,574,589,604,612,624,634,639,643,648],{"__ignoreMap":68},[86,445,446,450,454,457,460,462,465,468],{"class":88,"line":89},[86,447,449],{"class":448},"s7zQu","from",[86,451,453],{"class":452},"sTEyZ"," memos",[86,455,456],{"class":176},".",[86,458,459],{"class":452},"configs",[86,461,456],{"class":176},[86,463,464],{"class":452},"graph_db ",[86,466,467],{"class":448},"import",[86,469,470],{"class":452}," PolarDBGraphDBConfig\n",[86,472,473,475,477,479,482,484,487,489],{"class":88,"line":96},[86,474,449],{"class":448},[86,476,453],{"class":452},[86,478,456],{"class":176},[86,480,481],{"class":452},"graph_dbs",[86,483,456],{"class":176},[86,485,486],{"class":452},"polardb ",[86,488,467],{"class":448},[86,490,491],{"class":452}," PolarDBGraphDB\n",[86,493,494],{"class":88,"line":113},[86,495,136],{"emptyLinePlaceholder":135},[86,497,498],{"class":88,"line":119},[86,499,500],{"class":92},"# Create configuration\n",[86,502,503,506,509,513],{"class":88,"line":132},[86,504,505],{"class":452},"config ",[86,507,508],{"class":176},"=",[86,510,512],{"class":511},"s2Zo4"," PolarDBGraphDBConfig",[86,514,515],{"class":176},"(\n",[86,517,518,522,524,526,528,530],{"class":88,"line":139},[86,519,521],{"class":520},"sHdIc","    host",[86,523,508],{"class":176},[86,525,189],{"class":176},[86,527,249],{"class":103},[86,529,189],{"class":176},[86,531,218],{"class":176},[86,533,534,537,539,542],{"class":88,"line":145},[86,535,536],{"class":520},"    port",[86,538,508],{"class":176},[86,540,541],{"class":239},"5432",[86,543,218],{"class":176},[86,545,546,549,551,553,555,557],{"class":88,"line":292},[86,547,548],{"class":520},"    user",[86,550,508],{"class":176},[86,552,189],{"class":176},[86,554,285],{"class":103},[86,556,189],{"class":176},[86,558,218],{"class":176},[86,560,561,564,566,568,570,572],{"class":88,"line":313},[86,562,563],{"class":520},"    password",[86,565,508],{"class":176},[86,567,189],{"class":176},[86,569,306],{"class":103},[86,571,189],{"class":176},[86,573,218],{"class":176},[86,575,576,579,581,583,585,587],{"class":88,"line":334},[86,577,578],{"class":520},"    db_name",[86,580,508],{"class":176},[86,582,189],{"class":176},[86,584,327],{"class":103},[86,586,189],{"class":176},[86,588,218],{"class":176},[86,590,591,594,596,598,600,602],{"class":88,"line":355},[86,592,593],{"class":520},"    user_name",[86,595,508],{"class":176},[86,597,189],{"class":176},[86,599,348],{"class":103},[86,601,189],{"class":176},[86,603,218],{"class":176},[86,605,606,609],{"class":88,"line":370},[86,607,608],{"class":520},"    use_multi_db",[86,610,611],{"class":176},"=True,\n",[86,613,614,617,619,622],{"class":88,"line":385},[86,615,616],{"class":520},"    embedding_dimension",[86,618,508],{"class":176},[86,620,621],{"class":239},"1024",[86,623,218],{"class":176},[86,625,626,629,631],{"class":88,"line":402},[86,627,628],{"class":520},"    maxconn",[86,630,508],{"class":176},[86,632,633],{"class":239},"100\n",[86,635,636],{"class":88,"line":417},[86,637,638],{"class":176},")\n",[86,640,641],{"class":88,"line":423},[86,642,136],{"emptyLinePlaceholder":135},[86,644,645],{"class":88,"line":429},[86,646,647],{"class":92},"# Initialize database\n",[86,649,651,653,655,658,661,663],{"class":88,"line":650},18,[86,652,464],{"class":452},[86,654,508],{"class":176},[86,656,657],{"class":511}," PolarDBGraphDB",[86,659,660],{"class":176},"(",[86,662,225],{"class":511},[86,664,638],{"class":176},[74,666,668],{"id":667},"_3-basic-operation-examples","3. Basic Operation Examples",[60,670,672],{"className":439,"code":671,"language":441,"meta":68,"style":68},"# ========================================\n# Step 1: Add Node\n# ========================================\nnode_id = graph_db.add_node(\n    label=\"Memory\",\n    properties={\n        \"content\": \"Python is a high-level programming language\",\n        \"memory_type\": \"Knowledge\",\n        \"tags\": [\"programming\", \"python\"]\n    },\n    embedding=[0.1, 0.2, 0.3, ...],  # 1024-dimensional vector\n    user_name=\"alice\"\n)\nprint(f\"✓ Node created: {node_id}\")\n\n# ========================================\n# Step 2: Update Node\n# ========================================\ngraph_db.update_node(\n    id=node_id,\n    fields={\n        \"content\": \"Python is an interpreted, object-oriented high-level programming language\",\n        \"updated\": True\n    },\n    user_name=\"alice\"\n)\nprint(\"✓ Node updated\")\n\n# ========================================\n# Step 3: Create Relationship\n# ========================================\n# First create a second node\nnode_id_2 = graph_db.add_node(\n    label=\"Memory\",\n    properties={\n        \"content\": \"Django is a web framework for Python\",\n        \"memory_type\": \"Knowledge\"\n    },\n    embedding=[0.15, 0.25, 0.35, ...],\n    user_name=\"alice\"\n)\n\n# Create edge\nedge_id = graph_db.add_edge(\n    source_id=node_id,\n    target_id=node_id_2,\n    edge_type=\"RELATED_TO\",\n    properties={\n        \"relationship\": \"framework and language\",\n        \"confidence\": 0.95\n    },\n    user_name=\"alice\"\n)\nprint(f\"✓ Relationship created: {edge_id}\")\n\n# ========================================\n# Step 4: Vector Search\n# ========================================\nquery_embedding = [0.12, 0.22, 0.32, ...]  # Query vector\n\nresults = graph_db.search_by_embedding(\n    embedding=query_embedding,\n    top_k=5,\n    memory_type=\"Knowledge\",\n    user_name=\"alice\"\n)\n\nprint(f\"\\n🔍 Found {len(results)} similar nodes:\")\nfor node in results:\n    print(f\"  - {node.get('content')} (similarity: {node.get('score', 'N/A')})\")\n\n# ========================================\n# Step 5: Delete Node\n# ========================================\ngraph_db.delete_node(id=node_id, user_name=\"alice\")\nprint(f\"✓ Node {node_id} deleted\")\n",[45,673,674,679,684,688,705,721,729,750,770,803,808,840,853,857,883,887,891,896,900,913,925,933,953,968,973,986,991,1007,1012,1017,1023,1028,1034,1050,1065,1072,1092,1109,1114,1141,1154,1159,1164,1170,1187,1199,1212,1229,1236,1257,1272,1277,1290,1295,1318,1323,1328,1334,1339,1372,1377,1394,1406,1419,1435,1448,1453,1458,1495,1513,1588,1593,1598,1604,1609,1643],{"__ignoreMap":68},[86,675,676],{"class":88,"line":89},[86,677,678],{"class":92},"# ========================================\n",[86,680,681],{"class":88,"line":96},[86,682,683],{"class":92},"# Step 1: Add Node\n",[86,685,686],{"class":88,"line":113},[86,687,678],{"class":92},[86,689,690,693,695,698,700,703],{"class":88,"line":119},[86,691,692],{"class":452},"node_id ",[86,694,508],{"class":176},[86,696,697],{"class":452}," graph_db",[86,699,456],{"class":176},[86,701,702],{"class":511},"add_node",[86,704,515],{"class":176},[86,706,707,710,712,714,717,719],{"class":88,"line":132},[86,708,709],{"class":520},"    label",[86,711,508],{"class":176},[86,713,189],{"class":176},[86,715,716],{"class":103},"Memory",[86,718,189],{"class":176},[86,720,218],{"class":176},[86,722,723,726],{"class":88,"line":139},[86,724,725],{"class":520},"    properties",[86,727,728],{"class":176},"={\n",[86,730,731,734,737,739,741,743,746,748],{"class":88,"line":145},[86,732,733],{"class":176},"        \"",[86,735,736],{"class":103},"content",[86,738,189],{"class":176},[86,740,192],{"class":176},[86,742,210],{"class":176},[86,744,745],{"class":103},"Python is a high-level programming language",[86,747,189],{"class":176},[86,749,218],{"class":176},[86,751,752,754,757,759,761,763,766,768],{"class":88,"line":292},[86,753,733],{"class":176},[86,755,756],{"class":103},"memory_type",[86,758,189],{"class":176},[86,760,192],{"class":176},[86,762,210],{"class":176},[86,764,765],{"class":103},"Knowledge",[86,767,189],{"class":176},[86,769,218],{"class":176},[86,771,772,774,777,779,781,784,786,789,791,794,796,798,800],{"class":88,"line":313},[86,773,733],{"class":176},[86,775,776],{"class":103},"tags",[86,778,189],{"class":176},[86,780,192],{"class":176},[86,782,783],{"class":176}," [",[86,785,189],{"class":176},[86,787,788],{"class":103},"programming",[86,790,189],{"class":176},[86,792,793],{"class":176},",",[86,795,210],{"class":176},[86,797,441],{"class":103},[86,799,189],{"class":176},[86,801,802],{"class":176},"]\n",[86,804,805],{"class":88,"line":334},[86,806,807],{"class":176},"    },\n",[86,809,810,813,816,819,821,824,826,829,831,834,837],{"class":88,"line":355},[86,811,812],{"class":520},"    embedding",[86,814,815],{"class":176},"=[",[86,817,818],{"class":239},"0.1",[86,820,793],{"class":176},[86,822,823],{"class":239}," 0.2",[86,825,793],{"class":176},[86,827,828],{"class":239}," 0.3",[86,830,793],{"class":176},[86,832,833],{"class":511}," ...",[86,835,836],{"class":176},"],",[86,838,839],{"class":92},"  # 1024-dimensional vector\n",[86,841,842,844,846,848,850],{"class":88,"line":370},[86,843,593],{"class":520},[86,845,508],{"class":176},[86,847,189],{"class":176},[86,849,348],{"class":103},[86,851,852],{"class":176},"\"\n",[86,854,855],{"class":88,"line":385},[86,856,638],{"class":176},[86,858,859,862,864,867,870,873,876,879,881],{"class":88,"line":402},[86,860,861],{"class":511},"print",[86,863,660],{"class":176},[86,865,866],{"class":185},"f",[86,868,869],{"class":103},"\"✓ Node created: ",[86,871,872],{"class":239},"{",[86,874,875],{"class":511},"node_id",[86,877,878],{"class":239},"}",[86,880,189],{"class":103},[86,882,638],{"class":176},[86,884,885],{"class":88,"line":417},[86,886,136],{"emptyLinePlaceholder":135},[86,888,889],{"class":88,"line":423},[86,890,678],{"class":92},[86,892,893],{"class":88,"line":429},[86,894,895],{"class":92},"# Step 2: Update Node\n",[86,897,898],{"class":88,"line":650},[86,899,678],{"class":92},[86,901,903,906,908,911],{"class":88,"line":902},19,[86,904,905],{"class":452},"graph_db",[86,907,456],{"class":176},[86,909,910],{"class":511},"update_node",[86,912,515],{"class":176},[86,914,916,919,921,923],{"class":88,"line":915},20,[86,917,918],{"class":520},"    id",[86,920,508],{"class":176},[86,922,875],{"class":511},[86,924,218],{"class":176},[86,926,928,931],{"class":88,"line":927},21,[86,929,930],{"class":520},"    fields",[86,932,728],{"class":176},[86,934,936,938,940,942,944,946,949,951],{"class":88,"line":935},22,[86,937,733],{"class":176},[86,939,736],{"class":103},[86,941,189],{"class":176},[86,943,192],{"class":176},[86,945,210],{"class":176},[86,947,948],{"class":103},"Python is an interpreted, object-oriented high-level programming language",[86,950,189],{"class":176},[86,952,218],{"class":176},[86,954,956,958,961,963,965],{"class":88,"line":955},23,[86,957,733],{"class":176},[86,959,960],{"class":103},"updated",[86,962,189],{"class":176},[86,964,192],{"class":176},[86,966,967],{"class":176}," True\n",[86,969,971],{"class":88,"line":970},24,[86,972,807],{"class":176},[86,974,976,978,980,982,984],{"class":88,"line":975},25,[86,977,593],{"class":520},[86,979,508],{"class":176},[86,981,189],{"class":176},[86,983,348],{"class":103},[86,985,852],{"class":176},[86,987,989],{"class":88,"line":988},26,[86,990,638],{"class":176},[86,992,994,996,998,1000,1003,1005],{"class":88,"line":993},27,[86,995,861],{"class":511},[86,997,660],{"class":176},[86,999,189],{"class":176},[86,1001,1002],{"class":103},"✓ Node updated",[86,1004,189],{"class":176},[86,1006,638],{"class":176},[86,1008,1010],{"class":88,"line":1009},28,[86,1011,136],{"emptyLinePlaceholder":135},[86,1013,1015],{"class":88,"line":1014},29,[86,1016,678],{"class":92},[86,1018,1020],{"class":88,"line":1019},30,[86,1021,1022],{"class":92},"# Step 3: Create Relationship\n",[86,1024,1026],{"class":88,"line":1025},31,[86,1027,678],{"class":92},[86,1029,1031],{"class":88,"line":1030},32,[86,1032,1033],{"class":92},"# First create a second node\n",[86,1035,1037,1040,1042,1044,1046,1048],{"class":88,"line":1036},33,[86,1038,1039],{"class":452},"node_id_2 ",[86,1041,508],{"class":176},[86,1043,697],{"class":452},[86,1045,456],{"class":176},[86,1047,702],{"class":511},[86,1049,515],{"class":176},[86,1051,1053,1055,1057,1059,1061,1063],{"class":88,"line":1052},34,[86,1054,709],{"class":520},[86,1056,508],{"class":176},[86,1058,189],{"class":176},[86,1060,716],{"class":103},[86,1062,189],{"class":176},[86,1064,218],{"class":176},[86,1066,1068,1070],{"class":88,"line":1067},35,[86,1069,725],{"class":520},[86,1071,728],{"class":176},[86,1073,1075,1077,1079,1081,1083,1085,1088,1090],{"class":88,"line":1074},36,[86,1076,733],{"class":176},[86,1078,736],{"class":103},[86,1080,189],{"class":176},[86,1082,192],{"class":176},[86,1084,210],{"class":176},[86,1086,1087],{"class":103},"Django is a web framework for Python",[86,1089,189],{"class":176},[86,1091,218],{"class":176},[86,1093,1095,1097,1099,1101,1103,1105,1107],{"class":88,"line":1094},37,[86,1096,733],{"class":176},[86,1098,756],{"class":103},[86,1100,189],{"class":176},[86,1102,192],{"class":176},[86,1104,210],{"class":176},[86,1106,765],{"class":103},[86,1108,852],{"class":176},[86,1110,1112],{"class":88,"line":1111},38,[86,1113,807],{"class":176},[86,1115,1117,1119,1121,1124,1126,1129,1131,1134,1136,1138],{"class":88,"line":1116},39,[86,1118,812],{"class":520},[86,1120,815],{"class":176},[86,1122,1123],{"class":239},"0.15",[86,1125,793],{"class":176},[86,1127,1128],{"class":239}," 0.25",[86,1130,793],{"class":176},[86,1132,1133],{"class":239}," 0.35",[86,1135,793],{"class":176},[86,1137,833],{"class":511},[86,1139,1140],{"class":176},"],\n",[86,1142,1144,1146,1148,1150,1152],{"class":88,"line":1143},40,[86,1145,593],{"class":520},[86,1147,508],{"class":176},[86,1149,189],{"class":176},[86,1151,348],{"class":103},[86,1153,852],{"class":176},[86,1155,1157],{"class":88,"line":1156},41,[86,1158,638],{"class":176},[86,1160,1162],{"class":88,"line":1161},42,[86,1163,136],{"emptyLinePlaceholder":135},[86,1165,1167],{"class":88,"line":1166},43,[86,1168,1169],{"class":92},"# Create edge\n",[86,1171,1173,1176,1178,1180,1182,1185],{"class":88,"line":1172},44,[86,1174,1175],{"class":452},"edge_id ",[86,1177,508],{"class":176},[86,1179,697],{"class":452},[86,1181,456],{"class":176},[86,1183,1184],{"class":511},"add_edge",[86,1186,515],{"class":176},[86,1188,1190,1193,1195,1197],{"class":88,"line":1189},45,[86,1191,1192],{"class":520},"    source_id",[86,1194,508],{"class":176},[86,1196,875],{"class":511},[86,1198,218],{"class":176},[86,1200,1202,1205,1207,1210],{"class":88,"line":1201},46,[86,1203,1204],{"class":520},"    target_id",[86,1206,508],{"class":176},[86,1208,1209],{"class":511},"node_id_2",[86,1211,218],{"class":176},[86,1213,1215,1218,1220,1222,1225,1227],{"class":88,"line":1214},47,[86,1216,1217],{"class":520},"    edge_type",[86,1219,508],{"class":176},[86,1221,189],{"class":176},[86,1223,1224],{"class":103},"RELATED_TO",[86,1226,189],{"class":176},[86,1228,218],{"class":176},[86,1230,1232,1234],{"class":88,"line":1231},48,[86,1233,725],{"class":520},[86,1235,728],{"class":176},[86,1237,1239,1241,1244,1246,1248,1250,1253,1255],{"class":88,"line":1238},49,[86,1240,733],{"class":176},[86,1242,1243],{"class":103},"relationship",[86,1245,189],{"class":176},[86,1247,192],{"class":176},[86,1249,210],{"class":176},[86,1251,1252],{"class":103},"framework and language",[86,1254,189],{"class":176},[86,1256,218],{"class":176},[86,1258,1260,1262,1265,1267,1269],{"class":88,"line":1259},50,[86,1261,733],{"class":176},[86,1263,1264],{"class":103},"confidence",[86,1266,189],{"class":176},[86,1268,192],{"class":176},[86,1270,1271],{"class":239}," 0.95\n",[86,1273,1275],{"class":88,"line":1274},51,[86,1276,807],{"class":176},[86,1278,1280,1282,1284,1286,1288],{"class":88,"line":1279},52,[86,1281,593],{"class":520},[86,1283,508],{"class":176},[86,1285,189],{"class":176},[86,1287,348],{"class":103},[86,1289,852],{"class":176},[86,1291,1293],{"class":88,"line":1292},53,[86,1294,638],{"class":176},[86,1296,1298,1300,1302,1304,1307,1309,1312,1314,1316],{"class":88,"line":1297},54,[86,1299,861],{"class":511},[86,1301,660],{"class":176},[86,1303,866],{"class":185},[86,1305,1306],{"class":103},"\"✓ Relationship created: ",[86,1308,872],{"class":239},[86,1310,1311],{"class":511},"edge_id",[86,1313,878],{"class":239},[86,1315,189],{"class":103},[86,1317,638],{"class":176},[86,1319,1321],{"class":88,"line":1320},55,[86,1322,136],{"emptyLinePlaceholder":135},[86,1324,1326],{"class":88,"line":1325},56,[86,1327,678],{"class":92},[86,1329,1331],{"class":88,"line":1330},57,[86,1332,1333],{"class":92},"# Step 4: Vector Search\n",[86,1335,1337],{"class":88,"line":1336},58,[86,1338,678],{"class":92},[86,1340,1342,1345,1347,1349,1352,1354,1357,1359,1362,1364,1366,1369],{"class":88,"line":1341},59,[86,1343,1344],{"class":452},"query_embedding ",[86,1346,508],{"class":176},[86,1348,783],{"class":176},[86,1350,1351],{"class":239},"0.12",[86,1353,793],{"class":176},[86,1355,1356],{"class":239}," 0.22",[86,1358,793],{"class":176},[86,1360,1361],{"class":239}," 0.32",[86,1363,793],{"class":176},[86,1365,833],{"class":452},[86,1367,1368],{"class":176},"]",[86,1370,1371],{"class":92},"  # Query vector\n",[86,1373,1375],{"class":88,"line":1374},60,[86,1376,136],{"emptyLinePlaceholder":135},[86,1378,1380,1383,1385,1387,1389,1392],{"class":88,"line":1379},61,[86,1381,1382],{"class":452},"results ",[86,1384,508],{"class":176},[86,1386,697],{"class":452},[86,1388,456],{"class":176},[86,1390,1391],{"class":511},"search_by_embedding",[86,1393,515],{"class":176},[86,1395,1397,1399,1401,1404],{"class":88,"line":1396},62,[86,1398,812],{"class":520},[86,1400,508],{"class":176},[86,1402,1403],{"class":511},"query_embedding",[86,1405,218],{"class":176},[86,1407,1409,1412,1414,1417],{"class":88,"line":1408},63,[86,1410,1411],{"class":520},"    top_k",[86,1413,508],{"class":176},[86,1415,1416],{"class":239},"5",[86,1418,218],{"class":176},[86,1420,1422,1425,1427,1429,1431,1433],{"class":88,"line":1421},64,[86,1423,1424],{"class":520},"    memory_type",[86,1426,508],{"class":176},[86,1428,189],{"class":176},[86,1430,765],{"class":103},[86,1432,189],{"class":176},[86,1434,218],{"class":176},[86,1436,1438,1440,1442,1444,1446],{"class":88,"line":1437},65,[86,1439,593],{"class":520},[86,1441,508],{"class":176},[86,1443,189],{"class":176},[86,1445,348],{"class":103},[86,1447,852],{"class":176},[86,1449,1451],{"class":88,"line":1450},66,[86,1452,638],{"class":176},[86,1454,1456],{"class":88,"line":1455},67,[86,1457,136],{"emptyLinePlaceholder":135},[86,1459,1461,1463,1465,1467,1469,1472,1475,1477,1480,1482,1485,1488,1490,1493],{"class":88,"line":1460},68,[86,1462,861],{"class":511},[86,1464,660],{"class":176},[86,1466,866],{"class":185},[86,1468,189],{"class":103},[86,1470,1471],{"class":452},"\\n",[86,1473,1474],{"class":103},"🔍 Found ",[86,1476,872],{"class":239},[86,1478,1479],{"class":511},"len",[86,1481,660],{"class":176},[86,1483,1484],{"class":511},"results",[86,1486,1487],{"class":176},")",[86,1489,878],{"class":239},[86,1491,1492],{"class":103}," similar nodes:\"",[86,1494,638],{"class":176},[86,1496,1498,1501,1504,1507,1510],{"class":88,"line":1497},69,[86,1499,1500],{"class":448},"for",[86,1502,1503],{"class":452}," node ",[86,1505,1506],{"class":448},"in",[86,1508,1509],{"class":452}," results",[86,1511,1512],{"class":176},":\n",[86,1514,1516,1519,1521,1523,1526,1528,1531,1533,1536,1538,1541,1543,1545,1547,1549,1552,1554,1556,1558,1560,1562,1564,1567,1569,1571,1574,1577,1579,1581,1583,1586],{"class":88,"line":1515},70,[86,1517,1518],{"class":511},"    print",[86,1520,660],{"class":176},[86,1522,866],{"class":185},[86,1524,1525],{"class":103},"\"  - ",[86,1527,872],{"class":239},[86,1529,1530],{"class":511},"node",[86,1532,456],{"class":176},[86,1534,1535],{"class":511},"get",[86,1537,660],{"class":176},[86,1539,1540],{"class":176},"'",[86,1542,736],{"class":103},[86,1544,1540],{"class":176},[86,1546,1487],{"class":176},[86,1548,878],{"class":239},[86,1550,1551],{"class":103}," (similarity: ",[86,1553,872],{"class":239},[86,1555,1530],{"class":511},[86,1557,456],{"class":176},[86,1559,1535],{"class":511},[86,1561,660],{"class":176},[86,1563,1540],{"class":176},[86,1565,1566],{"class":103},"score",[86,1568,1540],{"class":176},[86,1570,793],{"class":176},[86,1572,1573],{"class":176}," '",[86,1575,1576],{"class":103},"N/A",[86,1578,1540],{"class":176},[86,1580,1487],{"class":176},[86,1582,878],{"class":239},[86,1584,1585],{"class":103},")\"",[86,1587,638],{"class":176},[86,1589,1591],{"class":88,"line":1590},71,[86,1592,136],{"emptyLinePlaceholder":135},[86,1594,1596],{"class":88,"line":1595},72,[86,1597,678],{"class":92},[86,1599,1601],{"class":88,"line":1600},73,[86,1602,1603],{"class":92},"# Step 5: Delete Node\n",[86,1605,1607],{"class":88,"line":1606},74,[86,1608,678],{"class":92},[86,1610,1612,1614,1616,1619,1621,1624,1626,1628,1630,1633,1635,1637,1639,1641],{"class":88,"line":1611},75,[86,1613,905],{"class":452},[86,1615,456],{"class":176},[86,1617,1618],{"class":511},"delete_node",[86,1620,660],{"class":176},[86,1622,1623],{"class":520},"id",[86,1625,508],{"class":176},[86,1627,875],{"class":511},[86,1629,793],{"class":176},[86,1631,1632],{"class":520}," user_name",[86,1634,508],{"class":176},[86,1636,189],{"class":176},[86,1638,348],{"class":103},[86,1640,189],{"class":176},[86,1642,638],{"class":176},[86,1644,1646,1648,1650,1652,1655,1657,1659,1661,1664],{"class":88,"line":1645},76,[86,1647,861],{"class":511},[86,1649,660],{"class":176},[86,1651,866],{"class":185},[86,1653,1654],{"class":103},"\"✓ Node ",[86,1656,872],{"class":239},[86,1658,875],{"class":511},[86,1660,878],{"class":239},[86,1662,1663],{"class":103}," deleted\"",[86,1665,638],{"class":176},[11,1667,1669],{"id":1668},"configuration-details","Configuration Details",[74,1671,1673],{"id":1672},"polardbgraphdbconfig-parameters","PolarDBGraphDBConfig Parameters",[1675,1676,1677,1699],"table",{},[1678,1679,1680],"thead",{},[1681,1682,1683,1687,1690,1693,1696],"tr",{},[1684,1685,1686],"th",{},"Parameter",[1684,1688,1689],{},"Type",[1684,1691,1692],{},"Default",[1684,1694,1695],{},"Required",[1684,1697,1698],{},"Description",[1700,1701,1702,1721,1738,1753,1768,1783,1799,1816,1832,1847],"tbody",{},[1681,1703,1704,1709,1712,1715,1718],{},[1705,1706,1707],"td",{},[45,1708,240],{},[1705,1710,1711],{},"str",[1705,1713,1714],{},"-",[1705,1716,1717],{},"✓",[1705,1719,1720],{},"Database host address",[1681,1722,1723,1727,1730,1732,1735],{},[1705,1724,1725],{},[45,1726,260],{},[1705,1728,1729],{},"int",[1705,1731,541],{},[1705,1733,1734],{},"✗",[1705,1736,1737],{},"Database port",[1681,1739,1740,1744,1746,1748,1750],{},[1705,1741,1742],{},[45,1743,276],{},[1705,1745,1711],{},[1705,1747,1714],{},[1705,1749,1717],{},[1705,1751,1752],{},"Database username",[1681,1754,1755,1759,1761,1763,1765],{},[1705,1756,1757],{},[45,1758,297],{},[1705,1760,1711],{},[1705,1762,1714],{},[1705,1764,1717],{},[1705,1766,1767],{},"Database password",[1681,1769,1770,1774,1776,1778,1780],{},[1705,1771,1772],{},[45,1773,318],{},[1705,1775,1711],{},[1705,1777,1714],{},[1705,1779,1717],{},[1705,1781,1782],{},"Target database name",[1681,1784,1785,1789,1791,1794,1796],{},[1705,1786,1787],{},[45,1788,339],{},[1705,1790,1711],{},[1705,1792,1793],{},"None",[1705,1795,1734],{},[1705,1797,1798],{},"Tenant identifier (for logical isolation)",[1681,1800,1801,1805,1808,1811,1813],{},[1705,1802,1803],{},[45,1804,360],{},[1705,1806,1807],{},"bool",[1705,1809,1810],{},"True",[1705,1812,1734],{},[1705,1814,1815],{},"Whether to use multi-database physical isolation",[1681,1817,1818,1822,1824,1827,1829],{},[1705,1819,1820],{},[45,1821,375],{},[1705,1823,1807],{},[1705,1825,1826],{},"False",[1705,1828,1734],{},[1705,1830,1831],{},"Whether to automatically create database",[1681,1833,1834,1838,1840,1842,1844],{},[1705,1835,1836],{},[45,1837,390],{},[1705,1839,1729],{},[1705,1841,621],{},[1705,1843,1734],{},[1705,1845,1846],{},"Vector embedding dimension",[1681,1848,1849,1853,1855,1858,1860],{},[1705,1850,1851],{},[45,1852,407],{},[1705,1854,1729],{},[1705,1856,1857],{},"100",[1705,1859,1734],{},[1705,1861,1862],{},"Maximum connections in connection pool",[74,1864,1866],{"id":1865},"multi-tenant-mode-comparison","Multi-Tenant Mode Comparison",[1675,1868,1869,1893],{},[1678,1870,1871],{},[1681,1872,1873,1876,1885],{},[1684,1874,1875],{},"Feature",[1684,1877,1878,1879,660,1882,1487],{},"Physical Isolation",[1880,1881],"br",{},[45,1883,1884],{},"use_multi_db=True",[1684,1886,1887,1888,660,1890,1487],{},"Logical Isolation",[1880,1889],{},[45,1891,1892],{},"use_multi_db=False",[1700,1894,1895,1909,1928,1941,1954,1967],{},[1681,1896,1897,1903,1906],{},[1705,1898,1899],{},[1900,1901,1902],"strong",{},"Isolation Level",[1705,1904,1905],{},"Database level",[1705,1907,1908],{},"Application layer tag filtering",[1681,1910,1911,1916,1923],{},[1705,1912,1913],{},[1900,1914,1915],{},"Configuration Requirements",[1705,1917,1918,1920,1921],{},[45,1919,318],{}," typically equals ",[45,1922,339],{},[1705,1924,1925,1926],{},"Must provide ",[45,1927,339],{},[1681,1929,1930,1935,1938],{},[1705,1931,1932],{},[1900,1933,1934],{},"Performance",[1705,1936,1937],{},"Better (independent resources)",[1705,1939,1940],{},"Good (shared resources)",[1681,1942,1943,1948,1951],{},[1705,1944,1945],{},[1900,1946,1947],{},"Cost",[1705,1949,1950],{},"High (independent DB per tenant)",[1705,1952,1953],{},"Low (shared database)",[1681,1955,1956,1961,1964],{},[1705,1957,1958],{},[1900,1959,1960],{},"Use Cases",[1705,1962,1963],{},"Enterprise customers, high security requirements",[1705,1965,1966],{},"SaaS multi-tenant, development testing",[1681,1968,1969,1974,1977],{},[1705,1970,1971],{},[1900,1972,1973],{},"Data Migration",[1705,1975,1976],{},"Convenient (full database export)",[1705,1978,1979],{},"Requires filtering by tags",[74,1981,1983],{"id":1982},"configuration-examples","Configuration Examples",[161,1985,1987],{"id":1986},"example-1-physical-isolation-recommended-for-enterprise","Example 1: Physical Isolation (Recommended for Enterprise)",[60,1989,1991],{"className":167,"code":1990,"language":169,"meta":68,"style":68},"{\n  \"graph_db_store\": {\n    \"backend\": \"polardb\",\n    \"config\": {\n      \"host\": \"prod-polardb.example.com\",\n      \"port\": 5432,\n      \"user\": \"admin\",\n      \"password\": \"secure_password\",\n      \"db_name\": \"customer_001\",\n      \"user_name\": null,\n      \"use_multi_db\": true,\n      \"auto_create\": false,\n      \"embedding_dimension\": 1536,\n      \"maxconn\": 200\n    }\n  }\n}\n",[45,1992,1993,1997,2009,2027,2039,2058,2072,2091,2110,2129,2142,2154,2166,2181,2194,2198,2202],{"__ignoreMap":68},[86,1994,1995],{"class":88,"line":89},[86,1996,177],{"class":176},[86,1998,1999,2001,2003,2005,2007],{"class":88,"line":96},[86,2000,182],{"class":176},[86,2002,186],{"class":185},[86,2004,189],{"class":176},[86,2006,192],{"class":176},[86,2008,195],{"class":176},[86,2010,2011,2013,2015,2017,2019,2021,2023,2025],{"class":88,"line":113},[86,2012,200],{"class":176},[86,2014,203],{"class":99},[86,2016,189],{"class":176},[86,2018,192],{"class":176},[86,2020,210],{"class":176},[86,2022,213],{"class":103},[86,2024,189],{"class":176},[86,2026,218],{"class":176},[86,2028,2029,2031,2033,2035,2037],{"class":88,"line":119},[86,2030,200],{"class":176},[86,2032,225],{"class":99},[86,2034,189],{"class":176},[86,2036,192],{"class":176},[86,2038,195],{"class":176},[86,2040,2041,2043,2045,2047,2049,2051,2054,2056],{"class":88,"line":132},[86,2042,236],{"class":176},[86,2044,240],{"class":239},[86,2046,189],{"class":176},[86,2048,192],{"class":176},[86,2050,210],{"class":176},[86,2052,2053],{"class":103},"prod-polardb.example.com",[86,2055,189],{"class":176},[86,2057,218],{"class":176},[86,2059,2060,2062,2064,2066,2068,2070],{"class":88,"line":139},[86,2061,236],{"class":176},[86,2063,260],{"class":239},[86,2065,189],{"class":176},[86,2067,192],{"class":176},[86,2069,267],{"class":239},[86,2071,218],{"class":176},[86,2073,2074,2076,2078,2080,2082,2084,2087,2089],{"class":88,"line":145},[86,2075,236],{"class":176},[86,2077,276],{"class":239},[86,2079,189],{"class":176},[86,2081,192],{"class":176},[86,2083,210],{"class":176},[86,2085,2086],{"class":103},"admin",[86,2088,189],{"class":176},[86,2090,218],{"class":176},[86,2092,2093,2095,2097,2099,2101,2103,2106,2108],{"class":88,"line":292},[86,2094,236],{"class":176},[86,2096,297],{"class":239},[86,2098,189],{"class":176},[86,2100,192],{"class":176},[86,2102,210],{"class":176},[86,2104,2105],{"class":103},"secure_password",[86,2107,189],{"class":176},[86,2109,218],{"class":176},[86,2111,2112,2114,2116,2118,2120,2122,2125,2127],{"class":88,"line":313},[86,2113,236],{"class":176},[86,2115,318],{"class":239},[86,2117,189],{"class":176},[86,2119,192],{"class":176},[86,2121,210],{"class":176},[86,2123,2124],{"class":103},"customer_001",[86,2126,189],{"class":176},[86,2128,218],{"class":176},[86,2130,2131,2133,2135,2137,2139],{"class":88,"line":334},[86,2132,236],{"class":176},[86,2134,339],{"class":239},[86,2136,189],{"class":176},[86,2138,192],{"class":176},[86,2140,2141],{"class":176}," null,\n",[86,2143,2144,2146,2148,2150,2152],{"class":88,"line":355},[86,2145,236],{"class":176},[86,2147,360],{"class":239},[86,2149,189],{"class":176},[86,2151,192],{"class":176},[86,2153,367],{"class":176},[86,2155,2156,2158,2160,2162,2164],{"class":88,"line":370},[86,2157,236],{"class":176},[86,2159,375],{"class":239},[86,2161,189],{"class":176},[86,2163,192],{"class":176},[86,2165,382],{"class":176},[86,2167,2168,2170,2172,2174,2176,2179],{"class":88,"line":385},[86,2169,236],{"class":176},[86,2171,390],{"class":239},[86,2173,189],{"class":176},[86,2175,192],{"class":176},[86,2177,2178],{"class":239}," 1536",[86,2180,218],{"class":176},[86,2182,2183,2185,2187,2189,2191],{"class":88,"line":402},[86,2184,236],{"class":176},[86,2186,407],{"class":239},[86,2188,189],{"class":176},[86,2190,192],{"class":176},[86,2192,2193],{"class":239}," 200\n",[86,2195,2196],{"class":88,"line":417},[86,2197,420],{"class":176},[86,2199,2200],{"class":88,"line":423},[86,2201,426],{"class":176},[86,2203,2204],{"class":88,"line":429},[86,2205,432],{"class":176},[161,2207,2209],{"id":2208},"example-2-logical-isolation-recommended-for-saas","Example 2: Logical Isolation (Recommended for SaaS)",[60,2211,2213],{"className":167,"code":2212,"language":169,"meta":68,"style":68},"{\n  \"graph_db_store\": {\n    \"backend\": \"polardb\",\n    \"config\": {\n      \"host\": \"shared-polardb.example.com\",\n      \"port\": 5432,\n      \"user\": \"app_user\",\n      \"password\": \"app_password\",\n      \"db_name\": \"shared_memos\",\n      \"user_name\": \"tenant_alice\",\n      \"use_multi_db\": false,\n      \"auto_create\": false,\n      \"embedding_dimension\": 768,\n      \"maxconn\": 50\n    }\n  }\n}\n",[45,2214,2215,2219,2231,2249,2261,2280,2294,2313,2332,2351,2370,2382,2394,2409,2422,2426,2430],{"__ignoreMap":68},[86,2216,2217],{"class":88,"line":89},[86,2218,177],{"class":176},[86,2220,2221,2223,2225,2227,2229],{"class":88,"line":96},[86,2222,182],{"class":176},[86,2224,186],{"class":185},[86,2226,189],{"class":176},[86,2228,192],{"class":176},[86,2230,195],{"class":176},[86,2232,2233,2235,2237,2239,2241,2243,2245,2247],{"class":88,"line":113},[86,2234,200],{"class":176},[86,2236,203],{"class":99},[86,2238,189],{"class":176},[86,2240,192],{"class":176},[86,2242,210],{"class":176},[86,2244,213],{"class":103},[86,2246,189],{"class":176},[86,2248,218],{"class":176},[86,2250,2251,2253,2255,2257,2259],{"class":88,"line":119},[86,2252,200],{"class":176},[86,2254,225],{"class":99},[86,2256,189],{"class":176},[86,2258,192],{"class":176},[86,2260,195],{"class":176},[86,2262,2263,2265,2267,2269,2271,2273,2276,2278],{"class":88,"line":132},[86,2264,236],{"class":176},[86,2266,240],{"class":239},[86,2268,189],{"class":176},[86,2270,192],{"class":176},[86,2272,210],{"class":176},[86,2274,2275],{"class":103},"shared-polardb.example.com",[86,2277,189],{"class":176},[86,2279,218],{"class":176},[86,2281,2282,2284,2286,2288,2290,2292],{"class":88,"line":139},[86,2283,236],{"class":176},[86,2285,260],{"class":239},[86,2287,189],{"class":176},[86,2289,192],{"class":176},[86,2291,267],{"class":239},[86,2293,218],{"class":176},[86,2295,2296,2298,2300,2302,2304,2306,2309,2311],{"class":88,"line":145},[86,2297,236],{"class":176},[86,2299,276],{"class":239},[86,2301,189],{"class":176},[86,2303,192],{"class":176},[86,2305,210],{"class":176},[86,2307,2308],{"class":103},"app_user",[86,2310,189],{"class":176},[86,2312,218],{"class":176},[86,2314,2315,2317,2319,2321,2323,2325,2328,2330],{"class":88,"line":292},[86,2316,236],{"class":176},[86,2318,297],{"class":239},[86,2320,189],{"class":176},[86,2322,192],{"class":176},[86,2324,210],{"class":176},[86,2326,2327],{"class":103},"app_password",[86,2329,189],{"class":176},[86,2331,218],{"class":176},[86,2333,2334,2336,2338,2340,2342,2344,2347,2349],{"class":88,"line":313},[86,2335,236],{"class":176},[86,2337,318],{"class":239},[86,2339,189],{"class":176},[86,2341,192],{"class":176},[86,2343,210],{"class":176},[86,2345,2346],{"class":103},"shared_memos",[86,2348,189],{"class":176},[86,2350,218],{"class":176},[86,2352,2353,2355,2357,2359,2361,2363,2366,2368],{"class":88,"line":334},[86,2354,236],{"class":176},[86,2356,339],{"class":239},[86,2358,189],{"class":176},[86,2360,192],{"class":176},[86,2362,210],{"class":176},[86,2364,2365],{"class":103},"tenant_alice",[86,2367,189],{"class":176},[86,2369,218],{"class":176},[86,2371,2372,2374,2376,2378,2380],{"class":88,"line":355},[86,2373,236],{"class":176},[86,2375,360],{"class":239},[86,2377,189],{"class":176},[86,2379,192],{"class":176},[86,2381,382],{"class":176},[86,2383,2384,2386,2388,2390,2392],{"class":88,"line":370},[86,2385,236],{"class":176},[86,2387,375],{"class":239},[86,2389,189],{"class":176},[86,2391,192],{"class":176},[86,2393,382],{"class":176},[86,2395,2396,2398,2400,2402,2404,2407],{"class":88,"line":385},[86,2397,236],{"class":176},[86,2399,390],{"class":239},[86,2401,189],{"class":176},[86,2403,192],{"class":176},[86,2405,2406],{"class":239}," 768",[86,2408,218],{"class":176},[86,2410,2411,2413,2415,2417,2419],{"class":88,"line":402},[86,2412,236],{"class":176},[86,2414,407],{"class":239},[86,2416,189],{"class":176},[86,2418,192],{"class":176},[86,2420,2421],{"class":239}," 50\n",[86,2423,2424],{"class":88,"line":417},[86,2425,420],{"class":176},[86,2427,2428],{"class":88,"line":423},[86,2429,426],{"class":176},[86,2431,2432],{"class":88,"line":429},[86,2433,432],{"class":176},[11,2435,2437],{"id":2436},"advanced-features","Advanced Features",[74,2439,2441],{"id":2440},"_1-batch-insert-nodes","1. Batch Insert Nodes",[60,2443,2445],{"className":439,"code":2444,"language":441,"meta":68,"style":68},"# Batch add nodes (high performance)\nnodes_data = [\n    {\n        \"label\": \"Memory\",\n        \"properties\": {\"content\": f\"Node {i}\", \"memory_type\": \"Test\"},\n        \"embedding\": [0.1 * i] * 1024,\n    }\n    for i in range(100)\n]\n\nnode_ids = graph_db.add_nodes_batch(\n    nodes=nodes_data,\n    user_name=\"alice\"\n)\nprint(f\"✓ Batch created {len(node_ids)} nodes\")\n",[45,2446,2447,2452,2462,2467,2486,2543,2572,2576,2595,2599,2603,2619,2631,2643,2647],{"__ignoreMap":68},[86,2448,2449],{"class":88,"line":89},[86,2450,2451],{"class":92},"# Batch add nodes (high performance)\n",[86,2453,2454,2457,2459],{"class":88,"line":96},[86,2455,2456],{"class":452},"nodes_data ",[86,2458,508],{"class":176},[86,2460,2461],{"class":176}," [\n",[86,2463,2464],{"class":88,"line":113},[86,2465,2466],{"class":176},"    {\n",[86,2468,2469,2471,2474,2476,2478,2480,2482,2484],{"class":88,"line":119},[86,2470,733],{"class":176},[86,2472,2473],{"class":103},"label",[86,2475,189],{"class":176},[86,2477,192],{"class":176},[86,2479,210],{"class":176},[86,2481,716],{"class":103},[86,2483,189],{"class":176},[86,2485,218],{"class":176},[86,2487,2488,2490,2493,2495,2497,2500,2502,2504,2506,2508,2511,2514,2516,2519,2521,2523,2525,2527,2529,2531,2533,2535,2538,2540],{"class":88,"line":132},[86,2489,733],{"class":176},[86,2491,2492],{"class":103},"properties",[86,2494,189],{"class":176},[86,2496,192],{"class":176},[86,2498,2499],{"class":176}," {",[86,2501,189],{"class":176},[86,2503,736],{"class":103},[86,2505,189],{"class":176},[86,2507,192],{"class":176},[86,2509,2510],{"class":185}," f",[86,2512,2513],{"class":103},"\"Node ",[86,2515,872],{"class":239},[86,2517,2518],{"class":452},"i",[86,2520,878],{"class":239},[86,2522,189],{"class":103},[86,2524,793],{"class":176},[86,2526,210],{"class":176},[86,2528,756],{"class":103},[86,2530,189],{"class":176},[86,2532,192],{"class":176},[86,2534,210],{"class":176},[86,2536,2537],{"class":103},"Test",[86,2539,189],{"class":176},[86,2541,2542],{"class":176},"},\n",[86,2544,2545,2547,2550,2552,2554,2556,2558,2561,2564,2566,2568,2570],{"class":88,"line":139},[86,2546,733],{"class":176},[86,2548,2549],{"class":103},"embedding",[86,2551,189],{"class":176},[86,2553,192],{"class":176},[86,2555,783],{"class":176},[86,2557,818],{"class":239},[86,2559,2560],{"class":176}," *",[86,2562,2563],{"class":452}," i",[86,2565,1368],{"class":176},[86,2567,2560],{"class":176},[86,2569,397],{"class":239},[86,2571,218],{"class":176},[86,2573,2574],{"class":88,"line":145},[86,2575,420],{"class":176},[86,2577,2578,2581,2584,2586,2589,2591,2593],{"class":88,"line":292},[86,2579,2580],{"class":448},"    for",[86,2582,2583],{"class":452}," i ",[86,2585,1506],{"class":448},[86,2587,2588],{"class":511}," range",[86,2590,660],{"class":176},[86,2592,1857],{"class":239},[86,2594,638],{"class":176},[86,2596,2597],{"class":88,"line":313},[86,2598,802],{"class":176},[86,2600,2601],{"class":88,"line":334},[86,2602,136],{"emptyLinePlaceholder":135},[86,2604,2605,2608,2610,2612,2614,2617],{"class":88,"line":355},[86,2606,2607],{"class":452},"node_ids ",[86,2609,508],{"class":176},[86,2611,697],{"class":452},[86,2613,456],{"class":176},[86,2615,2616],{"class":511},"add_nodes_batch",[86,2618,515],{"class":176},[86,2620,2621,2624,2626,2629],{"class":88,"line":370},[86,2622,2623],{"class":520},"    nodes",[86,2625,508],{"class":176},[86,2627,2628],{"class":511},"nodes_data",[86,2630,218],{"class":176},[86,2632,2633,2635,2637,2639,2641],{"class":88,"line":385},[86,2634,593],{"class":520},[86,2636,508],{"class":176},[86,2638,189],{"class":176},[86,2640,348],{"class":103},[86,2642,852],{"class":176},[86,2644,2645],{"class":88,"line":402},[86,2646,638],{"class":176},[86,2648,2649,2651,2653,2655,2658,2660,2662,2664,2667,2669,2671,2674],{"class":88,"line":417},[86,2650,861],{"class":511},[86,2652,660],{"class":176},[86,2654,866],{"class":185},[86,2656,2657],{"class":103},"\"✓ Batch created ",[86,2659,872],{"class":239},[86,2661,1479],{"class":511},[86,2663,660],{"class":176},[86,2665,2666],{"class":511},"node_ids",[86,2668,1487],{"class":176},[86,2670,878],{"class":239},[86,2672,2673],{"class":103}," nodes\"",[86,2675,638],{"class":176},[74,2677,2679],{"id":2678},"_2-complex-query-examples","2. Complex Query Examples",[60,2681,2683],{"className":439,"code":2682,"language":441,"meta":68,"style":68},"# Find memories of specific type and sort by time\ndef get_recent_memories(graph_db, memory_type, limit=10):\n    \"\"\"Get recent memory nodes\"\"\"\n    query = f\"\"\"\n        SELECT * FROM \"{graph_db.db_name}_graph\".\"Memory\"\n        WHERE properties->>'memory_type' = %s\n          AND properties->>'user_name' = %s\n        ORDER BY updated_at DESC\n        LIMIT %s\n    \"\"\"\n    \n    conn = graph_db._get_connection()\n    try:\n        with conn.cursor() as cursor:\n            cursor.execute(query, [memory_type, \"alice\", limit])\n            results = cursor.fetchall()\n            return results\n    finally:\n        graph_db._return_connection(conn)\n\n# Usage example\nrecent = get_recent_memories(graph_db, \"WorkingMemory\", limit=5)\nprint(f\"Recent 5 working memories: {len(recent)} items\")\n",[45,2684,2685,2690,2720,2731,2742,2761,2766,2771,2776,2781,2786,2791,2808,2815,2839,2875,2891,2899,2906,2923,2927,2932,2964],{"__ignoreMap":68},[86,2686,2687],{"class":88,"line":89},[86,2688,2689],{"class":92},"# Find memories of specific type and sort by time\n",[86,2691,2692,2695,2698,2700,2702,2704,2707,2709,2712,2714,2717],{"class":88,"line":96},[86,2693,2694],{"class":185},"def",[86,2696,2697],{"class":511}," get_recent_memories",[86,2699,660],{"class":176},[86,2701,905],{"class":520},[86,2703,793],{"class":176},[86,2705,2706],{"class":520}," memory_type",[86,2708,793],{"class":176},[86,2710,2711],{"class":520}," limit",[86,2713,508],{"class":176},[86,2715,2716],{"class":239},"10",[86,2718,2719],{"class":176},"):\n",[86,2721,2722,2725,2728],{"class":88,"line":113},[86,2723,2724],{"class":448},"    \"\"\"",[86,2726,2727],{"class":92},"Get recent memory nodes",[86,2729,2730],{"class":448},"\"\"\"\n",[86,2732,2733,2736,2738,2740],{"class":88,"line":119},[86,2734,2735],{"class":452},"    query ",[86,2737,508],{"class":176},[86,2739,2510],{"class":185},[86,2741,2730],{"class":103},[86,2743,2744,2747,2749,2751,2753,2756,2758],{"class":88,"line":132},[86,2745,2746],{"class":103},"        SELECT * FROM \"",[86,2748,872],{"class":239},[86,2750,905],{"class":452},[86,2752,456],{"class":176},[86,2754,318],{"class":2755},"swJcz",[86,2757,878],{"class":239},[86,2759,2760],{"class":103},"_graph\".\"Memory\"\n",[86,2762,2763],{"class":88,"line":139},[86,2764,2765],{"class":103},"        WHERE properties->>'memory_type' = %s\n",[86,2767,2768],{"class":88,"line":145},[86,2769,2770],{"class":103},"          AND properties->>'user_name' = %s\n",[86,2772,2773],{"class":88,"line":292},[86,2774,2775],{"class":103},"        ORDER BY updated_at DESC\n",[86,2777,2778],{"class":88,"line":313},[86,2779,2780],{"class":103},"        LIMIT %s\n",[86,2782,2783],{"class":88,"line":334},[86,2784,2785],{"class":103},"    \"\"\"\n",[86,2787,2788],{"class":88,"line":355},[86,2789,2790],{"class":452},"    \n",[86,2792,2793,2796,2798,2800,2802,2805],{"class":88,"line":370},[86,2794,2795],{"class":452},"    conn ",[86,2797,508],{"class":176},[86,2799,697],{"class":452},[86,2801,456],{"class":176},[86,2803,2804],{"class":511},"_get_connection",[86,2806,2807],{"class":176},"()\n",[86,2809,2810,2813],{"class":88,"line":385},[86,2811,2812],{"class":448},"    try",[86,2814,1512],{"class":176},[86,2816,2817,2820,2823,2825,2828,2831,2834,2837],{"class":88,"line":402},[86,2818,2819],{"class":448},"        with",[86,2821,2822],{"class":452}," conn",[86,2824,456],{"class":176},[86,2826,2827],{"class":511},"cursor",[86,2829,2830],{"class":176},"()",[86,2832,2833],{"class":448}," as",[86,2835,2836],{"class":452}," cursor",[86,2838,1512],{"class":176},[86,2840,2841,2844,2846,2849,2851,2854,2856,2858,2860,2862,2864,2866,2868,2870,2872],{"class":88,"line":417},[86,2842,2843],{"class":452},"            cursor",[86,2845,456],{"class":176},[86,2847,2848],{"class":511},"execute",[86,2850,660],{"class":176},[86,2852,2853],{"class":511},"query",[86,2855,793],{"class":176},[86,2857,783],{"class":176},[86,2859,756],{"class":511},[86,2861,793],{"class":176},[86,2863,210],{"class":176},[86,2865,348],{"class":103},[86,2867,189],{"class":176},[86,2869,793],{"class":176},[86,2871,2711],{"class":511},[86,2873,2874],{"class":176},"])\n",[86,2876,2877,2880,2882,2884,2886,2889],{"class":88,"line":423},[86,2878,2879],{"class":452},"            results ",[86,2881,508],{"class":176},[86,2883,2836],{"class":452},[86,2885,456],{"class":176},[86,2887,2888],{"class":511},"fetchall",[86,2890,2807],{"class":176},[86,2892,2893,2896],{"class":88,"line":429},[86,2894,2895],{"class":448},"            return",[86,2897,2898],{"class":452}," results\n",[86,2900,2901,2904],{"class":88,"line":650},[86,2902,2903],{"class":448},"    finally",[86,2905,1512],{"class":176},[86,2907,2908,2911,2913,2916,2918,2921],{"class":88,"line":902},[86,2909,2910],{"class":452},"        graph_db",[86,2912,456],{"class":176},[86,2914,2915],{"class":511},"_return_connection",[86,2917,660],{"class":176},[86,2919,2920],{"class":511},"conn",[86,2922,638],{"class":176},[86,2924,2925],{"class":88,"line":915},[86,2926,136],{"emptyLinePlaceholder":135},[86,2928,2929],{"class":88,"line":927},[86,2930,2931],{"class":92},"# Usage example\n",[86,2933,2934,2937,2939,2941,2943,2945,2947,2949,2952,2954,2956,2958,2960,2962],{"class":88,"line":935},[86,2935,2936],{"class":452},"recent ",[86,2938,508],{"class":176},[86,2940,2697],{"class":511},[86,2942,660],{"class":176},[86,2944,905],{"class":511},[86,2946,793],{"class":176},[86,2948,210],{"class":176},[86,2950,2951],{"class":103},"WorkingMemory",[86,2953,189],{"class":176},[86,2955,793],{"class":176},[86,2957,2711],{"class":520},[86,2959,508],{"class":176},[86,2961,1416],{"class":239},[86,2963,638],{"class":176},[86,2965,2966,2968,2970,2972,2975,2977,2979,2981,2984,2986,2988,2991],{"class":88,"line":955},[86,2967,861],{"class":511},[86,2969,660],{"class":176},[86,2971,866],{"class":185},[86,2973,2974],{"class":103},"\"Recent 5 working memories: ",[86,2976,872],{"class":239},[86,2978,1479],{"class":511},[86,2980,660],{"class":176},[86,2982,2983],{"class":511},"recent",[86,2985,1487],{"class":176},[86,2987,878],{"class":239},[86,2989,2990],{"class":103}," items\"",[86,2992,638],{"class":176},[74,2994,2996],{"id":2995},"_3-vector-index-optimization","3. Vector Index Optimization",[60,2998,3000],{"className":439,"code":2999,"language":441,"meta":68,"style":68},"# Create or update vector index\ngraph_db.create_index(\n    label=\"Memory\",\n    vector_property=\"embedding\",\n    dimensions=1024,\n    index_name=\"memory_vector_index\"\n)\nprint(\"✓ Vector index optimized\")\n",[45,3001,3002,3007,3018,3032,3047,3058,3072,3076],{"__ignoreMap":68},[86,3003,3004],{"class":88,"line":89},[86,3005,3006],{"class":92},"# Create or update vector index\n",[86,3008,3009,3011,3013,3016],{"class":88,"line":96},[86,3010,905],{"class":452},[86,3012,456],{"class":176},[86,3014,3015],{"class":511},"create_index",[86,3017,515],{"class":176},[86,3019,3020,3022,3024,3026,3028,3030],{"class":88,"line":113},[86,3021,709],{"class":520},[86,3023,508],{"class":176},[86,3025,189],{"class":176},[86,3027,716],{"class":103},[86,3029,189],{"class":176},[86,3031,218],{"class":176},[86,3033,3034,3037,3039,3041,3043,3045],{"class":88,"line":119},[86,3035,3036],{"class":520},"    vector_property",[86,3038,508],{"class":176},[86,3040,189],{"class":176},[86,3042,2549],{"class":103},[86,3044,189],{"class":176},[86,3046,218],{"class":176},[86,3048,3049,3052,3054,3056],{"class":88,"line":132},[86,3050,3051],{"class":520},"    dimensions",[86,3053,508],{"class":176},[86,3055,621],{"class":239},[86,3057,218],{"class":176},[86,3059,3060,3063,3065,3067,3070],{"class":88,"line":139},[86,3061,3062],{"class":520},"    index_name",[86,3064,508],{"class":176},[86,3066,189],{"class":176},[86,3068,3069],{"class":103},"memory_vector_index",[86,3071,852],{"class":176},[86,3073,3074],{"class":88,"line":145},[86,3075,638],{"class":176},[86,3077,3078,3080,3082,3084,3087,3089],{"class":88,"line":292},[86,3079,861],{"class":511},[86,3081,660],{"class":176},[86,3083,189],{"class":176},[86,3085,3086],{"class":103},"✓ Vector index optimized",[86,3088,189],{"class":176},[86,3090,638],{"class":176},[74,3092,3094],{"id":3093},"_4-connection-pool-monitoring","4. Connection Pool Monitoring",[60,3096,3098],{"className":439,"code":3097,"language":441,"meta":68,"style":68},"# View connection pool status (for debugging only)\nimport logging\nlogging.basicConfig(level=logging.DEBUG)\n\n# Detailed logs will be output when acquiring connection\nconn = graph_db._get_connection()\n# [DEBUG] [_get_connection] Successfully acquired connection from pool\ngraph_db._return_connection(conn)\n# [DEBUG] [_return_connection] Successfully returned connection to pool\n",[45,3099,3100,3105,3112,3138,3142,3147,3162,3167,3181],{"__ignoreMap":68},[86,3101,3102],{"class":88,"line":89},[86,3103,3104],{"class":92},"# View connection pool status (for debugging only)\n",[86,3106,3107,3109],{"class":88,"line":96},[86,3108,467],{"class":448},[86,3110,3111],{"class":452}," logging\n",[86,3113,3114,3117,3119,3122,3124,3127,3129,3131,3133,3136],{"class":88,"line":113},[86,3115,3116],{"class":452},"logging",[86,3118,456],{"class":176},[86,3120,3121],{"class":511},"basicConfig",[86,3123,660],{"class":176},[86,3125,3126],{"class":520},"level",[86,3128,508],{"class":176},[86,3130,3116],{"class":511},[86,3132,456],{"class":176},[86,3134,3135],{"class":2755},"DEBUG",[86,3137,638],{"class":176},[86,3139,3140],{"class":88,"line":119},[86,3141,136],{"emptyLinePlaceholder":135},[86,3143,3144],{"class":88,"line":132},[86,3145,3146],{"class":92},"# Detailed logs will be output when acquiring connection\n",[86,3148,3149,3152,3154,3156,3158,3160],{"class":88,"line":139},[86,3150,3151],{"class":452},"conn ",[86,3153,508],{"class":176},[86,3155,697],{"class":452},[86,3157,456],{"class":176},[86,3159,2804],{"class":511},[86,3161,2807],{"class":176},[86,3163,3164],{"class":88,"line":145},[86,3165,3166],{"class":92},"# [DEBUG] [_get_connection] Successfully acquired connection from pool\n",[86,3168,3169,3171,3173,3175,3177,3179],{"class":88,"line":292},[86,3170,905],{"class":452},[86,3172,456],{"class":176},[86,3174,2915],{"class":511},[86,3176,660],{"class":176},[86,3178,2920],{"class":511},[86,3180,638],{"class":176},[86,3182,3183],{"class":88,"line":313},[86,3184,3185],{"class":92},"# [DEBUG] [_return_connection] Successfully returned connection to pool\n",[11,3187,3189],{"id":3188},"basegraphdb-interface","BaseGraphDB Interface",[3191,3192,3193,3194,3197],"p",{},"PolarDB implements all methods of the ",[45,3195,3196],{},"BaseGraphDB"," abstract class, ensuring interoperability with other graph database backends.",[74,3199,3201],{"id":3200},"core-methods","Core Methods",[1675,3203,3204,3216],{},[1678,3205,3206],{},[1681,3207,3208,3211,3213],{},[1684,3209,3210],{},"Method",[1684,3212,1698],{},[1684,3214,3215],{},"Parameters",[1700,3217,3218,3231,3244,3257,3270,3283,3296,3309,3322,3335,3347,3360],{},[1681,3219,3220,3225,3228],{},[1705,3221,3222],{},[45,3223,3224],{},"add_node()",[1705,3226,3227],{},"Add a single node",[1705,3229,3230],{},"label, properties, embedding, user_name",[1681,3232,3233,3238,3241],{},[1705,3234,3235],{},[45,3236,3237],{},"add_nodes_batch()",[1705,3239,3240],{},"Batch add nodes",[1705,3242,3243],{},"nodes, user_name",[1681,3245,3246,3251,3254],{},[1705,3247,3248],{},[45,3249,3250],{},"update_node()",[1705,3252,3253],{},"Update node properties",[1705,3255,3256],{},"id, fields, user_name",[1681,3258,3259,3264,3267],{},[1705,3260,3261],{},[45,3262,3263],{},"delete_node()",[1705,3265,3266],{},"Delete node",[1705,3268,3269],{},"id, user_name",[1681,3271,3272,3277,3280],{},[1705,3273,3274],{},[45,3275,3276],{},"delete_node_by_params()",[1705,3278,3279],{},"Delete nodes by conditions",[1705,3281,3282],{},"params, user_name",[1681,3284,3285,3290,3293],{},[1705,3286,3287],{},[45,3288,3289],{},"add_edge()",[1705,3291,3292],{},"Create relationship",[1705,3294,3295],{},"source_id, target_id, edge_type, properties, user_name",[1681,3297,3298,3303,3306],{},[1705,3299,3300],{},[45,3301,3302],{},"update_edge()",[1705,3304,3305],{},"Update relationship properties",[1705,3307,3308],{},"edge_id, properties, user_name",[1681,3310,3311,3316,3319],{},[1705,3312,3313],{},[45,3314,3315],{},"delete_edge()",[1705,3317,3318],{},"Delete relationship",[1705,3320,3321],{},"edge_id, user_name",[1681,3323,3324,3329,3332],{},[1705,3325,3326],{},[45,3327,3328],{},"search_by_embedding()",[1705,3330,3331],{},"Vector similarity search",[1705,3333,3334],{},"embedding, top_k, memory_type, user_name",[1681,3336,3337,3342,3345],{},[1705,3338,3339],{},[45,3340,3341],{},"get_node()",[1705,3343,3344],{},"Get a single node",[1705,3346,3269],{},[1681,3348,3349,3354,3357],{},[1705,3350,3351],{},[45,3352,3353],{},"get_memory_count()",[1705,3355,3356],{},"Count nodes",[1705,3358,3359],{},"memory_type, user_name",[1681,3361,3362,3367,3370],{},[1705,3363,3364],{},[45,3365,3366],{},"remove_oldest_memory()",[1705,3368,3369],{},"Clean old memories",[1705,3371,3372],{},"memory_type, keep_latest, user_name",[74,3374,3376],{"id":3375},"complete-method-signature-examples","Complete Method Signature Examples",[60,3378,3380],{"className":439,"code":3379,"language":441,"meta":68,"style":68},"from typing import Any\n\n# Add node\ndef add_node(\n    self,\n    label: str = \"Memory\",\n    properties: dict[str, Any] | None = None,\n    embedding: list[float] | None = None,\n    user_name: str | None = None\n) -> str:\n    \"\"\"Add a new node to the graph database\"\"\"\n    pass\n\n# Vector search\ndef search_by_embedding(\n    self,\n    embedding: list[float],\n    top_k: int = 10,\n    memory_type: str | None = None,\n    user_name: str | None = None,\n    filters: dict[str, Any] | None = None\n) -> list[dict[str, Any]]:\n    \"\"\"Perform similarity search based on vector embedding\"\"\"\n    pass\n\n# Batch operations\ndef add_nodes_batch(\n    self,\n    nodes: list[dict[str, Any]],\n    user_name: str | None = None\n) -> list[str]:\n    \"\"\"Batch add multiple nodes\"\"\"\n    pass\n",[45,3381,3382,3394,3398,3403,3412,3420,3440,3472,3496,3513,3524,3533,3538,3542,3547,3556,3562,3576,3592,3608,3624,3651,3675,3684,3688,3692,3697,3706,3712,3735,3751,3766,3775],{"__ignoreMap":68},[86,3383,3384,3386,3389,3391],{"class":88,"line":89},[86,3385,449],{"class":448},[86,3387,3388],{"class":452}," typing ",[86,3390,467],{"class":448},[86,3392,3393],{"class":452}," Any\n",[86,3395,3396],{"class":88,"line":96},[86,3397,136],{"emptyLinePlaceholder":135},[86,3399,3400],{"class":88,"line":113},[86,3401,3402],{"class":92},"# Add node\n",[86,3404,3405,3407,3410],{"class":88,"line":119},[86,3406,2694],{"class":185},[86,3408,3409],{"class":511}," add_node",[86,3411,515],{"class":176},[86,3413,3414,3418],{"class":88,"line":132},[86,3415,3417],{"class":3416},"s5tWE","    self",[86,3419,218],{"class":176},[86,3421,3422,3424,3426,3429,3432,3434,3436,3438],{"class":88,"line":139},[86,3423,709],{"class":520},[86,3425,192],{"class":176},[86,3427,3428],{"class":99}," str",[86,3430,3431],{"class":176}," =",[86,3433,210],{"class":176},[86,3435,716],{"class":103},[86,3437,189],{"class":176},[86,3439,218],{"class":176},[86,3441,3442,3444,3446,3449,3452,3454,3456,3459,3461,3464,3467,3469],{"class":88,"line":145},[86,3443,725],{"class":520},[86,3445,192],{"class":176},[86,3447,3448],{"class":452}," dict",[86,3450,3451],{"class":176},"[",[86,3453,1711],{"class":99},[86,3455,793],{"class":176},[86,3457,3458],{"class":452}," Any",[86,3460,1368],{"class":176},[86,3462,3463],{"class":176}," |",[86,3465,3466],{"class":176}," None",[86,3468,3431],{"class":176},[86,3470,3471],{"class":176}," None,\n",[86,3473,3474,3476,3478,3481,3483,3486,3488,3490,3492,3494],{"class":88,"line":292},[86,3475,812],{"class":520},[86,3477,192],{"class":176},[86,3479,3480],{"class":452}," list",[86,3482,3451],{"class":176},[86,3484,3485],{"class":99},"float",[86,3487,1368],{"class":176},[86,3489,3463],{"class":176},[86,3491,3466],{"class":176},[86,3493,3431],{"class":176},[86,3495,3471],{"class":176},[86,3497,3498,3500,3502,3504,3506,3508,3510],{"class":88,"line":313},[86,3499,593],{"class":520},[86,3501,192],{"class":176},[86,3503,3428],{"class":99},[86,3505,3463],{"class":176},[86,3507,3466],{"class":176},[86,3509,3431],{"class":176},[86,3511,3512],{"class":176}," None\n",[86,3514,3515,3517,3520,3522],{"class":88,"line":334},[86,3516,1487],{"class":176},[86,3518,3519],{"class":176}," ->",[86,3521,3428],{"class":99},[86,3523,1512],{"class":176},[86,3525,3526,3528,3531],{"class":88,"line":355},[86,3527,2724],{"class":448},[86,3529,3530],{"class":92},"Add a new node to the graph database",[86,3532,2730],{"class":448},[86,3534,3535],{"class":88,"line":370},[86,3536,3537],{"class":448},"    pass\n",[86,3539,3540],{"class":88,"line":385},[86,3541,136],{"emptyLinePlaceholder":135},[86,3543,3544],{"class":88,"line":402},[86,3545,3546],{"class":92},"# Vector search\n",[86,3548,3549,3551,3554],{"class":88,"line":417},[86,3550,2694],{"class":185},[86,3552,3553],{"class":511}," search_by_embedding",[86,3555,515],{"class":176},[86,3557,3558,3560],{"class":88,"line":423},[86,3559,3417],{"class":3416},[86,3561,218],{"class":176},[86,3563,3564,3566,3568,3570,3572,3574],{"class":88,"line":429},[86,3565,812],{"class":520},[86,3567,192],{"class":176},[86,3569,3480],{"class":452},[86,3571,3451],{"class":176},[86,3573,3485],{"class":99},[86,3575,1140],{"class":176},[86,3577,3578,3580,3582,3585,3587,3590],{"class":88,"line":650},[86,3579,1411],{"class":520},[86,3581,192],{"class":176},[86,3583,3584],{"class":99}," int",[86,3586,3431],{"class":176},[86,3588,3589],{"class":239}," 10",[86,3591,218],{"class":176},[86,3593,3594,3596,3598,3600,3602,3604,3606],{"class":88,"line":902},[86,3595,1424],{"class":520},[86,3597,192],{"class":176},[86,3599,3428],{"class":99},[86,3601,3463],{"class":176},[86,3603,3466],{"class":176},[86,3605,3431],{"class":176},[86,3607,3471],{"class":176},[86,3609,3610,3612,3614,3616,3618,3620,3622],{"class":88,"line":915},[86,3611,593],{"class":520},[86,3613,192],{"class":176},[86,3615,3428],{"class":99},[86,3617,3463],{"class":176},[86,3619,3466],{"class":176},[86,3621,3431],{"class":176},[86,3623,3471],{"class":176},[86,3625,3626,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649],{"class":88,"line":927},[86,3627,3628],{"class":520},"    filters",[86,3630,192],{"class":176},[86,3632,3448],{"class":452},[86,3634,3451],{"class":176},[86,3636,1711],{"class":99},[86,3638,793],{"class":176},[86,3640,3458],{"class":452},[86,3642,1368],{"class":176},[86,3644,3463],{"class":176},[86,3646,3466],{"class":176},[86,3648,3431],{"class":176},[86,3650,3512],{"class":176},[86,3652,3653,3655,3657,3659,3661,3664,3666,3668,3670,3672],{"class":88,"line":935},[86,3654,1487],{"class":176},[86,3656,3519],{"class":176},[86,3658,3480],{"class":452},[86,3660,3451],{"class":176},[86,3662,3663],{"class":452},"dict",[86,3665,3451],{"class":176},[86,3667,1711],{"class":99},[86,3669,793],{"class":176},[86,3671,3458],{"class":452},[86,3673,3674],{"class":176},"]]:\n",[86,3676,3677,3679,3682],{"class":88,"line":955},[86,3678,2724],{"class":448},[86,3680,3681],{"class":92},"Perform similarity search based on vector embedding",[86,3683,2730],{"class":448},[86,3685,3686],{"class":88,"line":970},[86,3687,3537],{"class":448},[86,3689,3690],{"class":88,"line":975},[86,3691,136],{"emptyLinePlaceholder":135},[86,3693,3694],{"class":88,"line":988},[86,3695,3696],{"class":92},"# Batch operations\n",[86,3698,3699,3701,3704],{"class":88,"line":993},[86,3700,2694],{"class":185},[86,3702,3703],{"class":511}," add_nodes_batch",[86,3705,515],{"class":176},[86,3707,3708,3710],{"class":88,"line":1009},[86,3709,3417],{"class":3416},[86,3711,218],{"class":176},[86,3713,3714,3716,3718,3720,3722,3724,3726,3728,3730,3732],{"class":88,"line":1014},[86,3715,2623],{"class":520},[86,3717,192],{"class":176},[86,3719,3480],{"class":452},[86,3721,3451],{"class":176},[86,3723,3663],{"class":452},[86,3725,3451],{"class":176},[86,3727,1711],{"class":99},[86,3729,793],{"class":176},[86,3731,3458],{"class":452},[86,3733,3734],{"class":176},"]],\n",[86,3736,3737,3739,3741,3743,3745,3747,3749],{"class":88,"line":1019},[86,3738,593],{"class":520},[86,3740,192],{"class":176},[86,3742,3428],{"class":99},[86,3744,3463],{"class":176},[86,3746,3466],{"class":176},[86,3748,3431],{"class":176},[86,3750,3512],{"class":176},[86,3752,3753,3755,3757,3759,3761,3763],{"class":88,"line":1025},[86,3754,1487],{"class":176},[86,3756,3519],{"class":176},[86,3758,3480],{"class":452},[86,3760,3451],{"class":176},[86,3762,1711],{"class":99},[86,3764,3765],{"class":176},"]:\n",[86,3767,3768,3770,3773],{"class":88,"line":1030},[86,3769,2724],{"class":448},[86,3771,3772],{"class":92},"Batch add multiple nodes",[86,3774,2730],{"class":448},[86,3776,3777],{"class":88,"line":1036},[86,3778,3537],{"class":448},[11,3780,3782],{"id":3781},"extension-development-guide","Extension Development Guide",[3191,3784,3785,3786,3789],{},"If you need to implement custom functionality based on PolarDB, you can inherit the ",[45,3787,3788],{},"PolarDBGraphDB"," class:",[60,3791,3793],{"className":439,"code":3792,"language":441,"meta":68,"style":68},"from memos.graph_dbs.polardb import PolarDBGraphDB\nfrom memos.configs.graph_db import PolarDBGraphDBConfig\n\nclass CustomPolarDBGraphDB(PolarDBGraphDB):\n    \"\"\"Custom PolarDB graph database implementation\"\"\"\n    \n    def __init__(self, config: PolarDBGraphDBConfig):\n        super().__init__(config)\n        # Custom initialization logic\n        self.custom_index_created = False\n    \n    def create_custom_index(self):\n        \"\"\"Create custom index\"\"\"\n        conn = self._get_connection()\n        try:\n            with conn.cursor() as cursor:\n                cursor.execute(f\"\"\"\n                    CREATE INDEX IF NOT EXISTS idx_custom_field\n                    ON \"{self.db_name}_graph\".\"Memory\" \n                    ((properties->>'custom_field'));\n                \"\"\")\n                conn.commit()\n                self.custom_index_created = True\n                print(\"✓ Custom index created\")\n        except Exception as e:\n            print(f\"❌ Failed to create index: {e}\")\n            conn.rollback()\n        finally:\n            self._return_connection(conn)\n    \n    def search_by_custom_field(self, field_value: str):\n        \"\"\"Search based on custom field\"\"\"\n        query = f\"\"\"\n            SELECT * FROM \"{self.db_name}_graph\".\"Memory\"\n            WHERE properties->>'custom_field' = %s\n        \"\"\"\n        \n        conn = self._get_connection()\n        try:\n            with conn.cursor() as cursor:\n                cursor.execute(query, [field_value])\n                results = cursor.fetchall()\n                return results\n        finally:\n            self._return_connection(conn)\n\n# Use custom implementation\nconfig = PolarDBGraphDBConfig(\n    host=\"localhost\",\n    port=5432,\n    user=\"postgres\",\n    password=\"password\",\n    db_name=\"custom_db\"\n)\n\ncustom_db = CustomPolarDBGraphDB(config)\ncustom_db.create_custom_index()\nresults = custom_db.search_by_custom_field(\"special_value\")\n",[45,3794,3795,3813,3831,3835,3849,3858,3862,3886,3903,3908,3923,3927,3940,3950,3966,3973,3992,4007,4012,4030,4035,4042,4054,4067,4083,4098,4121,4133,4140,4155,4159,4181,4190,4201,4218,4223,4228,4233,4247,4253,4271,4292,4307,4314,4320,4334,4338,4343,4353,4367,4377,4391,4405,4418,4422,4426,4441,4452],{"__ignoreMap":68},[86,3796,3797,3799,3801,3803,3805,3807,3809,3811],{"class":88,"line":89},[86,3798,449],{"class":448},[86,3800,453],{"class":452},[86,3802,456],{"class":176},[86,3804,481],{"class":452},[86,3806,456],{"class":176},[86,3808,486],{"class":452},[86,3810,467],{"class":448},[86,3812,491],{"class":452},[86,3814,3815,3817,3819,3821,3823,3825,3827,3829],{"class":88,"line":96},[86,3816,449],{"class":448},[86,3818,453],{"class":452},[86,3820,456],{"class":176},[86,3822,459],{"class":452},[86,3824,456],{"class":176},[86,3826,464],{"class":452},[86,3828,467],{"class":448},[86,3830,470],{"class":452},[86,3832,3833],{"class":88,"line":113},[86,3834,136],{"emptyLinePlaceholder":135},[86,3836,3837,3840,3843,3845,3847],{"class":88,"line":119},[86,3838,3839],{"class":185},"class",[86,3841,3842],{"class":99}," CustomPolarDBGraphDB",[86,3844,660],{"class":176},[86,3846,3788],{"class":99},[86,3848,2719],{"class":176},[86,3850,3851,3853,3856],{"class":88,"line":132},[86,3852,2724],{"class":448},[86,3854,3855],{"class":92},"Custom PolarDB graph database implementation",[86,3857,2730],{"class":448},[86,3859,3860],{"class":88,"line":139},[86,3861,2790],{"class":452},[86,3863,3864,3867,3870,3872,3875,3877,3880,3882,3884],{"class":88,"line":145},[86,3865,3866],{"class":185},"    def",[86,3868,3869],{"class":511}," __init__",[86,3871,660],{"class":176},[86,3873,3874],{"class":3416},"self",[86,3876,793],{"class":176},[86,3878,3879],{"class":520}," config",[86,3881,192],{"class":176},[86,3883,512],{"class":452},[86,3885,2719],{"class":176},[86,3887,3888,3891,3894,3897,3899,3901],{"class":88,"line":292},[86,3889,3890],{"class":99},"        super",[86,3892,3893],{"class":176},"().",[86,3895,3896],{"class":511},"__init__",[86,3898,660],{"class":176},[86,3900,225],{"class":511},[86,3902,638],{"class":176},[86,3904,3905],{"class":88,"line":313},[86,3906,3907],{"class":92},"        # Custom initialization logic\n",[86,3909,3910,3913,3915,3918,3920],{"class":88,"line":334},[86,3911,3912],{"class":452},"        self",[86,3914,456],{"class":176},[86,3916,3917],{"class":2755},"custom_index_created",[86,3919,3431],{"class":176},[86,3921,3922],{"class":176}," False\n",[86,3924,3925],{"class":88,"line":355},[86,3926,2790],{"class":452},[86,3928,3929,3931,3934,3936,3938],{"class":88,"line":370},[86,3930,3866],{"class":185},[86,3932,3933],{"class":511}," create_custom_index",[86,3935,660],{"class":176},[86,3937,3874],{"class":3416},[86,3939,2719],{"class":176},[86,3941,3942,3945,3948],{"class":88,"line":385},[86,3943,3944],{"class":448},"        \"\"\"",[86,3946,3947],{"class":92},"Create custom index",[86,3949,2730],{"class":448},[86,3951,3952,3955,3957,3960,3962,3964],{"class":88,"line":402},[86,3953,3954],{"class":452},"        conn ",[86,3956,508],{"class":176},[86,3958,3959],{"class":452}," self",[86,3961,456],{"class":176},[86,3963,2804],{"class":511},[86,3965,2807],{"class":176},[86,3967,3968,3971],{"class":88,"line":417},[86,3969,3970],{"class":448},"        try",[86,3972,1512],{"class":176},[86,3974,3975,3978,3980,3982,3984,3986,3988,3990],{"class":88,"line":423},[86,3976,3977],{"class":448},"            with",[86,3979,2822],{"class":452},[86,3981,456],{"class":176},[86,3983,2827],{"class":511},[86,3985,2830],{"class":176},[86,3987,2833],{"class":448},[86,3989,2836],{"class":452},[86,3991,1512],{"class":176},[86,3993,3994,3997,3999,4001,4003,4005],{"class":88,"line":429},[86,3995,3996],{"class":452},"                cursor",[86,3998,456],{"class":176},[86,4000,2848],{"class":511},[86,4002,660],{"class":176},[86,4004,866],{"class":185},[86,4006,2730],{"class":103},[86,4008,4009],{"class":88,"line":650},[86,4010,4011],{"class":103},"                    CREATE INDEX IF NOT EXISTS idx_custom_field\n",[86,4013,4014,4017,4019,4021,4023,4025,4027],{"class":88,"line":902},[86,4015,4016],{"class":103},"                    ON \"",[86,4018,872],{"class":239},[86,4020,3874],{"class":452},[86,4022,456],{"class":176},[86,4024,318],{"class":2755},[86,4026,878],{"class":239},[86,4028,4029],{"class":103},"_graph\".\"Memory\" \n",[86,4031,4032],{"class":88,"line":915},[86,4033,4034],{"class":103},"                    ((properties->>'custom_field'));\n",[86,4036,4037,4040],{"class":88,"line":927},[86,4038,4039],{"class":103},"                \"\"\"",[86,4041,638],{"class":176},[86,4043,4044,4047,4049,4052],{"class":88,"line":935},[86,4045,4046],{"class":452},"                conn",[86,4048,456],{"class":176},[86,4050,4051],{"class":511},"commit",[86,4053,2807],{"class":176},[86,4055,4056,4059,4061,4063,4065],{"class":88,"line":955},[86,4057,4058],{"class":452},"                self",[86,4060,456],{"class":176},[86,4062,3917],{"class":2755},[86,4064,3431],{"class":176},[86,4066,967],{"class":176},[86,4068,4069,4072,4074,4076,4079,4081],{"class":88,"line":970},[86,4070,4071],{"class":511},"                print",[86,4073,660],{"class":176},[86,4075,189],{"class":176},[86,4077,4078],{"class":103},"✓ Custom index created",[86,4080,189],{"class":176},[86,4082,638],{"class":176},[86,4084,4085,4088,4091,4093,4096],{"class":88,"line":975},[86,4086,4087],{"class":448},"        except",[86,4089,4090],{"class":99}," Exception",[86,4092,2833],{"class":448},[86,4094,4095],{"class":452}," e",[86,4097,1512],{"class":176},[86,4099,4100,4103,4105,4107,4110,4112,4115,4117,4119],{"class":88,"line":988},[86,4101,4102],{"class":511},"            print",[86,4104,660],{"class":176},[86,4106,866],{"class":185},[86,4108,4109],{"class":103},"\"❌ Failed to create index: ",[86,4111,872],{"class":239},[86,4113,4114],{"class":511},"e",[86,4116,878],{"class":239},[86,4118,189],{"class":103},[86,4120,638],{"class":176},[86,4122,4123,4126,4128,4131],{"class":88,"line":993},[86,4124,4125],{"class":452},"            conn",[86,4127,456],{"class":176},[86,4129,4130],{"class":511},"rollback",[86,4132,2807],{"class":176},[86,4134,4135,4138],{"class":88,"line":1009},[86,4136,4137],{"class":448},"        finally",[86,4139,1512],{"class":176},[86,4141,4142,4145,4147,4149,4151,4153],{"class":88,"line":1014},[86,4143,4144],{"class":452},"            self",[86,4146,456],{"class":176},[86,4148,2915],{"class":511},[86,4150,660],{"class":176},[86,4152,2920],{"class":511},[86,4154,638],{"class":176},[86,4156,4157],{"class":88,"line":1019},[86,4158,2790],{"class":452},[86,4160,4161,4163,4166,4168,4170,4172,4175,4177,4179],{"class":88,"line":1025},[86,4162,3866],{"class":185},[86,4164,4165],{"class":511}," search_by_custom_field",[86,4167,660],{"class":176},[86,4169,3874],{"class":3416},[86,4171,793],{"class":176},[86,4173,4174],{"class":520}," field_value",[86,4176,192],{"class":176},[86,4178,3428],{"class":99},[86,4180,2719],{"class":176},[86,4182,4183,4185,4188],{"class":88,"line":1030},[86,4184,3944],{"class":448},[86,4186,4187],{"class":92},"Search based on custom field",[86,4189,2730],{"class":448},[86,4191,4192,4195,4197,4199],{"class":88,"line":1036},[86,4193,4194],{"class":452},"        query ",[86,4196,508],{"class":176},[86,4198,2510],{"class":185},[86,4200,2730],{"class":103},[86,4202,4203,4206,4208,4210,4212,4214,4216],{"class":88,"line":1052},[86,4204,4205],{"class":103},"            SELECT * FROM \"",[86,4207,872],{"class":239},[86,4209,3874],{"class":452},[86,4211,456],{"class":176},[86,4213,318],{"class":2755},[86,4215,878],{"class":239},[86,4217,2760],{"class":103},[86,4219,4220],{"class":88,"line":1067},[86,4221,4222],{"class":103},"            WHERE properties->>'custom_field' = %s\n",[86,4224,4225],{"class":88,"line":1074},[86,4226,4227],{"class":103},"        \"\"\"\n",[86,4229,4230],{"class":88,"line":1094},[86,4231,4232],{"class":452},"        \n",[86,4234,4235,4237,4239,4241,4243,4245],{"class":88,"line":1111},[86,4236,3954],{"class":452},[86,4238,508],{"class":176},[86,4240,3959],{"class":452},[86,4242,456],{"class":176},[86,4244,2804],{"class":511},[86,4246,2807],{"class":176},[86,4248,4249,4251],{"class":88,"line":1116},[86,4250,3970],{"class":448},[86,4252,1512],{"class":176},[86,4254,4255,4257,4259,4261,4263,4265,4267,4269],{"class":88,"line":1143},[86,4256,3977],{"class":448},[86,4258,2822],{"class":452},[86,4260,456],{"class":176},[86,4262,2827],{"class":511},[86,4264,2830],{"class":176},[86,4266,2833],{"class":448},[86,4268,2836],{"class":452},[86,4270,1512],{"class":176},[86,4272,4273,4275,4277,4279,4281,4283,4285,4287,4290],{"class":88,"line":1156},[86,4274,3996],{"class":452},[86,4276,456],{"class":176},[86,4278,2848],{"class":511},[86,4280,660],{"class":176},[86,4282,2853],{"class":511},[86,4284,793],{"class":176},[86,4286,783],{"class":176},[86,4288,4289],{"class":511},"field_value",[86,4291,2874],{"class":176},[86,4293,4294,4297,4299,4301,4303,4305],{"class":88,"line":1161},[86,4295,4296],{"class":452},"                results ",[86,4298,508],{"class":176},[86,4300,2836],{"class":452},[86,4302,456],{"class":176},[86,4304,2888],{"class":511},[86,4306,2807],{"class":176},[86,4308,4309,4312],{"class":88,"line":1166},[86,4310,4311],{"class":448},"                return",[86,4313,2898],{"class":452},[86,4315,4316,4318],{"class":88,"line":1172},[86,4317,4137],{"class":448},[86,4319,1512],{"class":176},[86,4321,4322,4324,4326,4328,4330,4332],{"class":88,"line":1189},[86,4323,4144],{"class":452},[86,4325,456],{"class":176},[86,4327,2915],{"class":511},[86,4329,660],{"class":176},[86,4331,2920],{"class":511},[86,4333,638],{"class":176},[86,4335,4336],{"class":88,"line":1201},[86,4337,136],{"emptyLinePlaceholder":135},[86,4339,4340],{"class":88,"line":1214},[86,4341,4342],{"class":92},"# Use custom implementation\n",[86,4344,4345,4347,4349,4351],{"class":88,"line":1231},[86,4346,505],{"class":452},[86,4348,508],{"class":176},[86,4350,512],{"class":511},[86,4352,515],{"class":176},[86,4354,4355,4357,4359,4361,4363,4365],{"class":88,"line":1238},[86,4356,521],{"class":520},[86,4358,508],{"class":176},[86,4360,189],{"class":176},[86,4362,249],{"class":103},[86,4364,189],{"class":176},[86,4366,218],{"class":176},[86,4368,4369,4371,4373,4375],{"class":88,"line":1259},[86,4370,536],{"class":520},[86,4372,508],{"class":176},[86,4374,541],{"class":239},[86,4376,218],{"class":176},[86,4378,4379,4381,4383,4385,4387,4389],{"class":88,"line":1274},[86,4380,548],{"class":520},[86,4382,508],{"class":176},[86,4384,189],{"class":176},[86,4386,285],{"class":103},[86,4388,189],{"class":176},[86,4390,218],{"class":176},[86,4392,4393,4395,4397,4399,4401,4403],{"class":88,"line":1279},[86,4394,563],{"class":520},[86,4396,508],{"class":176},[86,4398,189],{"class":176},[86,4400,297],{"class":103},[86,4402,189],{"class":176},[86,4404,218],{"class":176},[86,4406,4407,4409,4411,4413,4416],{"class":88,"line":1292},[86,4408,578],{"class":520},[86,4410,508],{"class":176},[86,4412,189],{"class":176},[86,4414,4415],{"class":103},"custom_db",[86,4417,852],{"class":176},[86,4419,4420],{"class":88,"line":1297},[86,4421,638],{"class":176},[86,4423,4424],{"class":88,"line":1320},[86,4425,136],{"emptyLinePlaceholder":135},[86,4427,4428,4431,4433,4435,4437,4439],{"class":88,"line":1325},[86,4429,4430],{"class":452},"custom_db ",[86,4432,508],{"class":176},[86,4434,3842],{"class":511},[86,4436,660],{"class":176},[86,4438,225],{"class":511},[86,4440,638],{"class":176},[86,4442,4443,4445,4447,4450],{"class":88,"line":1330},[86,4444,4415],{"class":452},[86,4446,456],{"class":176},[86,4448,4449],{"class":511},"create_custom_index",[86,4451,2807],{"class":176},[86,4453,4454,4456,4458,4461,4463,4466,4468,4470,4473,4475],{"class":88,"line":1336},[86,4455,1382],{"class":452},[86,4457,508],{"class":176},[86,4459,4460],{"class":452}," custom_db",[86,4462,456],{"class":176},[86,4464,4465],{"class":511},"search_by_custom_field",[86,4467,660],{"class":176},[86,4469,189],{"class":176},[86,4471,4472],{"class":103},"special_value",[86,4474,189],{"class":176},[86,4476,638],{"class":176},[11,4478,4480],{"id":4479},"reference-resources","Reference Resources",[20,4482,4483,4492,4499,4506],{},[23,4484,4485],{},[4486,4487,4491],"a",{"href":4488,"rel":4489},"https://age.apache.org/",[4490],"nofollow","Apache AGE Official Documentation",[23,4493,4494],{},[4486,4495,4498],{"href":4496,"rel":4497},"https://www.psycopg.org/docs/pool.html",[4490],"PostgreSQL Connection Pool Documentation",[23,4500,4501],{},[4486,4502,4505],{"href":4503,"rel":4504},"https://www.alibabacloud.com/product/polardb",[4490],"PolarDB Official Documentation",[23,4507,4508],{},[4486,4509,4512],{"href":4510,"rel":4511},"https://github.com/MemOS-AI/MemOS",[4490],"MemOS GitHub Repository",[11,4514,4516],{"id":4515},"next-steps","Next Steps",[20,4518,4519,4526,4534],{},[23,4520,4521,4522],{},"Learn about using ",[4486,4523,4525],{"href":4524},"./neo4j_graph_db","Neo4j Graph Database",[23,4527,4528,4529,4533],{},"Check out ",[4486,4530,4532],{"href":4531},"./general_textual_memory","General Textual Memory"," configuration",[23,4535,4536,4537],{},"Explore advanced features of ",[4486,4538,4540],{"href":4539},"./tree_textual_memory","Tree Textual Memory",[4542,4543,4544],"style",{},"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s5tWE, html code.shiki .s5tWE{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#F07178;--shiki-default-font-style:italic;--shiki-dark:#F07178;--shiki-dark-font-style:italic}",{"title":68,"searchDepth":96,"depth":96,"links":4546},[4547,4548,4549,4554,4559,4565,4569,4570,4571],{"id":13,"depth":96,"text":14},{"id":57,"depth":96,"text":58},{"id":71,"depth":96,"text":72,"children":4550},[4551,4552,4553],{"id":76,"depth":113,"text":77},{"id":158,"depth":113,"text":159},{"id":667,"depth":113,"text":668},{"id":1668,"depth":96,"text":1669,"children":4555},[4556,4557,4558],{"id":1672,"depth":113,"text":1673},{"id":1865,"depth":113,"text":1866},{"id":1982,"depth":113,"text":1983},{"id":2436,"depth":96,"text":2437,"children":4560},[4561,4562,4563,4564],{"id":2440,"depth":113,"text":2441},{"id":2678,"depth":113,"text":2679},{"id":2995,"depth":113,"text":2996},{"id":3093,"depth":113,"text":3094},{"id":3188,"depth":96,"text":3189,"children":4566},[4567,4568],{"id":3200,"depth":113,"text":3201},{"id":3375,"depth":113,"text":3376},{"id":3781,"depth":96,"text":3782},{"id":4479,"depth":96,"text":4480},{"id":4515,"depth":96,"text":4516},"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.","md",{},"/en/open_source/modules/memories/polardb_graph_db",{"title":5,"description":68},"en/open_source/modules/memories/polardb_graph_db","bNAWA6x1K_ZiXETCoSP8C_atIvMSth-gcFDqE5Gqbns",[4580,4587],{"title":4525,"path":4581,"stem":4582,"icon":4583,"framework":6,"module":6,"class":4584,"target":-1,"active":4585,"defaultOpen":4585,"children":-1,"description":4586},"/open_source/modules/memories/neo4j_graph_db","open_source/modules/memories/neo4j_graph_db","i-ri-database-line",[],false,"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.",{"title":4588,"path":4589,"stem":4590,"icon":4591,"framework":6,"module":6,"class":4592,"target":-1,"active":4585,"defaultOpen":4585,"children":-1,"description":4593},"KV Cache Memory","/open_source/modules/memories/kv_cache_memory","open_source/modules/memories/kv_cache_memory","i-ri-database-2-line",[],"KVCacheMemory is a specialized memory module in MemOS for storing and managing key-value (KV) caches, primarily used to accelerate large language model (LLM) inference and support efficient context reuse. It is especially useful for activation memory in conversational and generative AI systems.",1770372085893]