iris-vector-rag 0.3.1__tar.gz → 0.3.3__tar.gz

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.
Files changed (193) hide show
  1. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/PKG-INFO +26 -1
  2. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/README.md +25 -0
  3. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/dspy_modules/entity_extraction_module.py +11 -0
  4. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/graphrag.py +52 -1
  5. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/services/entity_extraction.py +58 -4
  6. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_vector_rag.egg-info/PKG-INFO +26 -1
  7. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/pyproject.toml +1 -1
  8. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/LICENSE +0 -0
  9. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/adapters/rag_templates_bridge.py +0 -0
  10. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/__init__.py +0 -0
  11. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/batch_utils.py +0 -0
  12. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/config.py +0 -0
  13. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/connection_manager.py +0 -0
  14. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/connection_pool.py +0 -0
  15. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/database.py +0 -0
  16. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/database_schema_manager.py +0 -0
  17. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/db_init_with_indexes.py +0 -0
  18. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/db_vector_utils.py +0 -0
  19. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/environment_manager.py +0 -0
  20. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/huggingface_utils.py +0 -0
  21. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/iris_client.py +0 -0
  22. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/iris_connection_manager.py +0 -0
  23. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/iris_connection_pool.py +0 -0
  24. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/iris_connector.py +0 -0
  25. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/iris_dbapi_connector.py +0 -0
  26. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/iris_index_utils.py +0 -0
  27. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/iris_sql_utils.py +0 -0
  28. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/iris_stream_reader.py +0 -0
  29. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/llm_cache_config.py +0 -0
  30. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/llm_cache_iris.py +0 -0
  31. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/llm_cache_manager.py +0 -0
  32. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/utils.py +0 -0
  33. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/common/vector_sql_utils.py +0 -0
  34. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/__init__.py +0 -0
  35. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/biomedical_question_generator.py +0 -0
  36. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/comparative_analysis_system.py +0 -0
  37. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/empirical_reporting.py +0 -0
  38. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/evaluation_orchestrator.py +0 -0
  39. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/execute_production_evaluation.py +0 -0
  40. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/outputs/production_evaluation/execute_biomedical_rag_10k_evaluation_20250913_200432.py +0 -0
  41. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/pmc_data_pipeline.py +0 -0
  42. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/production_evaluation_config.py +0 -0
  43. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/ragas_metrics_framework.py +0 -0
  44. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/real_production_evaluation.py +0 -0
  45. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/run_10k_evaluation.py +0 -0
  46. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/simple_test.py +0 -0
  47. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/statistical_evaluation_methodology.py +0 -0
  48. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/test_framework.py +0 -0
  49. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/test_iris_connectivity.py +0 -0
  50. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/test_small_scale_evaluation.py +0 -0
  51. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/true_e2e_evaluation.py +0 -0
  52. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/evaluation_framework/visualization_engine.py +0 -0
  53. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/__init__.py +0 -0
  54. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/__init__.py +0 -0
  55. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/cleanup_job.py +0 -0
  56. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/cli.py +0 -0
  57. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/main.py +0 -0
  58. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/mcp_routes.py +0 -0
  59. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/middleware/__init__.py +0 -0
  60. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/middleware/auth.py +0 -0
  61. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/middleware/logging.py +0 -0
  62. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/middleware/rate_limit.py +0 -0
  63. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/__init__.py +0 -0
  64. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/auth.py +0 -0
  65. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/errors.py +0 -0
  66. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/health.py +0 -0
  67. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/pipeline.py +0 -0
  68. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/quota.py +0 -0
  69. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/request.py +0 -0
  70. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/response.py +0 -0
  71. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/upload.py +0 -0
  72. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/models/websocket.py +0 -0
  73. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/routes/__init__.py +0 -0
  74. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/routes/document.py +0 -0
  75. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/routes/health.py +0 -0
  76. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/routes/pipeline.py +0 -0
  77. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/routes/query.py +0 -0
  78. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/services/__init__.py +0 -0
  79. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/services/auth_service.py +0 -0
  80. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/services/document_service.py +0 -0
  81. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/services/pipeline_manager.py +0 -0
  82. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/websocket/__init__.py +0 -0
  83. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/websocket/connection.py +0 -0
  84. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/websocket/handlers.py +0 -0
  85. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/api/websocket/routes.py +0 -0
  86. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/config/__init__.py +0 -0
  87. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/config/backend_modes.py +0 -0
  88. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/config/default_config.yaml +0 -0
  89. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/config/embedding_config.py +0 -0
  90. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/config/manager.py +0 -0
  91. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/config/pipeline_config_service.py +0 -0
  92. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/core/__init__.py +0 -0
  93. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/core/base.py +0 -0
  94. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/core/connection.py +0 -0
  95. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/core/exceptions.py +0 -0
  96. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/core/models.py +0 -0
  97. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/core/response_standardizer.py +0 -0
  98. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/core/validators.py +0 -0
  99. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/core/vector_store.py +0 -0
  100. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/core/vector_store_exceptions.py +0 -0
  101. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/dspy_modules/__init__.py +0 -0
  102. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/dspy_modules/batch_entity_extraction.py +0 -0
  103. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/embeddings/__init__.py +0 -0
  104. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/embeddings/entity_extractor.py +0 -0
  105. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/embeddings/iris_embedding.py +0 -0
  106. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/embeddings/manager.py +0 -0
  107. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/mcp/__init__.py +0 -0
  108. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/mcp/__main__.py +0 -0
  109. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/mcp/bridge.py +0 -0
  110. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/mcp/cli.py +0 -0
  111. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/mcp/config.py +0 -0
  112. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/mcp/technique_handlers.py +0 -0
  113. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/mcp/tool_schemas.py +0 -0
  114. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/mcp/validation.py +0 -0
  115. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/memory/__init__.py +0 -0
  116. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/memory/knowledge_extractor.py +0 -0
  117. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/memory/models.py +0 -0
  118. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/memory/rag_integration.py +0 -0
  119. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/memory/temporal_manager.py +0 -0
  120. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/ontology/__init__.py +0 -0
  121. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/ontology/loader.py +0 -0
  122. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/ontology/models.py +0 -0
  123. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/ontology/plugins/__init__.py +0 -0
  124. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/ontology/plugins/general_ontology.py +0 -0
  125. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/ontology/reasoner.py +0 -0
  126. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/optimization/cache_manager.py +0 -0
  127. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/optimization/connection_pool.py +0 -0
  128. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/optimization/database_optimizer.py +0 -0
  129. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/optimization/hnsw_tuner.py +0 -0
  130. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/optimization/parallel_processor.py +0 -0
  131. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/optimization/performance_monitor.py +0 -0
  132. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/__init__.py +0 -0
  133. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/_hybrid_utils.py +0 -0
  134. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/basic.py +0 -0
  135. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/basic_rerank.py +0 -0
  136. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/colbert_pylate/__init__.py +0 -0
  137. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/colbert_pylate/pylate_pipeline.py +0 -0
  138. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/crag.py +0 -0
  139. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/factory.py +0 -0
  140. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/graphrag_merged.py +0 -0
  141. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/hybrid_graphrag.py +0 -0
  142. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/hybrid_graphrag_discovery.py +0 -0
  143. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/hybrid_graphrag_retrieval.py +0 -0
  144. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/iris_global_graphrag.py +0 -0
  145. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/pipelines/multi_query_rrf.py +0 -0
  146. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/plugins/__init__.py +0 -0
  147. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/plugins/interface.py +0 -0
  148. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/services/__init__.py +0 -0
  149. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/services/storage.py +0 -0
  150. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/storage/__init__.py +0 -0
  151. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/storage/clob_handler.py +0 -0
  152. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/storage/enterprise_storage.py +0 -0
  153. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/storage/hybrid_schema_manager.py +0 -0
  154. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/storage/iris_embedding_ops.py +0 -0
  155. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/storage/schema_manager.py +0 -0
  156. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/storage/vector_store_iris.py +0 -0
  157. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/testing/__init__.py +0 -0
  158. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/testing/backend_manager.py +0 -0
  159. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/testing/connection_pool.py +0 -0
  160. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/testing/exceptions.py +0 -0
  161. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/testing/iris_devtools_bridge.py +0 -0
  162. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/testing/validators.py +0 -0
  163. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/utils/__init__.py +0 -0
  164. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/utils/module_loader.py +0 -0
  165. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/utils/project_root.py +0 -0
  166. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/utils/token_counter.py +0 -0
  167. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/validation/__init__.py +0 -0
  168. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/validation/factory.py +0 -0
  169. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/validation/orchestrator.py +0 -0
  170. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/validation/requirements.py +0 -0
  171. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_rag/validation/validator.py +0 -0
  172. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_vector_rag.egg-info/SOURCES.txt +0 -0
  173. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_vector_rag.egg-info/dependency_links.txt +0 -0
  174. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_vector_rag.egg-info/entry_points.txt +0 -0
  175. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_vector_rag.egg-info/requires.txt +0 -0
  176. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/iris_vector_rag.egg-info/top_level.txt +0 -0
  177. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/setup.cfg +0 -0
  178. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_comprehensive_pipeline_validation_e2e.py +0 -0
  179. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_comprehensive_pipeline_validation_e2e_fixed.py +0 -0
  180. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_enterprise_storage.py +0 -0
  181. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_entity_extraction_service.py +0 -0
  182. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_hybrid_graphrag_functional.py +0 -0
  183. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_index_ensure.py +0 -0
  184. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_mcp_integration.py +0 -0
  185. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_mcp_server_integration.py +0 -0
  186. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_ontology_loader.py +0 -0
  187. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_ontology_support.py +0 -0
  188. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_performance_monitor_comprehensive.py +0 -0
  189. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_performance_monitor_working.py +0 -0
  190. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_pylate_colbert_pipeline.py +0 -0
  191. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_schema_manager_bugs.py +0 -0
  192. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_temporal_manager.py +0 -0
  193. {iris_vector_rag-0.3.1 → iris_vector_rag-0.3.3}/tests/test_vector_safe_helpers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-vector-rag
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Production-ready, extensible RAG framework with native IRIS vector search - unified API for basic, CRAG, GraphRAG, and ColBERT pipelines with RAGAS and DSPy integration
5
5
  Author-email: InterSystems <support@intersystems.com>
6
6
  Maintainer-email: Thomas Dyar <thomas.dyar@intersystems.com>
@@ -305,6 +305,31 @@ print(f"Relationships: {result['metadata']['relationships']}")
305
305
  print(f"Graph depth: {result['metadata']['graph_depth']}")
306
306
  ```
307
307
 
308
+ **⚠️ IMPORTANT:** To enable entity extraction during document ingestion, you MUST set `entity_extraction_enabled: True` in your pipeline configuration:
309
+
310
+ ```python
311
+ from iris_rag.config import ConfigurationManager
312
+
313
+ config = ConfigurationManager({
314
+ "pipelines": {
315
+ "graphrag": {
316
+ "entity_extraction_enabled": True, # REQUIRED for entity extraction!
317
+ }
318
+ },
319
+ "llm": {
320
+ "provider": "openai",
321
+ "api_type": "openai",
322
+ "model": "gpt-4o-mini",
323
+ "api_key": "your-api-key",
324
+ "temperature": 0.0
325
+ }
326
+ })
327
+
328
+ pipeline = create_pipeline('graphrag', config_manager=config)
329
+ ```
330
+
331
+ **Without this setting**, entity extraction will not run during `load_documents()` and no knowledge graph will be built, making graph-based retrieval unavailable.
332
+
308
333
  ### MultiQueryRRF: Multi-Perspective Retrieval
309
334
 
310
335
  Expands queries into multiple perspectives and fuses results:
@@ -201,6 +201,31 @@ print(f"Relationships: {result['metadata']['relationships']}")
201
201
  print(f"Graph depth: {result['metadata']['graph_depth']}")
202
202
  ```
203
203
 
204
+ **⚠️ IMPORTANT:** To enable entity extraction during document ingestion, you MUST set `entity_extraction_enabled: True` in your pipeline configuration:
205
+
206
+ ```python
207
+ from iris_rag.config import ConfigurationManager
208
+
209
+ config = ConfigurationManager({
210
+ "pipelines": {
211
+ "graphrag": {
212
+ "entity_extraction_enabled": True, # REQUIRED for entity extraction!
213
+ }
214
+ },
215
+ "llm": {
216
+ "provider": "openai",
217
+ "api_type": "openai",
218
+ "model": "gpt-4o-mini",
219
+ "api_key": "your-api-key",
220
+ "temperature": 0.0
221
+ }
222
+ })
223
+
224
+ pipeline = create_pipeline('graphrag', config_manager=config)
225
+ ```
226
+
227
+ **Without this setting**, entity extraction will not run during `load_documents()` and no knowledge graph will be built, making graph-based retrieval unavailable.
228
+
204
229
  ### MultiQueryRRF: Multi-Perspective Retrieval
205
230
 
206
231
  Expands queries into multiple perspectives and fuses results:
@@ -379,6 +379,17 @@ def configure_dspy(llm_config: dict):
379
379
  max_tokens = llm_config.get("max_tokens", 2000)
380
380
  temperature = llm_config.get("temperature", 0.1)
381
381
 
382
+ # Log configuration details before attempting to configure
383
+ logger.info("=" * 60)
384
+ logger.info("🔧 Configuring DSPy for Entity Extraction")
385
+ logger.info("=" * 60)
386
+ logger.info(f" API Type: {api_type}")
387
+ logger.info(f" Model: {model}")
388
+ logger.info(f" API Base: {api_base}")
389
+ logger.info(f" Max Tokens: {max_tokens}")
390
+ logger.info(f" Temperature: {temperature}")
391
+ logger.info("=" * 60)
392
+
382
393
  # FIX for Bug #6: Use custom DirectOpenAILM for GPT-OSS NIM
383
394
  # This bypasses LiteLLM entirely to preserve full model name "openai/gpt-oss-120b"
384
395
  if model == "openai/gpt-oss-120b" or (api_type == "openai" and "/" in model):
@@ -131,11 +131,26 @@ class GraphRAGPipeline(RAGPipeline):
131
131
 
132
132
  # Process documents in batches of 5 for 3x speedup
133
133
  batch_size = 5
134
+ total_batches = (len(documents) + batch_size - 1) // batch_size # Ceiling division
135
+
136
+ logger.info("=" * 70)
137
+ logger.info(f"🚀 Starting Entity Extraction")
138
+ logger.info("=" * 70)
139
+ logger.info(f" Total documents: {len(documents)}")
140
+ logger.info(f" Batch size: {batch_size}")
141
+ logger.info(f" Total batches: {total_batches}")
142
+ logger.info("=" * 70)
143
+
144
+ import time
145
+ extraction_start_time = time.time()
146
+
134
147
  for i in range(0, len(documents), batch_size):
135
148
  batch_docs = documents[i:i + batch_size]
149
+ batch_num = i//batch_size + 1
136
150
 
137
151
  try:
138
- logger.info(f"🚀 Processing batch {i//batch_size + 1} ({len(batch_docs)} documents) for entity extraction")
152
+ batch_start_time = time.time()
153
+ logger.info(f"📦 Processing batch {batch_num}/{total_batches} ({len(batch_docs)} documents)...")
139
154
 
140
155
  # Batch extract entities (single LLM call for all documents in batch!)
141
156
  batch_results = self.entity_extraction_service.extract_batch_with_dspy(
@@ -209,6 +224,28 @@ class GraphRAGPipeline(RAGPipeline):
209
224
  logger.warning(f"Failed to store entities for document {doc.id}: {e}")
210
225
  failed_documents.append(doc.id)
211
226
 
227
+ # Log batch completion with timing and statistics
228
+ batch_elapsed = time.time() - batch_start_time
229
+ batch_entity_count = sum(len(batch_results.get(doc.id, [])) for doc in batch_docs)
230
+ logger.info(
231
+ f"✅ Batch {batch_num}/{total_batches} complete: "
232
+ f"{batch_entity_count} entities extracted in {batch_elapsed:.1f}s "
233
+ f"(avg: {batch_entity_count/len(batch_docs):.1f} per doc)"
234
+ )
235
+
236
+ # Show overall progress every 10 batches
237
+ if batch_num % 10 == 0 or batch_num == total_batches:
238
+ elapsed_so_far = time.time() - extraction_start_time
239
+ docs_processed = min(batch_num * batch_size, len(documents))
240
+ avg_time_per_doc = elapsed_so_far / docs_processed if docs_processed > 0 else 0
241
+ remaining_docs = len(documents) - docs_processed
242
+ eta_seconds = remaining_docs * avg_time_per_doc
243
+ logger.info(
244
+ f"📊 Progress: {docs_processed}/{len(documents)} documents processed "
245
+ f"({total_entities} entities, {total_relationships} relationships) | "
246
+ f"ETA: {eta_seconds/60:.1f} min"
247
+ )
248
+
212
249
  except Exception as e:
213
250
  # Batch extraction failed - fall back to individual processing for this batch
214
251
  logger.warning(f"Batch entity extraction failed: {e}, falling back to individual processing")
@@ -238,6 +275,20 @@ class GraphRAGPipeline(RAGPipeline):
238
275
  logger.warning(f"Entity extraction error for document {doc.id}: {e}")
239
276
  failed_documents.append(doc.id)
240
277
 
278
+ # Log final extraction summary
279
+ extraction_elapsed = time.time() - extraction_start_time
280
+ logger.info("=" * 70)
281
+ logger.info("✅ Entity Extraction Complete")
282
+ logger.info("=" * 70)
283
+ logger.info(f" Documents processed: {len(documents)}")
284
+ logger.info(f" Total entities: {total_entities}")
285
+ logger.info(f" Total relationships: {total_relationships}")
286
+ logger.info(f" Failed documents: {len(failed_documents)}")
287
+ logger.info(f" Extraction time: {extraction_elapsed:.1f}s ({extraction_elapsed/60:.2f} min)")
288
+ logger.info(f" Throughput: {len(documents)/extraction_elapsed:.2f} docs/sec")
289
+ logger.info(f" Avg entities per doc: {total_entities/len(documents):.1f}")
290
+ logger.info("=" * 70)
291
+
241
292
  # Only fail if we got zero entities across ALL documents
242
293
  # (suggests a systematic extraction failure rather than content issues or storage failure)
243
294
  if total_entities == 0:
@@ -527,6 +527,9 @@ class EntityExtractionService(OntologyAwareEntityExtractor):
527
527
  # Validate LLM configuration (Bug fix: silent fallback to Ollama)
528
528
  self._validate_llm_config()
529
529
 
530
+ # Log LLM configuration on startup for visibility
531
+ self._log_llm_configuration()
532
+
530
533
  def _validate_llm_config(self):
531
534
  """
532
535
  Validate LLM configuration and warn about silent fallbacks.
@@ -601,6 +604,34 @@ class EntityExtractionService(OntologyAwareEntityExtractor):
601
604
 
602
605
  return model
603
606
 
607
+ def _log_llm_configuration(self):
608
+ """
609
+ Log LLM configuration at service startup for visibility.
610
+
611
+ Helps users diagnose configuration issues and understand what model
612
+ is being used for entity extraction.
613
+ """
614
+ llm_config = self.config_manager.get("llm", {})
615
+
616
+ if not llm_config:
617
+ logger.warning("⚠️ No LLM configuration found - entity extraction may fail")
618
+ return
619
+
620
+ model = llm_config.get("model") or llm_config.get("model_name") or "qwen2.5:7b"
621
+ provider = llm_config.get("provider", "unknown")
622
+ api_type = llm_config.get("api_type", "unknown")
623
+ api_base = llm_config.get("api_base", "http://localhost:11434")
624
+
625
+ logger.info("=" * 70)
626
+ logger.info("🤖 Entity Extraction Service - LLM Configuration")
627
+ logger.info("=" * 70)
628
+ logger.info(f" Provider: {provider}")
629
+ logger.info(f" API Type: {api_type}")
630
+ logger.info(f" Model: {model}")
631
+ logger.info(f" API Base: {api_base}")
632
+ logger.info(f" Method: {self.method}")
633
+ logger.info("=" * 70)
634
+
604
635
  def extract_entities(self, document: Document) -> List[Entity]:
605
636
  """Extract entities with automatic ontology enhancement if enabled."""
606
637
  if hasattr(self, "ontology_enabled") and self.ontology_enabled:
@@ -863,20 +894,40 @@ class EntityExtractionService(OntologyAwareEntityExtractor):
863
894
  Returns:
864
895
  Dict mapping document IDs to their extracted entities
865
896
  """
897
+ import time
898
+
899
+ # Start timing
900
+ batch_start_time = time.time()
901
+
902
+ # Log batch start
903
+ logger.info(f"📦 Processing batch of {len(documents)} documents...")
904
+
866
905
  # Check if batch processing is enabled
867
906
  batch_config = self.config.get("batch_processing", {})
868
907
  batch_enabled = batch_config.get("enabled", True)
869
908
 
870
909
  if not batch_enabled:
871
- logger.info("Batch processing disabled - falling back to individual extraction")
910
+ logger.info("⚠️ Batch processing disabled - falling back to individual extraction")
911
+ logger.info(f"Processing {len(documents)} documents individually...")
912
+
872
913
  # Process documents individually
873
914
  result_map = {}
874
- for doc in documents:
915
+ for i, doc in enumerate(documents, 1):
916
+ logger.debug(f" Processing document {i}/{len(documents)}...")
875
917
  result = self.process_document(doc)
876
918
  if result.get("stored", False):
877
919
  # Extract entities from the result
878
920
  entities = result.get("entities", [])
879
921
  result_map[doc.id] = entities
922
+ logger.debug(f" Extracted {len(entities)} entities")
923
+
924
+ batch_elapsed = time.time() - batch_start_time
925
+ total_entities = sum(len(ents) for ents in result_map.values())
926
+ logger.info(
927
+ f"✅ Individual processing complete: {len(documents)} documents → {total_entities} entities "
928
+ f"in {batch_elapsed:.1f}s"
929
+ )
930
+
880
931
  return result_map
881
932
 
882
933
  try:
@@ -946,9 +997,12 @@ class EntityExtractionService(OntologyAwareEntityExtractor):
946
997
  logger.debug(f" Ticket {ticket_id}: {len(entities)} entities extracted")
947
998
 
948
999
  total_entities = sum(len(ents) for ents in result_map.values())
1000
+ batch_elapsed = time.time() - batch_start_time
1001
+
949
1002
  logger.info(
950
- f"✅ Batch complete: {len(tickets)} tickets → {total_entities} entities "
951
- f"(avg: {total_entities/len(tickets):.1f} per ticket)"
1003
+ f"✅ Batch complete: {len(tickets)} documents → {total_entities} entities "
1004
+ f"in {batch_elapsed:.1f}s (avg: {total_entities/len(tickets):.1f} entities/doc, "
1005
+ f"{batch_elapsed/len(tickets):.1f}s/doc)"
952
1006
  )
953
1007
 
954
1008
  return result_map
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-vector-rag
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Production-ready, extensible RAG framework with native IRIS vector search - unified API for basic, CRAG, GraphRAG, and ColBERT pipelines with RAGAS and DSPy integration
5
5
  Author-email: InterSystems <support@intersystems.com>
6
6
  Maintainer-email: Thomas Dyar <thomas.dyar@intersystems.com>
@@ -305,6 +305,31 @@ print(f"Relationships: {result['metadata']['relationships']}")
305
305
  print(f"Graph depth: {result['metadata']['graph_depth']}")
306
306
  ```
307
307
 
308
+ **⚠️ IMPORTANT:** To enable entity extraction during document ingestion, you MUST set `entity_extraction_enabled: True` in your pipeline configuration:
309
+
310
+ ```python
311
+ from iris_rag.config import ConfigurationManager
312
+
313
+ config = ConfigurationManager({
314
+ "pipelines": {
315
+ "graphrag": {
316
+ "entity_extraction_enabled": True, # REQUIRED for entity extraction!
317
+ }
318
+ },
319
+ "llm": {
320
+ "provider": "openai",
321
+ "api_type": "openai",
322
+ "model": "gpt-4o-mini",
323
+ "api_key": "your-api-key",
324
+ "temperature": 0.0
325
+ }
326
+ })
327
+
328
+ pipeline = create_pipeline('graphrag', config_manager=config)
329
+ ```
330
+
331
+ **Without this setting**, entity extraction will not run during `load_documents()` and no knowledge graph will be built, making graph-based retrieval unavailable.
332
+
308
333
  ### MultiQueryRRF: Multi-Perspective Retrieval
309
334
 
310
335
  Expands queries into multiple perspectives and fuses results:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iris-vector-rag"
7
- version = "0.3.1"
7
+ version = "0.3.3"
8
8
  description = "Production-ready, extensible RAG framework with native IRIS vector search - unified API for basic, CRAG, GraphRAG, and ColBERT pipelines with RAGAS and DSPy integration"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
File without changes