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