isage-middleware 0.1.0__py3-none-any.whl → 0.1.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of isage-middleware might be problematic. Click here for more details.

Files changed (285) hide show
  1. isage_middleware-0.1.4.dist-info/METADATA +115 -0
  2. isage_middleware-0.1.4.dist-info/RECORD +288 -0
  3. sage/__init__.py +37 -2
  4. sage/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  5. sage/__pycache__/__init__.cpython-311.pyc +0 -0
  6. sage/middleware/__init__.py +31 -77
  7. sage/middleware/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  8. sage/middleware/__pycache__/__init__.cpython-311.pyc +0 -0
  9. sage/middleware/api/__init__.py +32 -17
  10. sage/middleware/api/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  11. sage/middleware/api/__pycache__/__init__.cpython-311.pyc +0 -0
  12. sage/middleware/api/__pycache__/graph_api.cpython-311.opt-2.pyc +0 -0
  13. sage/middleware/api/__pycache__/graph_api.cpython-311.pyc +0 -0
  14. sage/middleware/api/__pycache__/kv_api.cpython-311.opt-2.pyc +0 -0
  15. sage/middleware/api/__pycache__/kv_api.cpython-311.pyc +0 -0
  16. sage/middleware/api/__pycache__/memory_api.cpython-311.opt-2.pyc +0 -0
  17. sage/middleware/api/__pycache__/memory_api.cpython-311.pyc +0 -0
  18. sage/middleware/api/__pycache__/vdb_api.cpython-311.opt-2.pyc +0 -0
  19. sage/middleware/api/__pycache__/vdb_api.cpython-311.pyc +0 -0
  20. sage/middleware/components/enterprise/__init__.py +37 -0
  21. sage/middleware/components/enterprise/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  22. sage/middleware/components/enterprise/__pycache__/__init__.cpython-311.pyc +0 -0
  23. sage/middleware/components/neuromem/__init__.py +37 -0
  24. sage/middleware/components/neuromem/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  25. sage/middleware/components/neuromem/__pycache__/__init__.cpython-311.pyc +0 -0
  26. sage/middleware/components/neuromem/__pycache__/memory_manager.cpython-311.opt-2.pyc +0 -0
  27. sage/middleware/components/neuromem/__pycache__/memory_manager.cpython-311.pyc +0 -0
  28. sage/middleware/components/neuromem/__pycache__/memory_service.cpython-311.opt-2.pyc +0 -0
  29. sage/middleware/components/neuromem/__pycache__/memory_service.cpython-311.pyc +0 -0
  30. sage/middleware/components/neuromem/memory_collection/__init__.py +37 -0
  31. sage/middleware/components/neuromem/memory_collection/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  32. sage/middleware/components/neuromem/memory_collection/__pycache__/__init__.cpython-311.pyc +0 -0
  33. sage/middleware/components/neuromem/memory_collection/__pycache__/base_collection.cpython-311.opt-2.pyc +0 -0
  34. sage/middleware/components/neuromem/memory_collection/__pycache__/base_collection.cpython-311.pyc +0 -0
  35. sage/middleware/components/neuromem/memory_collection/__pycache__/graph_collection.cpython-311.opt-2.pyc +0 -0
  36. sage/middleware/components/neuromem/memory_collection/__pycache__/graph_collection.cpython-311.pyc +0 -0
  37. sage/middleware/components/neuromem/memory_collection/__pycache__/kv_collection.cpython-311.opt-2.pyc +0 -0
  38. sage/middleware/components/neuromem/memory_collection/__pycache__/kv_collection.cpython-311.pyc +0 -0
  39. sage/middleware/components/neuromem/memory_collection/__pycache__/vdb_collection.cpython-311.opt-2.pyc +0 -0
  40. sage/middleware/components/neuromem/memory_collection/__pycache__/vdb_collection.cpython-311.pyc +0 -0
  41. sage/middleware/components/neuromem/memory_collection/base_collection.py +167 -0
  42. sage/middleware/components/neuromem/memory_collection/graph_collection.py +11 -0
  43. sage/middleware/components/neuromem/memory_collection/kv_collection.py +709 -0
  44. sage/middleware/components/neuromem/memory_collection/vdb_collection.py +922 -0
  45. sage/middleware/components/neuromem/memory_manager.py +401 -0
  46. sage/middleware/components/neuromem/memory_service.py +324 -0
  47. sage/middleware/components/neuromem/micro_service/__init__.py +37 -0
  48. sage/middleware/components/neuromem/micro_service/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  49. sage/middleware/components/neuromem/micro_service/__pycache__/__init__.cpython-311.pyc +0 -0
  50. sage/middleware/components/neuromem/micro_service/__pycache__/neuromem_vdb.cpython-311.opt-2.pyc +0 -0
  51. sage/middleware/components/neuromem/micro_service/__pycache__/neuromem_vdb.cpython-311.pyc +0 -0
  52. sage/middleware/components/neuromem/micro_service/__pycache__/neuromem_vdb_service.cpython-311.opt-2.pyc +0 -0
  53. sage/middleware/components/neuromem/micro_service/__pycache__/neuromem_vdb_service.cpython-311.pyc +0 -0
  54. sage/middleware/components/neuromem/micro_service/neuromem_vdb.py +198 -0
  55. sage/middleware/components/neuromem/micro_service/neuromem_vdb_service.py +118 -0
  56. sage/middleware/components/neuromem/search_engine/__init__.py +37 -0
  57. sage/middleware/components/neuromem/search_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  58. sage/middleware/components/neuromem/search_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  59. sage/middleware/components/neuromem/search_engine/graph_index/__init__.py +37 -0
  60. sage/middleware/components/neuromem/search_engine/graph_index/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  61. sage/middleware/components/neuromem/search_engine/graph_index/__pycache__/__init__.cpython-311.pyc +0 -0
  62. sage/middleware/components/neuromem/search_engine/graph_index/__pycache__/base_graph_index.cpython-311.opt-2.pyc +0 -0
  63. sage/middleware/components/neuromem/search_engine/graph_index/__pycache__/base_graph_index.cpython-311.pyc +0 -0
  64. sage/middleware/components/neuromem/search_engine/graph_index/base_graph_index.py +40 -0
  65. sage/middleware/components/neuromem/search_engine/hybird_index/__init__.py +37 -0
  66. sage/middleware/components/neuromem/search_engine/hybird_index/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  67. sage/middleware/components/neuromem/search_engine/hybird_index/__pycache__/__init__.cpython-311.pyc +0 -0
  68. sage/middleware/components/neuromem/search_engine/kv_index/__init__.py +37 -0
  69. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  70. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/__init__.cpython-311.pyc +0 -0
  71. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/base_kv_index.cpython-311.opt-2.pyc +0 -0
  72. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/base_kv_index.cpython-311.pyc +0 -0
  73. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/bm25s_index.cpython-311.opt-2.pyc +0 -0
  74. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/bm25s_index.cpython-311.pyc +0 -0
  75. sage/middleware/components/neuromem/search_engine/kv_index/base_kv_index.py +76 -0
  76. sage/middleware/components/neuromem/search_engine/kv_index/bm25s_index.py +320 -0
  77. sage/middleware/components/neuromem/search_engine/vdb_index/__init__.py +37 -0
  78. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  79. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/__init__.cpython-311.pyc +0 -0
  80. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/base_vdb_index.cpython-311.opt-2.pyc +0 -0
  81. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/base_vdb_index.cpython-311.pyc +0 -0
  82. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/faiss_index.cpython-311.opt-2.pyc +0 -0
  83. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/faiss_index.cpython-311.pyc +0 -0
  84. sage/middleware/components/neuromem/search_engine/vdb_index/base_vdb_index.py +53 -0
  85. sage/middleware/components/neuromem/search_engine/vdb_index/faiss_index.py +700 -0
  86. sage/middleware/components/neuromem/storage_engine/__init__.py +37 -0
  87. sage/middleware/components/neuromem/storage_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  88. sage/middleware/components/neuromem/storage_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  89. sage/middleware/components/neuromem/storage_engine/__pycache__/metadata_storage.cpython-311.opt-2.pyc +0 -0
  90. sage/middleware/components/neuromem/storage_engine/__pycache__/metadata_storage.cpython-311.pyc +0 -0
  91. sage/middleware/components/neuromem/storage_engine/__pycache__/text_storage.cpython-311.opt-2.pyc +0 -0
  92. sage/middleware/components/neuromem/storage_engine/__pycache__/text_storage.cpython-311.pyc +0 -0
  93. sage/middleware/components/neuromem/storage_engine/__pycache__/vector_storage.cpython-311.opt-2.pyc +0 -0
  94. sage/middleware/components/neuromem/storage_engine/__pycache__/vector_storage.cpython-311.pyc +0 -0
  95. sage/middleware/components/neuromem/storage_engine/kv_backend/__init__.py +37 -0
  96. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  97. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/__init__.cpython-311.pyc +0 -0
  98. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/base_kv_backend.cpython-311.opt-2.pyc +0 -0
  99. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/base_kv_backend.cpython-311.pyc +0 -0
  100. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/dict_kv_backend.cpython-311.opt-2.pyc +0 -0
  101. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/dict_kv_backend.cpython-311.pyc +0 -0
  102. sage/middleware/components/neuromem/storage_engine/kv_backend/base_kv_backend.py +65 -0
  103. sage/middleware/components/neuromem/storage_engine/kv_backend/dict_kv_backend.py +54 -0
  104. sage/middleware/components/neuromem/storage_engine/metadata_storage.py +260 -0
  105. sage/middleware/components/neuromem/storage_engine/text_storage.py +106 -0
  106. sage/middleware/components/neuromem/storage_engine/vector_storage.py +85 -0
  107. sage/middleware/components/neuromem/tests/__init__.py +37 -0
  108. sage/middleware/components/neuromem/tests/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  109. sage/middleware/components/neuromem/tests/__pycache__/__init__.cpython-311.pyc +0 -0
  110. sage/middleware/components/neuromem/tests/__pycache__/test_memory_service.cpython-311.opt-2.pyc +0 -0
  111. sage/middleware/components/neuromem/tests/__pycache__/test_memory_service.cpython-311.pyc +0 -0
  112. sage/middleware/components/neuromem/tests/core_test/__init__.py +37 -0
  113. sage/middleware/components/neuromem/tests/core_test/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  114. sage/middleware/components/neuromem/tests/core_test/__pycache__/__init__.cpython-311.pyc +0 -0
  115. sage/middleware/components/neuromem/tests/core_test/collection_test/__init__.py +37 -0
  116. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  117. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/__init__.cpython-311.pyc +0 -0
  118. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/kv_collection_test.cpython-311.opt-2.pyc +0 -0
  119. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/kv_collection_test.cpython-311.pyc +0 -0
  120. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/vdb_collection_test.cpython-311.opt-2.pyc +0 -0
  121. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/vdb_collection_test.cpython-311.pyc +0 -0
  122. sage/middleware/components/neuromem/tests/core_test/collection_test/kv_collection_test.py +60 -0
  123. sage/middleware/components/neuromem/tests/core_test/collection_test/vdb_collection_test.py +88 -0
  124. sage/middleware/components/neuromem/tests/core_test/manager_test.py +154 -0
  125. sage/middleware/components/neuromem/tests/test_memory_service.py +293 -0
  126. sage/middleware/components/neuromem/utils/__init__.py +37 -0
  127. sage/middleware/components/neuromem/utils/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  128. sage/middleware/components/neuromem/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  129. sage/middleware/components/neuromem/utils/__pycache__/path_utils.cpython-311.opt-2.pyc +0 -0
  130. sage/middleware/components/neuromem/utils/__pycache__/path_utils.cpython-311.pyc +0 -0
  131. sage/middleware/components/neuromem/utils/path_utils.py +25 -0
  132. sage/middleware/components/sage_db/__init__.py +37 -0
  133. sage/middleware/components/sage_db/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  134. sage/middleware/components/sage_db/__pycache__/__init__.cpython-311.pyc +0 -0
  135. sage/middleware/{enterprise → components}/sage_db/__pycache__/sage_db.cpython-311.opt-2.pyc +0 -0
  136. sage/middleware/{enterprise → components}/sage_db/__pycache__/sage_db.cpython-311.pyc +0 -0
  137. sage/middleware/components/sage_db/python/__init__.py +37 -0
  138. sage/middleware/components/sage_db/python/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  139. sage/middleware/components/sage_db/python/__pycache__/__init__.cpython-311.pyc +0 -0
  140. sage/middleware/{enterprise → components}/sage_db/python/__pycache__/sage_db.cpython-311.opt-2.pyc +0 -0
  141. sage/middleware/{enterprise → components}/sage_db/python/__pycache__/sage_db.cpython-311.pyc +0 -0
  142. sage/middleware/{enterprise → components}/sage_db/tests/__pycache__/test_python.cpython-311.opt-2.pyc +0 -0
  143. sage/middleware/{enterprise → components}/sage_db/tests/__pycache__/test_python.cpython-311.pyc +0 -0
  144. sage/middleware/examples/__pycache__/api_usage_tutorial.cpython-311.opt-2.pyc +0 -0
  145. sage/middleware/examples/__pycache__/api_usage_tutorial.cpython-311.pyc +0 -0
  146. sage/middleware/examples/__pycache__/microservices_demo.cpython-311.opt-2.pyc +0 -0
  147. sage/middleware/examples/__pycache__/microservices_demo.cpython-311.pyc +0 -0
  148. sage/middleware/examples/__pycache__/microservices_registration_demo.cpython-311.opt-2.pyc +0 -0
  149. sage/middleware/examples/__pycache__/microservices_registration_demo.cpython-311.pyc +0 -0
  150. sage/middleware/examples/api_usage_tutorial.py +3 -3
  151. sage/middleware/examples/dag_microservices_demo.py +7 -8
  152. sage/middleware/examples/microservices_integration_demo.py +8 -11
  153. sage/middleware/examples/microservices_registration_demo.py +8 -12
  154. sage/middleware/services/__init__.py +37 -0
  155. sage/middleware/services/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  156. sage/middleware/services/__pycache__/__init__.cpython-311.pyc +0 -0
  157. sage/middleware/services/graph/__init__.py +33 -4
  158. sage/middleware/services/graph/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  159. sage/middleware/services/graph/__pycache__/__init__.cpython-311.pyc +0 -0
  160. sage/middleware/services/graph/__pycache__/graph_index.cpython-311.opt-2.pyc +0 -0
  161. sage/middleware/services/graph/__pycache__/graph_index.cpython-311.pyc +0 -0
  162. sage/middleware/services/graph/__pycache__/graph_service.cpython-311.opt-2.pyc +0 -0
  163. sage/middleware/services/graph/__pycache__/graph_service.cpython-311.pyc +0 -0
  164. sage/middleware/services/graph/examples/__pycache__/graph_demo.cpython-311.opt-2.pyc +0 -0
  165. sage/middleware/services/graph/examples/__pycache__/graph_demo.cpython-311.pyc +0 -0
  166. sage/middleware/services/graph/examples/graph_demo.py +3 -2
  167. sage/middleware/services/graph/graph_service.py +68 -0
  168. sage/middleware/services/graph/search_engine/__init__.py +37 -0
  169. sage/middleware/services/graph/search_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  170. sage/middleware/services/graph/search_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  171. sage/middleware/services/graph/search_engine/__pycache__/base_graph_index.cpython-311.opt-2.pyc +0 -0
  172. sage/middleware/services/graph/search_engine/__pycache__/base_graph_index.cpython-311.pyc +0 -0
  173. sage/middleware/services/kv/__init__.py +33 -4
  174. sage/middleware/services/kv/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  175. sage/middleware/services/kv/__pycache__/__init__.cpython-311.pyc +0 -0
  176. sage/middleware/services/kv/__pycache__/kv_service.cpython-311.opt-2.pyc +0 -0
  177. sage/middleware/services/kv/__pycache__/kv_service.cpython-311.pyc +0 -0
  178. sage/middleware/services/kv/examples/__pycache__/kv_demo.cpython-311.opt-2.pyc +0 -0
  179. sage/middleware/services/kv/examples/__pycache__/kv_demo.cpython-311.pyc +0 -0
  180. sage/middleware/services/kv/examples/kv_demo.py +1 -1
  181. sage/middleware/services/kv/search_engine/__init__.py +37 -0
  182. sage/middleware/services/kv/search_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  183. sage/middleware/services/kv/search_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  184. sage/middleware/services/kv/search_engine/__pycache__/base_kv_index.cpython-311.opt-2.pyc +0 -0
  185. sage/middleware/services/kv/search_engine/__pycache__/base_kv_index.cpython-311.pyc +0 -0
  186. sage/middleware/services/kv/search_engine/__pycache__/bm25s_index.cpython-311.opt-2.pyc +0 -0
  187. sage/middleware/services/kv/search_engine/__pycache__/bm25s_index.cpython-311.pyc +0 -0
  188. sage/middleware/services/memory/__init__.py +33 -8
  189. sage/middleware/services/memory/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  190. sage/middleware/services/memory/__pycache__/__init__.cpython-311.pyc +0 -0
  191. sage/middleware/services/memory/__pycache__/memory_service.cpython-311.opt-2.pyc +0 -0
  192. sage/middleware/services/memory/__pycache__/memory_service.cpython-311.pyc +0 -0
  193. sage/middleware/services/memory/examples/__pycache__/memory_demo.cpython-311.opt-2.pyc +0 -0
  194. sage/middleware/services/memory/examples/__pycache__/memory_demo.cpython-311.pyc +0 -0
  195. sage/middleware/services/memory/examples/dag_microservices_demo.py +8 -9
  196. sage/middleware/services/memory/examples/memory_demo.py +4 -4
  197. sage/middleware/services/memory/memory_collection/__pycache__/graph_collection.cpython-311.opt-2.pyc +0 -0
  198. sage/middleware/services/memory/memory_collection/__pycache__/graph_collection.cpython-311.pyc +0 -0
  199. sage/middleware/services/memory/memory_service.py +14 -11
  200. sage/middleware/services/memory/utils/__init__.py +37 -0
  201. sage/middleware/services/memory/utils/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  202. sage/middleware/services/memory/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  203. sage/middleware/services/memory/utils/__pycache__/path_utils.cpython-311.opt-2.pyc +0 -0
  204. sage/middleware/services/memory/utils/__pycache__/path_utils.cpython-311.pyc +0 -0
  205. sage/middleware/services/vdb/__init__.py +33 -4
  206. sage/middleware/services/vdb/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  207. sage/middleware/services/vdb/__pycache__/__init__.cpython-311.pyc +0 -0
  208. sage/middleware/services/vdb/__pycache__/vdb_service.cpython-311.opt-2.pyc +0 -0
  209. sage/middleware/services/vdb/__pycache__/vdb_service.cpython-311.pyc +0 -0
  210. sage/middleware/services/vdb/examples/__pycache__/vdb_demo.cpython-311.opt-2.pyc +0 -0
  211. sage/middleware/services/vdb/examples/__pycache__/vdb_demo.cpython-311.pyc +0 -0
  212. sage/middleware/services/vdb/examples/vdb_demo.py +2 -2
  213. sage/middleware/services/vdb/search_engine/__init__.py +37 -0
  214. sage/middleware/services/vdb/search_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  215. sage/middleware/services/vdb/search_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  216. sage/middleware/services/vdb/search_engine/__pycache__/base_vdb_index.cpython-311.opt-2.pyc +0 -0
  217. sage/middleware/services/vdb/search_engine/__pycache__/base_vdb_index.cpython-311.pyc +0 -0
  218. sage/middleware/services/vdb/search_engine/__pycache__/faiss_index.cpython-311.opt-2.pyc +0 -0
  219. sage/middleware/services/vdb/search_engine/__pycache__/faiss_index.cpython-311.pyc +0 -0
  220. sage/middleware/services/vdb/vdb_service.py +44 -41
  221. sage/middleware/utils/__init__.py +34 -2
  222. sage/middleware/utils/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  223. sage/middleware/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  224. sage/middleware/utils/embedding/__init__.py +33 -31
  225. sage/middleware/utils/embedding/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  226. sage/middleware/utils/embedding/__pycache__/__init__.cpython-311.pyc +0 -0
  227. sage/middleware/utils/embedding/__pycache__/_cohere.cpython-311.opt-2.pyc +0 -0
  228. sage/middleware/utils/embedding/__pycache__/_cohere.cpython-311.pyc +0 -0
  229. sage/middleware/utils/embedding/__pycache__/bedrock.cpython-311.opt-2.pyc +0 -0
  230. sage/middleware/utils/embedding/__pycache__/bedrock.cpython-311.pyc +0 -0
  231. sage/middleware/utils/embedding/__pycache__/embedding_api.cpython-311.opt-2.pyc +0 -0
  232. sage/middleware/utils/embedding/__pycache__/embedding_api.cpython-311.pyc +0 -0
  233. sage/middleware/utils/embedding/__pycache__/embedding_model.cpython-311.opt-2.pyc +0 -0
  234. sage/middleware/utils/embedding/__pycache__/embedding_model.cpython-311.pyc +0 -0
  235. sage/middleware/utils/embedding/__pycache__/hf.cpython-311.opt-2.pyc +0 -0
  236. sage/middleware/utils/embedding/__pycache__/hf.cpython-311.pyc +0 -0
  237. sage/middleware/utils/embedding/__pycache__/instructor.cpython-311.opt-2.pyc +0 -0
  238. sage/middleware/utils/embedding/__pycache__/instructor.cpython-311.pyc +0 -0
  239. sage/middleware/utils/embedding/__pycache__/jina.cpython-311.opt-2.pyc +0 -0
  240. sage/middleware/utils/embedding/__pycache__/jina.cpython-311.pyc +0 -0
  241. sage/middleware/utils/embedding/__pycache__/lollms.cpython-311.opt-2.pyc +0 -0
  242. sage/middleware/utils/embedding/__pycache__/lollms.cpython-311.pyc +0 -0
  243. sage/middleware/utils/embedding/__pycache__/mockembedder.cpython-311.opt-2.pyc +0 -0
  244. sage/middleware/utils/embedding/__pycache__/mockembedder.cpython-311.pyc +0 -0
  245. sage/middleware/utils/embedding/__pycache__/nvidia_openai.cpython-311.opt-2.pyc +0 -0
  246. sage/middleware/utils/embedding/__pycache__/nvidia_openai.cpython-311.pyc +0 -0
  247. sage/middleware/utils/embedding/__pycache__/ollama.cpython-311.opt-2.pyc +0 -0
  248. sage/middleware/utils/embedding/__pycache__/ollama.cpython-311.pyc +0 -0
  249. sage/middleware/utils/embedding/__pycache__/openai.cpython-311.opt-2.pyc +0 -0
  250. sage/middleware/utils/embedding/__pycache__/openai.cpython-311.pyc +0 -0
  251. sage/middleware/utils/embedding/__pycache__/siliconcloud.cpython-311.opt-2.pyc +0 -0
  252. sage/middleware/utils/embedding/__pycache__/siliconcloud.cpython-311.pyc +0 -0
  253. sage/middleware/utils/embedding/__pycache__/zhipu.cpython-311.opt-2.pyc +0 -0
  254. sage/middleware/utils/embedding/__pycache__/zhipu.cpython-311.pyc +0 -0
  255. isage_middleware-0.1.0.dist-info/METADATA +0 -424
  256. isage_middleware-0.1.0.dist-info/RECORD +0 -191
  257. sage/middleware/enterprise/__init__.py +0 -75
  258. sage/middleware/enterprise/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  259. sage/middleware/enterprise/__pycache__/__init__.cpython-311.pyc +0 -0
  260. sage/middleware/enterprise/sage_db/__init__.py +0 -132
  261. sage/middleware/enterprise/sage_db/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  262. sage/middleware/enterprise/sage_db/__pycache__/__init__.cpython-311.pyc +0 -0
  263. sage/middleware/enterprise/sage_db/python/__init__.py +0 -7
  264. sage/middleware/enterprise/sage_db/python/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  265. sage/middleware/enterprise/sage_db/python/__pycache__/__init__.cpython-311.pyc +0 -0
  266. sage/middleware/examples/__pycache__/dag_microservices_demo.cpython-311.opt-2.pyc +0 -0
  267. sage/middleware/examples/__pycache__/dag_microservices_demo.cpython-311.pyc +0 -0
  268. sage/middleware/examples/__pycache__/microservices_integration_demo.cpython-311.opt-2.pyc +0 -0
  269. sage/middleware/examples/__pycache__/microservices_integration_demo.cpython-311.pyc +0 -0
  270. sage/middleware/services/memory/examples/__pycache__/dag_microservices_demo.cpython-311.opt-2.pyc +0 -0
  271. sage/middleware/services/memory/examples/__pycache__/dag_microservices_demo.cpython-311.pyc +0 -0
  272. sage/middleware/services/memory/memory_collection/__pycache__/base_collection.cpython-311.opt-2.pyc +0 -0
  273. sage/middleware/services/memory/memory_collection/__pycache__/base_collection.cpython-311.pyc +0 -0
  274. sage/middleware/services/memory/memory_collection/__pycache__/kv_collection.cpython-311.opt-2.pyc +0 -0
  275. sage/middleware/services/memory/memory_collection/__pycache__/kv_collection.cpython-311.pyc +0 -0
  276. sage/middleware/services/memory/memory_collection/__pycache__/vdb_collection.cpython-311.opt-2.pyc +0 -0
  277. sage/middleware/services/memory/memory_collection/__pycache__/vdb_collection.cpython-311.pyc +0 -0
  278. sage/middleware/services/memory/memory_collection/base_collection.py +0 -0
  279. sage/middleware/services/memory/memory_collection/kv_collection.py +0 -0
  280. sage/middleware/services/memory/memory_collection/vdb_collection.py +0 -0
  281. {isage_middleware-0.1.0.dist-info → isage_middleware-0.1.4.dist-info}/WHEEL +0 -0
  282. {isage_middleware-0.1.0.dist-info → isage_middleware-0.1.4.dist-info}/top_level.txt +0 -0
  283. /sage/middleware/{enterprise → components}/sage_db/python/sage_db.py +0 -0
  284. /sage/middleware/{enterprise → components}/sage_db/sage_db.py +0 -0
  285. /sage/middleware/{enterprise → components}/sage_db/tests/test_python.py +0 -0
@@ -0,0 +1,324 @@
1
+ """
2
+ Memory Service: 将Memory Manager包装成服务进程形式的封装层
3
+ """
4
+ from typing import Dict, List, Any, Optional, Union
5
+ from sage.middleware.components.neuromem.memory_manager import MemoryManager
6
+ from sage.middleware.components.neuromem.memory_collection.base_collection import BaseMemoryCollection
7
+ from sage.common.utils.logging.custom_logger import CustomLogger
8
+
9
+ class MemoryService:
10
+ """
11
+ Memory服务封装,对外提供统一的服务接口
12
+ 主要功能:
13
+ 1. 管理collections的创建、删除、重命名等
14
+ 2. 对collection进行数据操作(插入、查询、更新、删除)
15
+ 3. 对collection进行索引操作(创建、删除、重建)
16
+ """
17
+
18
+ def __init__(self, data_dir: Optional[str] = None):
19
+ self.manager = MemoryManager(data_dir)
20
+ self.logger = CustomLogger()
21
+
22
+ def create_collection(self, name: str, backend_type: str, description: str = "",
23
+ embedding_model: Optional[Any] = None, dim: Optional[int] = None) -> Dict[str, Any]:
24
+ """创建新的collection"""
25
+ try:
26
+ collection = self.manager.create_collection(
27
+ name=name,
28
+ backend_type=backend_type,
29
+ description=description,
30
+ embedding_model=embedding_model,
31
+ dim=dim
32
+ )
33
+ # 预先注册常用的元数据字段
34
+ if hasattr(collection, "add_metadata_field"):
35
+ # 注册基础字段
36
+ collection.add_metadata_field("type")
37
+ collection.add_metadata_field("date")
38
+ collection.add_metadata_field("source")
39
+ collection.add_metadata_field("index")
40
+ collection.add_metadata_field("timestamp")
41
+
42
+ return {
43
+ "status": "success",
44
+ "message": f"Collection '{name}' created successfully",
45
+ "collection_name": name
46
+ }
47
+ except Exception as e:
48
+ return {
49
+ "status": "error",
50
+ "message": str(e)
51
+ }
52
+
53
+ def delete_collection(self, name: str) -> Dict[str, Any]:
54
+ """删除指定collection"""
55
+ try:
56
+ self.manager.delete_collection(name)
57
+ return {
58
+ "status": "success",
59
+ "message": f"Collection '{name}' deleted successfully"
60
+ }
61
+ except Exception as e:
62
+ return {
63
+ "status": "error",
64
+ "message": str(e)
65
+ }
66
+
67
+ def list_collections(self) -> Dict[str, Any]:
68
+ """列出所有collections及其信息"""
69
+ try:
70
+ collections = []
71
+ for name, info in self.manager.collection_metadata.items():
72
+ collections.append({
73
+ "name": name,
74
+ "description": info.get("description", ""),
75
+ "backend_type": info.get("backend_type", ""),
76
+ "status": self.manager.collection_status.get(name, "unknown")
77
+ })
78
+ return {
79
+ "status": "success",
80
+ "collections": collections
81
+ }
82
+ except Exception as e:
83
+ return {
84
+ "status": "error",
85
+ "message": str(e)
86
+ }
87
+
88
+ def rename_collection(self, old_name: str, new_name: str,
89
+ new_description: Optional[str] = None) -> Dict[str, Any]:
90
+ """重命名collection"""
91
+ try:
92
+ self.manager.rename(old_name, new_name, new_description)
93
+ return {
94
+ "status": "success",
95
+ "message": f"Collection renamed from '{old_name}' to '{new_name}'"
96
+ }
97
+ except Exception as e:
98
+ return {
99
+ "status": "error",
100
+ "message": str(e)
101
+ }
102
+
103
+ def get_collection_info(self, name: str) -> Dict[str, Any]:
104
+ """获取指定collection的详细信息"""
105
+ try:
106
+ info = self.manager.list_collection(name)
107
+ return {
108
+ "status": "success",
109
+ "collection_info": info
110
+ }
111
+ except Exception as e:
112
+ return {
113
+ "status": "error",
114
+ "message": str(e)
115
+ }
116
+
117
+ # Collection数据操作接口
118
+ def insert_data(self, collection_name: str, text: str,
119
+ metadata: Optional[Dict[str, Any]] = None,
120
+ index_names: Optional[List[str]] = None) -> Dict[str, Any]:
121
+ """向指定collection插入数据"""
122
+ try:
123
+ collection = self.manager.get_collection(collection_name)
124
+ if not collection:
125
+ raise ValueError(f"Collection '{collection_name}' not found")
126
+
127
+ index_names = index_names or []
128
+ stable_id = collection.insert(text, metadata, *index_names)
129
+
130
+ return {
131
+ "status": "success",
132
+ "message": "Data inserted successfully",
133
+ "id": stable_id
134
+ }
135
+ except Exception as e:
136
+ return {
137
+ "status": "error",
138
+ "message": str(e)
139
+ }
140
+
141
+ def update_data(self, collection_name: str, old_text: str, new_text: str,
142
+ new_metadata: Optional[Dict[str, Any]] = None,
143
+ index_names: Optional[List[str]] = None) -> Dict[str, Any]:
144
+ """更新指定collection中的数据"""
145
+ try:
146
+ collection = self.manager.get_collection(collection_name)
147
+ if not collection:
148
+ raise ValueError(f"Collection '{collection_name}' not found")
149
+
150
+ index_names = index_names or []
151
+ new_id = collection.update(old_text, new_text, new_metadata, *index_names)
152
+
153
+ return {
154
+ "status": "success",
155
+ "message": "Data updated successfully",
156
+ "new_id": new_id
157
+ }
158
+ except Exception as e:
159
+ return {
160
+ "status": "error",
161
+ "message": str(e)
162
+ }
163
+
164
+ def delete_data(self, collection_name: str, text: str) -> Dict[str, Any]:
165
+ """从指定collection删除数据"""
166
+ try:
167
+ collection = self.manager.get_collection(collection_name)
168
+ if not collection:
169
+ raise ValueError(f"Collection '{collection_name}' not found")
170
+
171
+ collection.delete(text)
172
+ return {
173
+ "status": "success",
174
+ "message": "Data deleted successfully"
175
+ }
176
+ except Exception as e:
177
+ return {
178
+ "status": "error",
179
+ "message": str(e)
180
+ }
181
+
182
+ def retrieve_data(self, collection_name: str, query_text: str,
183
+ topk: Optional[int] = None,
184
+ index_name: Optional[str] = None,
185
+ with_metadata: bool = False,
186
+ metadata_filter: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
187
+ """从指定collection检索数据"""
188
+ try:
189
+ collection = self.manager.get_collection(collection_name)
190
+ if not collection:
191
+ raise ValueError(f"Collection '{collection_name}' not found")
192
+
193
+ metadata_conditions = metadata_filter or {}
194
+ results = collection.retrieve(
195
+ query_text,
196
+ topk=topk,
197
+ index_name=index_name,
198
+ with_metadata=with_metadata,
199
+ **metadata_conditions
200
+ )
201
+
202
+ return {
203
+ "status": "success",
204
+ "results": results
205
+ }
206
+ except Exception as e:
207
+ return {
208
+ "status": "error",
209
+ "message": str(e)
210
+ }
211
+
212
+ # 索引操作接口
213
+ def create_index(self, collection_name: str, index_name: str,
214
+ description: Optional[str] = None,
215
+ metadata_conditions: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
216
+ """为指定collection创建索引"""
217
+ try:
218
+ collection = self.manager.get_collection(collection_name)
219
+ if not collection:
220
+ raise ValueError(f"Collection '{collection_name}' not found")
221
+
222
+ metadata_conditions = metadata_conditions or {}
223
+ collection.create_index(
224
+ index_name=index_name,
225
+ description=description,
226
+ **metadata_conditions
227
+ )
228
+
229
+ return {
230
+ "status": "success",
231
+ "message": f"Index '{index_name}' created successfully"
232
+ }
233
+ except Exception as e:
234
+ return {
235
+ "status": "error",
236
+ "message": str(e)
237
+ }
238
+
239
+ def delete_index(self, collection_name: str, index_name: str) -> Dict[str, Any]:
240
+ """删除指定collection的索引"""
241
+ try:
242
+ collection = self.manager.get_collection(collection_name)
243
+ if not collection:
244
+ raise ValueError(f"Collection '{collection_name}' not found")
245
+
246
+ collection.delete_index(index_name)
247
+ return {
248
+ "status": "success",
249
+ "message": f"Index '{index_name}' deleted successfully"
250
+ }
251
+ except Exception as e:
252
+ return {
253
+ "status": "error",
254
+ "message": str(e)
255
+ }
256
+
257
+ def rebuild_index(self, collection_name: str, index_name: str) -> Dict[str, Any]:
258
+ """重建指定collection的索引"""
259
+ try:
260
+ collection = self.manager.get_collection(collection_name)
261
+ if not collection:
262
+ raise ValueError(f"Collection '{collection_name}' not found")
263
+
264
+ collection.rebuild_index(index_name)
265
+ return {
266
+ "status": "success",
267
+ "message": f"Index '{index_name}' rebuilt successfully"
268
+ }
269
+ except Exception as e:
270
+ return {
271
+ "status": "error",
272
+ "message": str(e)
273
+ }
274
+
275
+ def list_indexes(self, collection_name: str) -> Dict[str, Any]:
276
+ """列出指定collection的所有索引"""
277
+ try:
278
+ collection = self.manager.get_collection(collection_name)
279
+ if not collection:
280
+ raise ValueError(f"Collection '{collection_name}' not found")
281
+
282
+ indexes = collection.list_index()
283
+ return {
284
+ "status": "success",
285
+ "indexes": indexes
286
+ }
287
+ except Exception as e:
288
+ return {
289
+ "status": "error",
290
+ "message": str(e)
291
+ }
292
+
293
+ # 存储操作接口
294
+ def store_collection(self, collection_name: str) -> Dict[str, Any]:
295
+ """保存指定collection到磁盘"""
296
+ try:
297
+ collection = self.manager.get_collection(collection_name)
298
+ if not collection:
299
+ raise ValueError(f"Collection '{collection_name}' not found")
300
+
301
+ self.manager.store_collection(collection_name)
302
+ return {
303
+ "status": "success",
304
+ "message": f"Collection '{collection_name}' stored successfully"
305
+ }
306
+ except Exception as e:
307
+ return {
308
+ "status": "error",
309
+ "message": str(e)
310
+ }
311
+
312
+ def store(self) -> Dict[str, Any]:
313
+ """保存整个manager的所有信息到磁盘"""
314
+ try:
315
+ self.manager.store_collection() # 保存所有已加载的collection
316
+ return {
317
+ "status": "success",
318
+ "message": "All manager data stored successfully"
319
+ }
320
+ except Exception as e:
321
+ return {
322
+ "status": "error",
323
+ "message": str(e)
324
+ }
@@ -0,0 +1,37 @@
1
+ """
2
+ SAGE - Streaming-Augmented Generative Execution
3
+ """
4
+
5
+ # 动态版本加载
6
+ def _load_version():
7
+ """从项目根目录动态加载版本信息"""
8
+ from pathlib import Path
9
+
10
+ # 获取项目根目录
11
+ current_file = Path(__file__).resolve()
12
+ root_dir = current_file.parent.parent.parent.parent.parent.parent.parent.parent
13
+ version_file = root_dir / "_version.py"
14
+
15
+ # 加载版本信息
16
+ if version_file.exists():
17
+ version_globals = {}
18
+ with open(version_file, 'r', encoding='utf-8') as f:
19
+ exec(f.read(), version_globals)
20
+ return {
21
+ 'version': version_globals.get('__version__', '0.1.4'),
22
+ 'author': version_globals.get('__author__', 'SAGE Team'),
23
+ 'email': version_globals.get('__email__', 'shuhao_zhang@hust.edu.cn')
24
+ }
25
+
26
+ # 默认值
27
+ return {
28
+ 'version': '0.1.4',
29
+ 'author': 'SAGE Team',
30
+ 'email': 'shuhao_zhang@hust.edu.cn'
31
+ }
32
+
33
+ # 加载信息
34
+ _info = _load_version()
35
+ __version__ = _info['version']
36
+ __author__ = _info['author']
37
+ __email__ = _info['email']
@@ -0,0 +1,198 @@
1
+ from logging import Manager
2
+ import os
3
+ from re import M
4
+ from typing import Dict, List, Any, Optional, Union
5
+ from sage.middleware.components.neuromem.memory_manager import MemoryManager
6
+ from sage.middleware.components.neuromem.memory_collection.vdb_collection import VDBMemoryCollection
7
+
8
+ class NeuroMemVDB:
9
+ def __init__(self):
10
+ self.manager = MemoryManager(self._get_default_data_dir())
11
+ self.online_register_collection: Dict[str, VDBMemoryCollection] = {}
12
+
13
+
14
+ def register_collection(self, collection_name: str, config = None):
15
+ # 检查collection是否已存在
16
+ existing_collections = self.manager.list_collection()
17
+ collection_exists = any(c['name'] == collection_name for c in existing_collections) if isinstance(existing_collections, list) else False
18
+
19
+ if collection_exists:
20
+ if config is not None:
21
+ print(f"警告: Collection '{collection_name}' 已存在,忽略传入的config参数")
22
+ # 正常连接并注册到online_register_collection
23
+ collection = self.manager.get_collection(collection_name)
24
+ if collection:
25
+ self.online_register_collection[collection_name] = collection
26
+ print(f"成功连接已存在的collection: {collection_name}")
27
+ else:
28
+ if config is not None:
29
+ # 正常通过Manager创建并注册到online_register_collection
30
+ embedding_model = config.get('embedding_model')
31
+ dim = config.get('dim')
32
+ description = config.get('description', f"VDB collection: {collection_name}")
33
+ collection = self.manager.create_collection(
34
+ name=collection_name,
35
+ backend_type="VDB",
36
+ description=description,
37
+ embedding_model=embedding_model,
38
+ dim=dim
39
+ )
40
+ if collection:
41
+ self.online_register_collection[collection_name] = collection
42
+ print(f"成功创建新collection: {collection_name}")
43
+ else:
44
+ # 警告 用默认参数创建一个collection并注册到online_register_collection
45
+ print(f"警告: Collection '{collection_name}' 不存在且未提供config,使用默认参数创建")
46
+ collection = self.manager.create_collection(
47
+ name=collection_name,
48
+ backend_type="VDB",
49
+ description=f"Default VDB collection: {collection_name}"
50
+ )
51
+ if collection:
52
+ self.online_register_collection[collection_name] = collection
53
+ print(f"成功创建默认collection: {collection_name}")
54
+
55
+ def insert(self, raw_data: Any, metadata: Optional[Dict[str, Any]] = None):
56
+ # 该方法在所有 online_register_collection 均插入数据
57
+ if not self.online_register_collection:
58
+ print("警告: 没有注册的collection,无法插入数据")
59
+ return
60
+
61
+ results = {}
62
+ for collection_name, collection in self.online_register_collection.items():
63
+ try:
64
+ stable_id = collection.insert(raw_data, metadata)
65
+ results[collection_name] = stable_id
66
+ print(f"成功在collection '{collection_name}' 中插入数据,ID: {stable_id}")
67
+ except Exception as e:
68
+ print(f"在collection '{collection_name}' 插入数据失败: {str(e)}")
69
+ results[collection_name] = None
70
+ return results
71
+
72
+ def retrieve(self, raw_data: Any, topk: int = 5):
73
+ # 测试类型的retrieve方法,不返回任何值,直接print出检索结果
74
+ if not self.online_register_collection:
75
+ print("警告: 没有注册的collection,无法检索数据")
76
+ return
77
+
78
+ print(f"检索查询: {raw_data}")
79
+ print("=" * 50)
80
+
81
+ for collection_name, collection in self.online_register_collection.items():
82
+ try:
83
+ results = collection.retrieve(raw_data, topk=topk, with_metadata=True)
84
+ print(f"Collection '{collection_name}' 检索结果:")
85
+ if results:
86
+ for i, result in enumerate(results, 1):
87
+ print(f" {i}. 文本: {result['text']}")
88
+ if result['metadata']:
89
+ print(f" 元数据: {result['metadata']}")
90
+ else:
91
+ print(" 无结果")
92
+ print("-" * 30)
93
+ except Exception as e:
94
+ print(f"Collection '{collection_name}' 检索失败: {str(e)}")
95
+ print("-" * 30)
96
+
97
+ def build_index(self, index_name: str = "global_index", description: str = "全局索引"):
98
+ # 该方法在所有 online_register_collection 创建指定索引
99
+ if not self.online_register_collection:
100
+ print("警告: 没有注册的collection,无法创建索引")
101
+ return
102
+
103
+ results = {}
104
+ for collection_name, collection in self.online_register_collection.items():
105
+ try:
106
+ collection.create_index(index_name, description=description)
107
+ results[collection_name] = True
108
+ print(f"成功在collection '{collection_name}' 中创建索引 '{index_name}'")
109
+ except Exception as e:
110
+ print(f"在collection '{collection_name}' 创建索引失败: {str(e)}")
111
+ results[collection_name] = False
112
+ return results
113
+
114
+ def store_to_disk(self):
115
+ # 调用manager的store_collection()方法,触发一次全局落盘
116
+ try:
117
+ self.manager.store_collection()
118
+ print("成功将所有collection数据保存到磁盘")
119
+ except Exception as e:
120
+ print(f"保存数据到磁盘失败: {str(e)}")
121
+
122
+ def clean_collection(self, collection_name: str):
123
+ # 清空某个collection的所有数据(包括磁盘中存在的)
124
+ try:
125
+ # 从在线注册列表中移除
126
+ if collection_name in self.online_register_collection:
127
+ del self.online_register_collection[collection_name]
128
+ print(f"已从在线注册列表中移除collection: {collection_name}")
129
+
130
+ # 通过manager删除collection(包括磁盘数据)
131
+ self.manager.delete_collection(collection_name)
132
+ print(f"成功清理collection: {collection_name}")
133
+ except Exception as e:
134
+ print(f"清理collection '{collection_name}' 失败: {str(e)}")
135
+
136
+ @classmethod
137
+ def _get_default_data_dir(cls):
138
+ """获取默认数据目录"""
139
+ cur_dir = os.getcwd()
140
+ data_dir = os.path.join(cur_dir, "data", "neuromem_vdb")
141
+ os.makedirs(data_dir, exist_ok=True)
142
+ return data_dir
143
+
144
+ if __name__ == "__main__":
145
+ print("默认数据目录:", NeuroMemVDB._get_default_data_dir())
146
+ print("\n" + "="*60)
147
+ print("开始测试 NeuroMemVDB")
148
+ print("="*60)
149
+
150
+ # 创建NeuroMemVDB实例
151
+ vdb = NeuroMemVDB()
152
+
153
+ # 测试1: 注册不存在的collection(无config,应该警告并使用默认参数)
154
+ print("\n1. 测试注册不存在的collection(无config)")
155
+ vdb.register_collection("test_collection1")
156
+
157
+ # 测试2: 注册不存在的collection(有config)
158
+ print("\n2. 测试注册不存在的collection(有config)")
159
+ config = {
160
+ 'description': '测试用的VDB集合',
161
+ 'embedding_model': None, # 使用默认embedding模型
162
+ 'dim': None # 使用默认维度
163
+ }
164
+ vdb.register_collection("test_collection2", config)
165
+
166
+ # 测试3: 插入数据
167
+ print("\n3. 测试插入数据")
168
+ vdb.insert("Python是一种编程语言", {"type": "test", "priority": "high"})
169
+ vdb.insert("机器学习是人工智能的重要分支", {"type": "demo", "priority": "low"})
170
+ vdb.insert("向量数据库用于存储和检索高维向量数据")
171
+
172
+ # 测试4: 创建索引
173
+ print("\n4. 测试创建索引")
174
+ vdb.build_index("custom_index", "自定义测试索引")
175
+
176
+ # 测试5: 检索数据
177
+ print("\n5. 测试检索数据")
178
+ vdb.retrieve("编程语言", topk=3)
179
+
180
+ # 测试6: 保存到磁盘
181
+ print("\n6. 测试保存到磁盘")
182
+ vdb.store_to_disk()
183
+
184
+ # 测试7: 重新注册已存在的collection(应该警告)
185
+ print("\n7. 测试重新注册已存在的collection")
186
+ vdb.register_collection("test_collection1", {"description": "这个config应该被忽略"})
187
+
188
+ # 测试8: 清理collection
189
+ print("\n8. 测试清理collection")
190
+ vdb.clean_collection("test_collection1")
191
+
192
+ # 测试9: 再次检索(应该只有test_collection2的结果)
193
+ print("\n9. 清理后再次检索")
194
+ vdb.retrieve("编程语言", topk=3)
195
+
196
+ print("\n" + "="*60)
197
+ print("测试完成")
198
+ print("="*60)