Browse Source

代码提交

SGTY 2 months ago
parent
commit
f189a25a6e
94 changed files with 6817053 additions and 0 deletions
  1. 177 0
      app.log
  2. 19 0
      community/community_report.md
  3. 77002 0
      community/web/cached_data/relationship_med_1.json
  4. 77002 0
      community/web/cached_data/relationship_med_10.json
  5. 77002 0
      community/web/cached_data/relationship_med_11.json
  6. 77002 0
      community/web/cached_data/relationship_med_12.json
  7. 77002 0
      community/web/cached_data/relationship_med_13.json
  8. 77002 0
      community/web/cached_data/relationship_med_14.json
  9. 77002 0
      community/web/cached_data/relationship_med_15.json
  10. 77002 0
      community/web/cached_data/relationship_med_16.json
  11. 77002 0
      community/web/cached_data/relationship_med_17.json
  12. 77002 0
      community/web/cached_data/relationship_med_18.json
  13. 77002 0
      community/web/cached_data/relationship_med_19.json
  14. 77002 0
      community/web/cached_data/relationship_med_2.json
  15. 77002 0
      community/web/cached_data/relationship_med_20.json
  16. 77002 0
      community/web/cached_data/relationship_med_21.json
  17. 77002 0
      community/web/cached_data/relationship_med_22.json
  18. 77002 0
      community/web/cached_data/relationship_med_23.json
  19. 77002 0
      community/web/cached_data/relationship_med_24.json
  20. 77002 0
      community/web/cached_data/relationship_med_25.json
  21. 77002 0
      community/web/cached_data/relationship_med_26.json
  22. 77002 0
      community/web/cached_data/relationship_med_27.json
  23. 77002 0
      community/web/cached_data/relationship_med_28.json
  24. 77002 0
      community/web/cached_data/relationship_med_29.json
  25. 77002 0
      community/web/cached_data/relationship_med_3.json
  26. 77002 0
      community/web/cached_data/relationship_med_30.json
  27. 77002 0
      community/web/cached_data/relationship_med_31.json
  28. 77002 0
      community/web/cached_data/relationship_med_32.json
  29. 77002 0
      community/web/cached_data/relationship_med_33.json
  30. 77002 0
      community/web/cached_data/relationship_med_34.json
  31. 77002 0
      community/web/cached_data/relationship_med_35.json
  32. 77002 0
      community/web/cached_data/relationship_med_36.json
  33. 77002 0
      community/web/cached_data/relationship_med_37.json
  34. 77002 0
      community/web/cached_data/relationship_med_38.json
  35. 77002 0
      community/web/cached_data/relationship_med_39.json
  36. 77002 0
      community/web/cached_data/relationship_med_4.json
  37. 77002 0
      community/web/cached_data/relationship_med_40.json
  38. 77002 0
      community/web/cached_data/relationship_med_41.json
  39. 77002 0
      community/web/cached_data/relationship_med_42.json
  40. 77002 0
      community/web/cached_data/relationship_med_43.json
  41. 77002 0
      community/web/cached_data/relationship_med_44.json
  42. 77002 0
      community/web/cached_data/relationship_med_45.json
  43. 77002 0
      community/web/cached_data/relationship_med_46.json
  44. 77002 0
      community/web/cached_data/relationship_med_47.json
  45. 77002 0
      community/web/cached_data/relationship_med_48.json
  46. 77002 0
      community/web/cached_data/relationship_med_49.json
  47. 77002 0
      community/web/cached_data/relationship_med_5.json
  48. 77002 0
      community/web/cached_data/relationship_med_50.json
  49. 77002 0
      community/web/cached_data/relationship_med_51.json
  50. 77002 0
      community/web/cached_data/relationship_med_52.json
  51. 77002 0
      community/web/cached_data/relationship_med_53.json
  52. 77002 0
      community/web/cached_data/relationship_med_54.json
  53. 77002 0
      community/web/cached_data/relationship_med_55.json
  54. 77002 0
      community/web/cached_data/relationship_med_56.json
  55. 77002 0
      community/web/cached_data/relationship_med_57.json
  56. 77002 0
      community/web/cached_data/relationship_med_58.json
  57. 77002 0
      community/web/cached_data/relationship_med_59.json
  58. 77002 0
      community/web/cached_data/relationship_med_6.json
  59. 77002 0
      community/web/cached_data/relationship_med_60.json
  60. 77002 0
      community/web/cached_data/relationship_med_61.json
  61. 77002 0
      community/web/cached_data/relationship_med_62.json
  62. 77002 0
      community/web/cached_data/relationship_med_63.json
  63. 77002 0
      community/web/cached_data/relationship_med_64.json
  64. 77002 0
      community/web/cached_data/relationship_med_65.json
  65. 77002 0
      community/web/cached_data/relationship_med_66.json
  66. 77002 0
      community/web/cached_data/relationship_med_67.json
  67. 77002 0
      community/web/cached_data/relationship_med_68.json
  68. 77002 0
      community/web/cached_data/relationship_med_69.json
  69. 77002 0
      community/web/cached_data/relationship_med_7.json
  70. 77002 0
      community/web/cached_data/relationship_med_70.json
  71. 77002 0
      community/web/cached_data/relationship_med_71.json
  72. 77002 0
      community/web/cached_data/relationship_med_72.json
  73. 77002 0
      community/web/cached_data/relationship_med_73.json
  74. 77002 0
      community/web/cached_data/relationship_med_74.json
  75. 77002 0
      community/web/cached_data/relationship_med_75.json
  76. 77002 0
      community/web/cached_data/relationship_med_76.json
  77. 77002 0
      community/web/cached_data/relationship_med_77.json
  78. 77002 0
      community/web/cached_data/relationship_med_78.json
  79. 77002 0
      community/web/cached_data/relationship_med_79.json
  80. 77002 0
      community/web/cached_data/relationship_med_8.json
  81. 77002 0
      community/web/cached_data/relationship_med_80.json
  82. 77002 0
      community/web/cached_data/relationship_med_81.json
  83. 77002 0
      community/web/cached_data/relationship_med_82.json
  84. 77002 0
      community/web/cached_data/relationship_med_83.json
  85. 77002 0
      community/web/cached_data/relationship_med_84.json
  86. 77002 0
      community/web/cached_data/relationship_med_85.json
  87. 77002 0
      community/web/cached_data/relationship_med_86.json
  88. 77002 0
      community/web/cached_data/relationship_med_87.json
  89. 98434 0
      community/web/cached_data/relationship_med_88.json
  90. 18782 0
      community/web/cached_data/relationship_med_89.json
  91. 77002 0
      community/web/cached_data/relationship_med_9.json
  92. 180 0
      router/graph_router.py
  93. 54 0
      utils/agent.py
  94. 233 0
      utils/json_to_text.py

+ 177 - 0
app.log

@@ -0,0 +1,177 @@
+2025-04-07 11:35:12,258 - __main__ - INFO - Starting uvicorn server...2222
+2025-04-07 12:21:40,733 - __main__ - INFO - Starting uvicorn server...2222
+2025-04-07 16:27:53,847 - __main__ - INFO - Starting uvicorn server...2222
+2025-04-07 16:40:50,178 - router.text_search - ERROR - Text search failed: cannot import name 'JsonToTextConverter' from 'utils.json_to_text' (E:\project\knowledge\utils\json_to_text.py)
+2025-04-07 16:46:16,609 - __main__ - INFO - Starting uvicorn server...2222
+2025-04-07 16:46:35,709 - router.text_search - ERROR - Text search failed: 'str' object has no attribute 'json_data'
+2025-04-07 16:47:56,701 - __main__ - INFO - Starting uvicorn server...2222
+2025-04-07 16:48:25,554 - router.text_search - ERROR - Text search failed: 'str' object has no attribute 'json_data'
+2025-04-07 16:59:34,013 - __main__ - INFO - Starting uvicorn server...2222
+2025-04-07 16:59:42,225 - sqlalchemy.engine.Engine - INFO - select version()
+2025-04-07 16:59:42,225 - sqlalchemy.engine.Engine - INFO - [raw sql] {}
+2025-04-07 16:59:42,227 - sqlalchemy.engine.Engine - INFO - select current_schema()
+2025-04-07 16:59:42,227 - sqlalchemy.engine.Engine - INFO - [raw sql] {}
+2025-04-07 16:59:42,229 - sqlalchemy.engine.Engine - INFO - show standard_conforming_strings
+2025-04-07 16:59:42,229 - sqlalchemy.engine.Engine - INFO - [raw sql] {}
+2025-04-07 16:59:42,231 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:42,235 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:42,235 - sqlalchemy.engine.Engine - INFO - [generated in 0.00104s] {'embedding_1': '[-0.029530714049854318,0.0034598980274798507,-0.053635113602414686,-0.01312558050166334,-0.01665393403862737,-0.005583339088722066,0.0003231459453733 ... (21362 characters truncated) ... ,-0.0008720596089301075,-0.02867608416306465,0.02126252144663606,0.01923491440238548,0.012729364031325073,-0.01286137689351312,-0.011162965719976397]', 'param_1': 1}
+2025-04-07 16:59:42,276 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:42,366 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:42,367 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:42,368 - sqlalchemy.engine.Engine - INFO - [generated in 0.00115s] {'embedding_1': '[-0.0579007822952897,0.017850636731404055,-0.07663960733898355,0.018545098556675566,-0.022680585879656767,-0.01565279702521402,0.027680482791226656,0 ... (21452 characters truncated) ... 7,0.016873928815403467,-0.001884143421159477,-0.05538633553973907,0.0752021670118841,0.003565238880610201,-0.012883777703770213,-0.04053368329373107]', 'param_1': 1}
+2025-04-07 16:59:42,395 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:42,500 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:42,504 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:42,505 - sqlalchemy.engine.Engine - INFO - [generated in 0.00182s] {'embedding_1': '[0.006979122316255099,0.051995693335804324,-0.00840578229887513,0.011725219031640395,-0.030691312190553224,-0.027265177378799035,0.016023077978142064 ... (21409 characters truncated) ... 2,0.01298891319743624,-0.023780273755306176,-0.01848574211510879,0.07429370756975505,-0.01934679492332306,0.040277326849477976,-0.004531972197025024]', 'param_1': 1}
+2025-04-07 16:59:42,534 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:42,789 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:42,792 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:42,792 - sqlalchemy.engine.Engine - INFO - [generated in 0.00135s] {'embedding_1': '[-0.02323353792627634,0.012010693960992977,-0.037848074769986105,0.011247255902758536,-0.02795904343263144,-0.032808120201438286,0.05257351733982648, ... (21459 characters truncated) ... .0030320806347936733,-0.017946587114283992,0.028741810147642394,0.0776536197590193,0.0070873702091755865,0.0041424282204688976,-0.011000477862490286]', 'param_1': 1}
+2025-04-07 16:59:42,820 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:42,919 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:42,922 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:42,922 - sqlalchemy.engine.Engine - INFO - [generated in 0.00102s] {'embedding_1': '[-0.03234823758707442,0.05290488508085864,-0.022965908248146077,-0.017358744653203466,-0.035909954009859545,-0.004897913422098893,0.02704689722099449 ... (21424 characters truncated) ... .003477302317576766,-7.35729589768755e-05,0.023253486577122777,0.040321808868205494,-0.0034297420917112974,-0.01575514083760276,-0.02225744430664021]', 'param_1': 1}
+2025-04-07 16:59:42,950 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:43,038 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:43,040 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:43,041 - sqlalchemy.engine.Engine - INFO - [generated in 0.00119s] {'embedding_1': '[0.0025015076252154545,0.05644665632535542,-0.04909362769053116,-0.004621381647435287,-0.024091247274561963,-0.03535405270589645,-0.01762104829523431 ... (21415 characters truncated) ... 0.025894636729833425,-0.002048287139240258,0.04022754691642902,-0.040351683981352464,-0.009843927595812428,-0.01634093418590757,-0.04881110771811467]', 'param_1': 1}
+2025-04-07 16:59:43,069 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:43,179 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:43,180 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:43,182 - sqlalchemy.engine.Engine - INFO - [generated in 0.00111s] {'embedding_1': '[-0.04815470195040215,0.08228874370266567,-0.04189611667728714,0.009812214860143238,0.0052421225984141335,0.032899345785205016,0.058568961565116304,0 ... (21417 characters truncated) ... 0.03755742908221872,-0.0021607300359869955,0.0452795308887135,-0.0006028247940018549,-0.01514444347365831,0.008512844385286007,-0.019986955260635403]', 'param_1': 1}
+2025-04-07 16:59:43,208 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:43,354 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:43,356 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:43,356 - sqlalchemy.engine.Engine - INFO - [generated in 0.00112s] {'embedding_1': '[-0.0037881383256518583,0.05291694128400057,-0.07459611903502054,-0.015699446092038445,-0.02554961624054454,-0.05014638375308835,0.021345730389293226 ... (21430 characters truncated) ... -0.007642400921925396,-0.06180917030422089,0.047643402907521004,0.006076443953920591,0.012890434556377494,-0.012514656902218608,-0.02849444145354814]', 'param_1': 1}
+2025-04-07 16:59:43,384 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:43,516 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:43,519 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:43,520 - sqlalchemy.engine.Engine - INFO - [generated in 0.00181s] {'embedding_1': '[-0.051232963967565125,0.04851283918783054,-0.060934161127337946,-0.00020316873313522914,-0.022597226527387437,0.0012469768784969177,0.04370816336678 ... (21437 characters truncated) ... .030118382246032045,-0.026284214285312975,0.013564893948220247,0.0032299141983875824,0.005223344047599007,0.005718449150223014,-0.012743792953088647]', 'param_1': 1}
+2025-04-07 16:59:43,548 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:43,729 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:43,732 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:43,732 - sqlalchemy.engine.Engine - INFO - [generated in 0.00117s] {'embedding_1': '[-0.031084460242854328,0.03365642692487436,-0.023484714653722382,-0.0197577494803639,-0.01940813557309011,-0.0027648013444399,0.006941640977629763,0. ... (21430 characters truncated) ... .06686823139685825,-0.030604428842802518,-0.016602884620641776,0.04136272259069262,-0.013773761731329678,-0.045638834987744924,-0.008250359281330411]', 'param_1': 1}
+2025-04-07 16:59:43,760 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:43,870 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:43,871 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:43,872 - sqlalchemy.engine.Engine - INFO - [generated in 0.00105s] {'embedding_1': '[0.012109637646228187,0.04563980537421176,-0.050260380191088395,-0.010890052794161607,-0.04821081078548229,0.05256628421355664,-0.009152554300156561, ... (21413 characters truncated) ... 6,0.03728936163882605,0.012682912565076055,0.025208093332019874,-0.04436535225932942,0.021482645184435847,-0.023291186775679814,-0.01530127069493379]', 'param_1': 1}
+2025-04-07 16:59:43,899 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:44,015 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:44,017 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:44,018 - sqlalchemy.engine.Engine - INFO - [generated in 0.00116s] {'embedding_1': '[-0.051599207844396096,0.01638163684033277,-0.04582834080063406,-0.007618821147350502,-0.0072058176398819,0.03159995862462639,0.0068408298586773095,0 ... (21448 characters truncated) ... ,0.004422942663436763,-0.01804331901041395,-0.04148902535344931,0.028528734154426052,0.007852247088927905,0.0007919933645021915,0.014561929070639797]', 'param_1': 1}
+2025-04-07 16:59:44,045 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:44,203 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:44,208 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:44,208 - sqlalchemy.engine.Engine - INFO - [generated in 0.00250s] {'embedding_1': '[-0.02667027886356913,0.01838157522894664,-0.04220153473897491,0.027201714435523192,-0.040012177794254644,0.005775065618194623,0.010951688304337157,0 ... (21423 characters truncated) ... 4,0.013614165422827725,0.02561510695377501,0.001278689343355681,0.006136830113250146,0.007951347525232456,0.024623853525051528,-0.012150700937607733]', 'param_1': 1}
+2025-04-07 16:59:44,237 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:44,367 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:44,369 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:44,369 - sqlalchemy.engine.Engine - INFO - [generated in 0.00120s] {'embedding_1': '[-0.05059819617303246,0.04665564039816452,-0.062351434324219704,0.009634554698102956,-0.007658677273959707,0.02977228781063287,0.0295916864198435,0.0 ... (21436 characters truncated) ... 07694964756886845,-0.031010468924780564,-0.006573265321624969,-0.01061114636829278,-0.0011048329212178525,-0.025194963361019052,0.006942312784257931]', 'param_1': 1}
+2025-04-07 16:59:44,397 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:44,530 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:44,532 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:44,533 - sqlalchemy.engine.Engine - INFO - [generated in 0.00132s] {'embedding_1': '[-0.06892967862304368,0.049237863664626375,-0.027306414363214328,-0.015848887944186776,-0.03296961225737749,-0.019518960419279772,0.05494725869601161 ... (21432 characters truncated) ... ,0.02723899658038156,0.023110049049733867,0.00691659000464162,-0.004879055698501583,0.023607801623964652,-0.0010146045249961452,0.017401086762157708]', 'param_1': 1}
+2025-04-07 16:59:44,561 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:44,700 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:44,702 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:44,703 - sqlalchemy.engine.Engine - INFO - [generated in 0.00118s] {'embedding_1': '[-0.070099721947391,0.037900536728967794,-0.05084020633562696,-0.04154072267103612,-0.011587154910019413,0.009134046209745094,-0.0269992012072824,0.0 ... (21428 characters truncated) ... ,0.0053625975118615,-0.024029296909597736,0.002176378613733859,-0.00630432253797011,-0.012463656589610147,-0.03682797782258444,-0.020275586298484288]', 'param_1': 1}
+2025-04-07 16:59:44,730 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:44,842 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:44,845 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:44,846 - sqlalchemy.engine.Engine - INFO - [generated in 0.00120s] {'embedding_1': '[-0.06628861507409649,0.024962481908330583,-0.05523824910057328,-0.025601305367769195,-0.015931276371518865,0.011314029268326274,-0.01346497474953933 ... (21442 characters truncated) ... 0.01493002556903936,-0.019570644594891246,0.012261664002726849,0.017458956941944243,-0.025929437523061993,-0.03784445324268163,-0.004585495183460751]', 'param_1': 1}
+2025-04-07 16:59:44,873 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:45,006 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:45,009 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:45,009 - sqlalchemy.engine.Engine - INFO - [generated in 0.00126s] {'embedding_1': '[-0.06212745048696709,0.03420895420007061,-0.05128311920460506,-0.029362918157671815,-0.009645125078705205,-0.00824698598874775,-0.010785327181009994 ... (21410 characters truncated) ... 12056904660860573,-0.040051119184495686,-0.001449618558057036,0.0043449087867361005,-0.011302380342757722,-0.005707959329780432,-0.01650238932492417]', 'param_1': 1}
+2025-04-07 16:59:45,037 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:45,182 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:45,183 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:45,184 - sqlalchemy.engine.Engine - INFO - [generated in 0.00107s] {'embedding_1': '[-0.03527163259173885,0.039755387525571846,-0.061042928768539256,-0.030163547532593222,-0.019922596000825424,-0.03680866024201004,0.00756607089508150 ... (21416 characters truncated) ... 010671995730233625,-0.026923134910449457,-0.001138758548621651,0.0028021594661435446,-0.00803617396754634,-0.030526493453126594,-0.01460330369709259]', 'param_1': 1}
+2025-04-07 16:59:45,212 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:45,336 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:45,340 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:45,340 - sqlalchemy.engine.Engine - INFO - [generated in 0.00220s] {'embedding_1': '[-0.057851480452917325,0.0429485682305593,-0.05261944163817714,-0.012759829655235713,-0.00493347932712911,0.03834328281656316,0.0038121739978622467,0 ... (21457 characters truncated) ... 4,0.02283469389322344,-0.01126478239880236,-0.007186924622155923,-0.02101965363732956,0.00882059539194528,-0.003370964035278829,0.009155835046824096]', 'param_1': 1}
+2025-04-07 16:59:45,370 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:45,488 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:45,490 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:45,491 - sqlalchemy.engine.Engine - INFO - [generated in 0.00125s] {'embedding_1': '[-0.053563727069262164,0.038067120528226916,-0.049384493252656377,-0.01385733485044375,-0.0012565504089094269,0.03775612223063315,0.01155192527172663 ... (21401 characters truncated) ... .005653494656622932,-0.011696876449016395,0.0002018825761431258,0.007758297145550749,0.005832165164822151,-0.009866040431029567,0.015309450819230545]', 'param_1': 1}
+2025-04-07 16:59:45,518 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:45,643 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:45,647 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:45,648 - sqlalchemy.engine.Engine - INFO - [generated in 0.00250s] {'embedding_1': '[-0.05868718757274775,0.04288930582232944,-0.04589770914956434,-0.010465131974818041,-0.007018990295286204,0.031545866934283705,0.020589759648101773, ... (21437 characters truncated) ... 016575826456863507,-0.023929114302364076,0.0006170653623918208,-0.006519927840586696,0.012876537366638909,0.0005119049490992549,0.008682144848625319]', 'param_1': 1}
+2025-04-07 16:59:45,676 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:45,804 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:45,806 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:45,806 - sqlalchemy.engine.Engine - INFO - [generated in 0.00110s] {'embedding_1': '[-0.03073220546967429,0.04294772609055648,-0.0681845935185045,-0.017295097187504275,-0.022240676564290726,-0.016812970242488068,0.04318320803665685,0 ... (21409 characters truncated) ... 0578295259194196,-0.029586501557967257,0.0033314111211110125,-0.019056893690468552,0.0018510184051913352,-0.007550215094519695,-0.000908169801302999]', 'param_1': 1}
+2025-04-07 16:59:45,833 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:45,972 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:45,974 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:45,974 - sqlalchemy.engine.Engine - INFO - [generated in 0.00113s] {'embedding_1': '[-0.046440295492538045,0.04088223969205898,-0.05674314201192974,0.000777790300534429,-0.017770783194774913,-0.03146097102484393,0.03825245296350421,0 ... (21416 characters truncated) ... .0070573152708553934,-0.027639904516925478,0.011732217935262027,-0.03141723936265708,0.0004558520912840678,-0.002775802743033809,0.00742962165192072]', 'param_1': 1}
+2025-04-07 16:59:46,002 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:46,142 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:46,143 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:46,144 - sqlalchemy.engine.Engine - INFO - [generated in 0.00120s] {'embedding_1': '[-0.04649539101074313,0.004793057832570524,-0.05627388579497216,0.023680725537493553,-0.020367203812509255,-0.01660337179976301,0.022888615511331586, ... (21394 characters truncated) ... 1,-0.012364108978869736,-0.02569822579432156,-0.010925273507932105,0.060056088264106,0.005496804219186951,0.0006182611639395898,-0.03177270042155907]', 'param_1': 1}
+2025-04-07 16:59:46,172 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:46,314 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:46,317 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:46,317 - sqlalchemy.engine.Engine - INFO - [generated in 0.00118s] {'embedding_1': '[-0.01180030253188625,0.02224974452426758,-0.05445177432834451,0.026338159667416476,-0.018712160922386926,-0.01646333114298052,0.012283876758571758,0 ... (21431 characters truncated) ... 49,0.004850795045405678,-0.05159617786124653,0.012519514595791587,0.07086871922407036,0.006823625396009187,0.014071102096544696,0.016801974071400258]', 'param_1': 1}
+2025-04-07 16:59:46,345 - sqlalchemy.engine.Engine - INFO - ROLLBACK
+2025-04-07 16:59:46,482 - sqlalchemy.engine.Engine - INFO - BEGIN (implicit)
+2025-04-07 16:59:46,484 - sqlalchemy.engine.Engine - INFO - SELECT trunks.id AS trunks_id, trunks.file_path AS trunks_file_path, trunks.content AS trunks_content, trunks.embedding <-> %(embedding_1)s AS distance, trunks.title AS trunks_title, trunks.embedding AS trunks_embedding, trunks.referrence AS trunks_referrence 
+FROM trunks ORDER BY distance 
+ LIMIT %(param_1)s
+2025-04-07 16:59:46,485 - sqlalchemy.engine.Engine - INFO - [generated in 0.00152s] {'embedding_1': '[0.0013265725794639408,0.03558898910642163,-0.04512250288927411,0.008497193082314182,-0.022653249582106592,-0.025325710672390582,0.01709468828772256, ... (21433 characters truncated) ... ,0.006727180796909208,-0.043687544474808895,-0.009549509222052374,0.08892961176397406,0.021046236947469033,0.002789986906948036,0.011606156344027655]', 'param_1': 1}
+2025-04-07 16:59:46,513 - sqlalchemy.engine.Engine - INFO - ROLLBACK

+ 19 - 0
community/community_report.md

@@ -0,0 +1,19 @@
+# 疾病图谱关系社区分析报告
+
+**生成时间**: 2025-04-02 20:44:23
+
+**检测算法**: Leiden Algorithm
+
+**算法参数**:
+
+- 分辨率参数: 0.070
+
+**社区数量**: 51103
+
+**模块度(Q)**: 260439.1200
+
+
+## 社区结构分析
+
+
+## 可视化分析

File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_1.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_10.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_11.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_12.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_13.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_14.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_15.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_16.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_17.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_18.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_19.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_2.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_20.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_21.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_22.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_23.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_24.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_25.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_26.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_27.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_28.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_29.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_3.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_30.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_31.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_32.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_33.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_34.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_35.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_36.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_37.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_38.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_39.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_4.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_40.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_41.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_42.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_43.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_44.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_45.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_46.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_47.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_48.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_49.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_5.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_50.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_51.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_52.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_53.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_54.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_55.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_56.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_57.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_58.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_59.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_6.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_60.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_61.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_62.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_63.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_64.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_65.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_66.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_67.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_68.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_69.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_7.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_70.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_71.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_72.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_73.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_74.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_75.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_76.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_77.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_78.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_79.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_8.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_80.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_81.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_82.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_83.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_84.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_85.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_86.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_87.json


File diff suppressed because it is too large
+ 98434 - 0
community/web/cached_data/relationship_med_88.json


File diff suppressed because it is too large
+ 18782 - 0
community/web/cached_data/relationship_med_89.json


File diff suppressed because it is too large
+ 77002 - 0
community/web/cached_data/relationship_med_9.json


+ 180 - 0
router/graph_router.py

@@ -0,0 +1,180 @@
+import sys,os
+
+from community.graph_helper import GraphHelper
+from model.response import StandardResponse
+
+current_path = os.getcwd()
+sys.path.append(current_path)
+import time
+from fastapi import APIRouter, Depends, Query
+from typing import Optional, List
+
+import sys
+sys.path.append('..')
+from utils.agent import call_chat_api,get_conversation_id
+import json
+
+
+
+router = APIRouter(prefix="/graph", tags=["Knowledge Graph"])
+graph_helper = GraphHelper()
+
+
+
+@router.get("/nodes/recommend", response_model=StandardResponse)
+async def recommend(
+    chief: str
+):
+    app_id = "256fd853-60b0-4357-b11b-8114b4e90ae0"
+    conversation_id = get_conversation_id(app_id)
+    result = call_chat_api(app_id, conversation_id, chief)
+    json_data = json.loads(result)
+    keyword = " ".join(json_data["chief_complaint"])
+    return await neighbor_search(keyword=keyword, neighbor_type='Check',limit=10)
+
+
+@router.get("/nodes/neighbor_search", response_model=StandardResponse)
+async def neighbor_search(
+    keyword: str = Query(..., min_length=2),
+    limit: int = Query(10, ge=1, le=100),
+    node_type: Optional[str] = Query(None),
+    neighbor_type: Optional[str] = Query(None),
+    min_degree: Optional[int] = Query(None)
+):
+    """
+    根据关键词和属性过滤条件搜索图谱节点
+    """
+    try:
+        start_time = time.time()
+        print(f"开始执行neighbor_search,参数:keyword={keyword}, limit={limit}, node_type={node_type}, neighbor_type={neighbor_type}, min_degree={min_degree}")
+        scores_factor = 1.7
+        results = []
+        diseases = {}
+
+        has_good_result = False
+
+        if not has_good_result:
+            keywords = keyword.split(" ")
+            new_results = []
+            for item in keywords:
+                if len(item) > 1:
+                    results = graph_helper.node_search2(
+                        item,
+                        limit=limit,
+                        node_type=node_type,
+                        min_degree=min_degree
+                    )
+
+                    for result_item in results:
+                        if result_item["score"] > scores_factor:
+                            new_results.append(result_item)
+                            if result_item["type"] == "Disease":
+                                if result_item["id"] not in diseases:
+                                    diseases[result_item["id"]] =  {
+                                                        "id":result_item["id"],
+                                                        "type":1,
+                                                        "count":1
+                                                    }
+                                else:
+                                    diseases[result_item["id"]]["count"] = diseases[result_item["id"]]["count"] + 1
+                                has_good_result = True
+            results = new_results
+            print("扩展搜索的结果数量:",len(results))
+
+        neighbors_data = {}
+
+        for item in results:
+            entities, relations = graph_helper.neighbor_search(item["id"], 1)
+            max = 20 #因为类似发热这种疾病会有很多关联的疾病,所以需要防止检索范围过大,设置了上限
+            for neighbor in entities:
+                if neighbor["type"] == neighbor_type:
+                    #如果这里正好找到了要求检索的节点类型
+                    if neighbor["id"] not in neighbors_data:
+                        neighbors_data[neighbor["id"]] =  {
+                                            "id":neighbor["id"],
+                                            "type":neighbor["type"],
+                                            "count":1
+                                        }
+                    else:
+                         neighbors_data[neighbor["id"]]["count"] = neighbors_data[neighbor["id"]]["count"] + 1
+                else:
+                    #如果这里找到的节点是个疾病,那么就再检索一层,看看是否有符合要求的节点类型
+                    if neighbor["type"] == "Disease":
+                        if neighbor["id"] not in diseases:
+                            diseases[neighbor["id"]] =  {
+                                                "id":neighbor["id"],
+                                                "type":"Disease",
+                                                "count":1
+                                            }
+                        else:
+                            diseases[neighbor["id"]]["count"] = diseases[neighbor["id"]]["count"] + 1
+                        disease_entities, relations = graph_helper.neighbor_search(neighbor["id"], 1)
+                        for disease_neighbor in disease_entities:
+                            #有时候数据中会出现链接有的节点,但是节点数据中缺失的情况,所以这里要检查
+                            if "type" in disease_neighbor.keys():
+                                if disease_neighbor["type"] == neighbor_type:
+                                    if disease_neighbor["id"] not in neighbors_data:
+                                        neighbors_data[disease_neighbor["id"]] = {
+                                            "id":disease_neighbor["id"],
+                                            "type":disease_neighbor["type"],
+                                            "count":1
+                                        }
+                                    else:
+                                        neighbors_data[disease_neighbor["id"]]["count"] = neighbors_data[disease_neighbor["id"]]["count"] + 1
+                        #最多搜索的范围是max个疾病
+                        max = max - 1
+                        if max == 0:
+                            break
+        disease_data = [diseases[k] for k in diseases]
+        disease_data = sorted(disease_data, key=lambda x:x["count"],reverse=True)
+        data = [neighbors_data[k] for k in neighbors_data if neighbors_data[k]["type"] == "Check"]
+
+        data = sorted(data, key=lambda x:x["count"],reverse=True)
+
+        if len(data) > 10:
+            data = data[:10]
+            factor = 1.0
+            total = 0.0
+            for item in data:
+                total = item["count"] * factor + total
+            for item in data:
+                item["count"] = item["count"] / total
+            factor = factor * 0.9
+
+        if len(disease_data) > 10:
+            disease_data = disease_data[:10]
+            factor = 1.0
+            total = 0.0
+            for item in disease_data:
+                total = item["count"] * factor + total
+            for item in disease_data:
+                item["count"] = item["count"] / total
+            factor = factor * 0.9
+
+        for item in data:
+            item["type"] = 3
+            item["name"] = item["id"]
+            item["rate"] = round(item["count"] * 100, 2)
+        for item in disease_data:
+            item["type"] = 1
+            item["name"] = item["id"]
+            item["rate"] = round(item["count"] * 100, 2)
+        end_time = time.time()
+        print(f"neighbor_search执行完成,耗时:{end_time - start_time:.2f}秒")
+
+        return StandardResponse(
+            success=True,
+            records={"可能诊断":disease_data,"推荐检验":data},
+            error_code = 0,
+            error_msg=f"Found {len(results)} nodes"
+        )
+    except Exception as e:
+        print(e)
+        raise e
+        return StandardResponse(
+            success=False,
+            error_code=500,
+            error_msg=str(e)
+        )
+
+graph_router = router

+ 54 - 0
utils/agent.py

@@ -0,0 +1,54 @@
+import requests
+import json
+import time
+
+authorization = 'Bearer bce-v3/ALTAK-MyGbNEA18oT3boS2nOga1/d8b5057f7842f59b2c64971d8d077fe724d0aed5'
+
+
+def call_chat_api(app_id: str, conversation_id: str, user_input: str) -> str:
+    url = "https://qianfan.baidubce.com/v2/app/conversation/runs"
+
+    payload = json.dumps({
+        "app_id": app_id,
+        "conversation_id": conversation_id,
+        "query": user_input,
+        "stream": False
+    }, ensure_ascii=False)
+
+    headers = {
+        'Authorization': authorization,
+        'Content-Type': 'application/json'
+    }
+
+    start_time = time.time()
+    response = requests.post(url, headers=headers, data=payload.encode('utf-8'), timeout=60)
+    end_time = time.time()
+
+    elapsed_time = end_time - start_time
+    print(f"Elapsed time: {elapsed_time:.2f} seconds")
+    answer = json.loads(response.text)["answer"]
+    return answer.strip("\n```json")
+
+
+def get_conversation_id(app_id: str) -> str:
+    url = "https://qianfan.baidubce.com/v2/app/conversation"
+
+    payload = json.dumps({
+        "app_id": app_id
+    }, ensure_ascii=False)
+
+    headers = {
+        'Authorization': authorization,
+        'Content-Type': 'application/json'
+    }
+
+    response = requests.post(url, headers=headers, data=payload.encode('utf-8'), timeout=60)
+    return json.loads(response.text)["conversation_id"]
+
+
+if __name__ == "__main__":
+    conversation_id = get_conversation_id("256fd853-60b0-4357-b11b-8114b4e90ae0")
+    print(conversation_id)
+    result = call_chat_api("256fd853-60b0-4357-b11b-8114b4e90ae0", conversation_id,
+                            "反复咳嗽、咳痰伴低热2月余,加重伴夜间盗汗1周。")
+    print(result)

+ 233 - 0
utils/json_to_text.py

@@ -0,0 +1,233 @@
+import json
+
+class JsonToText:
+    def convert(self, json_data):
+        output = []
+        output.append(f"年龄:{json_data['age']}岁")
+        output.append(f"性别:{'女' if json_data['sex'] == 2 else '男'}")
+        output.append(f"职业:{json_data['doctor']['professionalTitle']}")
+        output.append(f"科室:{json_data['dept'][0]['name']}")
+        output.append("\n详细信息")
+        output.append(f"主诉:{json_data['chief']}")
+        output.append(f"现病史:{json_data['symptom']}")
+        output.append(f"查体:{json_data['vital']}")
+        output.append(f"既往史:{json_data['pasts']}")
+        output.append(f"婚姻状况:{json_data['marital']}")
+        output.append(f"个人史:{json_data['personal']}")
+        output.append(f"家族史:{json_data['family']}")
+        output.append(f"月经史:{json_data['menstrual']}")
+        output.append(f"疾病名称:{json_data['diseaseName']['name']}")
+        output.append("其他指数:无")
+        output.append(f"手术名称:{json_data['operationName']['name']}")
+        output.append("传染性:无")
+        output.append("手术记录:无")
+        output.append(f"过敏史:{json_data['allergy'] or '无'}")
+        output.append("疫苗接种:无")
+        output.append("其他:无")
+        output.append("检验申请单:无")
+        output.append("影像申请单:无")
+        output.append("诊断申请单:无")
+        output.append("用药申请单:无")
+        output.append("检验结果:无")
+        output.append("影像结果:无")
+        output.append("诊断结果:无")
+        output.append("用药记录:无")
+        output.append("输血记录:无")
+        output.append("\n科室信息")
+        output.append(f"科室名称:{json_data['dept'][0]['name']}")
+        output.append(f"唯一名称:{json_data['dept'][0]['uniqueName']}")
+        return '\n'.join(output)
+
+class JsonToTextConverter:
+    @staticmethod
+    def convert(json_str):
+        json_data = json.loads(json_str)
+        return JsonToText().convert(json_data)
+
+    def convert(self, json_str):
+        json_data = json.loads(json_str)
+        return JsonToText().convert(json_data)
+        output.append(f"年龄:{json_data['age']}岁")
+        output.append(f"性别:{'女' if json_data['sex'] == 2 else '男'}")
+        output.append(f"职业:{json_data['doctor']['professionalTitle']}")
+        output.append(f"科室:{json_data['dept'][0]['name']}")
+        output.append("\n详细信息")
+        output.append(f"主诉:{json_data['chief']}")
+        output.append(f"现病史:{json_data['symptom']}")
+        output.append(f"查体:{json_data['vital']}")
+        output.append(f"既往史:{json_data['pasts']}")
+        output.append(f"婚姻状况:{json_data['marital']}")
+        output.append(f"个人史:{json_data['personal']}")
+        output.append(f"家族史:{json_data['family']}")
+        output.append(f"月经史:{json_data['menstrual']}")
+        output.append(f"疾病名称:{json_data['diseaseName']['name']}")
+        output.append("其他指数:无")
+        output.append(f"手术名称:{json_data['operationName']['name']}")
+        output.append("传染性:无")
+        output.append("手术记录:无")
+        output.append(f"过敏史:{json_data['allergy'] or '无'}")
+        output.append("疫苗接种:无")
+        output.append("其他:无")
+        output.append("检验申请单:无")
+        output.append("影像申请单:无")
+        output.append("诊断申请单:无")
+        output.append("用药申请单:无")
+        output.append("检验结果:无")
+        output.append("影像结果:无")
+        output.append("诊断结果:无")
+        output.append("用药记录:无")
+        output.append("输血记录:无")
+        output.append("\n科室信息")
+        output.append(f"科室名称:{json_data['dept'][0]['name']}")
+        output.append(f"唯一名称:{json_data['dept'][0]['uniqueName']}")
+        return '\n'.join(output)
+
+    def convert(self, json_str):
+        json_data = json.loads(json_str)
+        return JsonToText().convert(json_data)
+        output.append(f"年龄:{json_data['age']}岁")
+        output.append(f"性别:{'女' if json_data['sex'] == 2 else '男'}")
+        output.append(f"职业:{json_data['doctor']['professionalTitle']}")
+        output.append(f"科室:{json_data['dept'][0]['name']}")
+        output.append("\n详细信息")
+        output.append(f"主诉:{json_data['chief']}")
+        output.append(f"现病史:{json_data['symptom']}")
+        output.append(f"查体:{json_data['vital']}")
+        output.append(f"既往史:{json_data['pasts']}")
+        output.append(f"婚姻状况:{json_data['marital']}")
+        output.append(f"个人史:{json_data['personal']}")
+        output.append(f"家族史:{json_data['family']}")
+        output.append(f"月经史:{json_data['menstrual']}")
+        output.append(f"疾病名称:{json_data['diseaseName']['name']}")
+        output.append("其他指数:无")
+        output.append(f"手术名称:{json_data['operationName']['name']}")
+        output.append("传染性:无")
+        output.append("手术记录:无")
+        output.append(f"过敏史:{json_data['allergy'] or '无'}")
+        output.append("疫苗接种:无")
+        output.append("其他:无")
+        output.append("检验申请单:无")
+        output.append("影像申请单:无")
+        output.append("诊断申请单:无")
+        output.append("用药申请单:无")
+        output.append("检验结果:无")
+        output.append("影像结果:无")
+        output.append("诊断结果:无")
+        output.append("用药记录:无")
+        output.append("输血记录:无")
+        output.append("\n科室信息")
+        output.append(f"科室名称:{json_data['dept'][0]['name']}")
+        output.append(f"唯一名称:{json_data['dept'][0]['uniqueName']}")
+        return '\n'.join(output)
+
+
+
+if __name__ == '__main__':
+    json_data = {
+        "hospitalId": -1,
+        "age": "28",
+        "sex": 2,
+        "doctor": {
+            "professionalTitle": "付医生"
+        },
+        "chief": "反复咳嗽、咳痰伴低热2月余,加重伴夜间盗汗1周。",
+        "symptom": "2小时前无诱因下出现持续性上腹部绞痛,剧痛难忍,伴恶心慢性,无呕吐,无大小便异常,曾至当地卫生院就诊,查血常规提示:血小板计数5*10^9/L",
+        "vital": "神清,急性病容,皮肤巩膜黄软,心肺无殊,腹平软,上腹部压痛明显,无反跳痛",
+        "pasts": "既往有胆总管结石,既往青霉素过敏",
+        "marriage": "",
+        "personal": "不饮酒,不抽烟",
+        "family": "不详",
+        "marital": "未婚未育",
+        "menstrual": "末次月经2020-12-23,月经期第二天",
+        "diseaseName": {
+            "dateValue": "",
+            "name": "胆囊结石伴有急性胆囊炎",
+            "uniqueName": ""
+        },
+        "otherIndex": {},
+        "operationName": {
+            "dateValue": "2020-12-24 17:39:20",
+            "name": "经皮肝穿刺引流术",
+            "uniqueName": "经皮肝穿刺引流术"
+        },
+        "infectious": "",
+        "operation": [],
+        "allergy": "",
+        "vaccination": "",
+        "other": "",
+        "lisString": "",
+        "pacsString": "",
+        "diagString": "",
+        "drugString": "",
+        "lis": [],
+        "pacs": [],
+        "diag": [
+            {
+                "dateValue": "",
+                "name": "胆囊结石伴有急性胆囊炎",
+                "uniqueName": ""
+            }
+        ],
+        "lisOrder": [],
+        "pacsOrder": [
+            {
+                "uniqueName": "经皮肝穿刺胆管造影",
+                "detailName": "经皮肝穿刺胆管造影",
+                "name": "经皮肝穿刺胆管造影",
+                "dateValue": "2020-12-24 17:33:52",
+                "time": "2020-12-24 17:33:52",
+                "check": True
+            }
+        ],
+        "diagOrder": [],
+        "drugOrder": [
+            {
+                "uniqueName": "利多卡因",
+                "detailName": "利多卡因",
+                "name": "利多卡因注射剂",
+                "flg": 5,
+                "time": "2020-12-24 17:37:27",
+                "dateValue": "2020-12-24 17:37:27",
+                "selectShow": False,
+                "check": True,
+                "form": "注射剂",
+                "selectVal": "1"
+            },
+            {
+                "uniqueName": "青霉素",
+                "detailName": "青霉素",
+                "name": "青霉素注射剂",
+                "flg": 5,
+                "time": "2020-12-24 17:40:08",
+                "dateValue": "2020-12-24 17:40:08",
+                "selectShow": False,
+                "check": True,
+                "form": "注射剂",
+                "selectVal": "1"
+            }
+        ],
+        "operationOrder": [
+            {
+                "uniqueName": "经皮肝穿刺引流术",
+                "detailName": "经皮肝穿刺引流术",
+                "name": "经皮肝穿刺引流术",
+                "flg": 6,
+                "time": "2020-12-24 17:39:20",
+                "dateValue": "2020-12-24 17:39:20",
+                "hasTreat": 1,
+                "check": True
+            }
+        ],
+        "otherOrder": [],
+        "drug": [],
+        "transfusion": [],
+        "transfusionOrder": [],
+        "dept": [
+            {
+                "name": "全科",
+                "uniqueName": "全科"
+            }
+        ]
+    }
+
+    print(JsonToText().convert(json_data))