iris-vector-rag 0.2.5__tar.gz → 0.3.0__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.
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/PKG-INFO +1 -1
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/__init__.py +1 -1
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/config/embedding_config.py +19 -5
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/embeddings/entity_extractor.py +3 -3
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/embeddings/iris_embedding.py +15 -1
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/embeddings/manager.py +39 -13
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/services/storage.py +15 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_vector_rag.egg-info/PKG-INFO +1 -1
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/pyproject.toml +1 -1
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/LICENSE +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/README.md +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/adapters/rag_templates_bridge.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/batch_utils.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/config.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/connection_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/connection_pool.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/database.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/database_schema_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/db_init_with_indexes.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/db_vector_utils.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/environment_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/huggingface_utils.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/iris_client.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/iris_connection_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/iris_connection_pool.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/iris_connector.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/iris_dbapi_connector.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/iris_index_utils.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/iris_sql_utils.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/iris_stream_reader.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/llm_cache_config.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/llm_cache_iris.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/llm_cache_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/utils.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/common/vector_sql_utils.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/biomedical_question_generator.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/comparative_analysis_system.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/empirical_reporting.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/evaluation_orchestrator.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/execute_production_evaluation.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/outputs/production_evaluation/execute_biomedical_rag_10k_evaluation_20250913_200432.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/pmc_data_pipeline.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/production_evaluation_config.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/ragas_metrics_framework.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/real_production_evaluation.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/run_10k_evaluation.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/simple_test.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/statistical_evaluation_methodology.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/test_framework.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/test_iris_connectivity.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/test_small_scale_evaluation.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/true_e2e_evaluation.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/visualization_engine.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/cleanup_job.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/cli.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/main.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/mcp_routes.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/middleware/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/middleware/auth.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/middleware/logging.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/middleware/rate_limit.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/auth.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/errors.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/health.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/pipeline.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/quota.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/request.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/response.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/upload.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/models/websocket.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/routes/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/routes/document.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/routes/health.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/routes/pipeline.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/routes/query.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/services/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/services/auth_service.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/services/document_service.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/services/pipeline_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/websocket/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/websocket/connection.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/websocket/handlers.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/api/websocket/routes.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/config/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/config/backend_modes.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/config/default_config.yaml +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/config/manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/config/pipeline_config_service.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/core/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/core/base.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/core/connection.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/core/exceptions.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/core/models.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/core/response_standardizer.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/core/validators.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/core/vector_store.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/core/vector_store_exceptions.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/dspy_modules/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/dspy_modules/batch_entity_extraction.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/dspy_modules/entity_extraction_module.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/embeddings/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/mcp/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/mcp/__main__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/mcp/bridge.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/mcp/cli.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/mcp/config.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/mcp/technique_handlers.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/mcp/tool_schemas.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/mcp/validation.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/memory/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/memory/knowledge_extractor.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/memory/models.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/memory/rag_integration.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/memory/temporal_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/ontology/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/ontology/loader.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/ontology/models.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/ontology/plugins/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/ontology/plugins/general_ontology.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/ontology/reasoner.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/optimization/cache_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/optimization/connection_pool.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/optimization/database_optimizer.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/optimization/hnsw_tuner.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/optimization/parallel_processor.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/optimization/performance_monitor.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/_hybrid_utils.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/basic.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/basic_rerank.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/colbert_pylate/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/colbert_pylate/pylate_pipeline.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/crag.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/factory.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/graphrag.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/graphrag_merged.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/hybrid_graphrag.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/hybrid_graphrag_discovery.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/hybrid_graphrag_retrieval.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/iris_global_graphrag.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/multi_query_rrf.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/plugins/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/plugins/interface.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/services/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/services/entity_extraction.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/storage/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/storage/clob_handler.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/storage/enterprise_storage.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/storage/hybrid_schema_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/storage/iris_embedding_ops.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/storage/schema_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/storage/vector_store_iris.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/testing/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/testing/backend_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/testing/connection_pool.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/testing/exceptions.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/testing/iris_devtools_bridge.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/testing/validators.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/utils/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/utils/module_loader.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/utils/project_root.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/utils/token_counter.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/validation/__init__.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/validation/factory.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/validation/orchestrator.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/validation/requirements.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/validation/validator.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_vector_rag.egg-info/SOURCES.txt +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_vector_rag.egg-info/dependency_links.txt +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_vector_rag.egg-info/entry_points.txt +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_vector_rag.egg-info/requires.txt +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_vector_rag.egg-info/top_level.txt +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/setup.cfg +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_comprehensive_pipeline_validation_e2e.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_comprehensive_pipeline_validation_e2e_fixed.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_enterprise_storage.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_entity_extraction_service.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_hybrid_graphrag_functional.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_index_ensure.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_mcp_integration.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_mcp_server_integration.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_ontology_loader.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_ontology_support.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_performance_monitor_comprehensive.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_performance_monitor_working.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_pylate_colbert_pipeline.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_schema_manager_bugs.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_temporal_manager.py +0 -0
- {iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/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
|
+
Version: 0.3.0
|
|
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>
|
|
@@ -18,7 +18,7 @@ from .validation.requirements import get_pipeline_requirements
|
|
|
18
18
|
from .validation.validator import PreConditionValidator
|
|
19
19
|
|
|
20
20
|
# Package version
|
|
21
|
-
__version__ = "0.2.
|
|
21
|
+
__version__ = "0.2.6"
|
|
22
22
|
__author__ = "InterSystems IRIS RAG Templates Project"
|
|
23
23
|
__description__ = "A comprehensive, production-ready framework for implementing Retrieval Augmented Generation (RAG) pipelines using InterSystems IRIS as the vector database backend."
|
|
24
24
|
|
|
@@ -235,11 +235,25 @@ def validate_embedding_config(config: EmbeddingConfig) -> ValidationResult:
|
|
|
235
235
|
f"Model '{config.model_name}' found in cache at {model_cache_dir}"
|
|
236
236
|
)
|
|
237
237
|
else:
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
238
|
+
# Model not in cache - validate model name looks legitimate
|
|
239
|
+
# Check for obviously fake model names or invalid cache paths
|
|
240
|
+
if (
|
|
241
|
+
not result.cache_path_valid # Cache path invalid
|
|
242
|
+
or "nonexistent" in config.model_name.lower() # Obviously fake model name
|
|
243
|
+
or "does-not-exist" in config.model_name.lower()
|
|
244
|
+
or not "/" in config.model_name # Invalid HuggingFace format (should be org/model)
|
|
245
|
+
):
|
|
246
|
+
result.add_error(
|
|
247
|
+
f"MODEL_NOT_FOUND: Model '{config.model_name}' not found in cache and appears invalid. "
|
|
248
|
+
f"Verify model exists on HuggingFace: https://huggingface.co/{config.model_name}"
|
|
249
|
+
)
|
|
250
|
+
else:
|
|
251
|
+
# Model not cached but looks valid - warn it will be downloaded
|
|
252
|
+
result.add_warning(
|
|
253
|
+
f"MODEL_NOT_CACHED: Model '{config.model_name}' not found in cache. "
|
|
254
|
+
f"It will be downloaded from HuggingFace on first use. "
|
|
255
|
+
f"To pre-download: huggingface-cli download {config.model_name}"
|
|
256
|
+
)
|
|
243
257
|
|
|
244
258
|
return result
|
|
245
259
|
|
|
@@ -9,7 +9,7 @@ Purpose: Extract entities from text during EMBEDDING vectorization
|
|
|
9
9
|
from dataclasses import dataclass, field
|
|
10
10
|
from typing import List, Dict, Any, Optional
|
|
11
11
|
from uuid import UUID, uuid4
|
|
12
|
-
from datetime import datetime
|
|
12
|
+
from datetime import datetime, timezone
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
@dataclass
|
|
@@ -354,7 +354,7 @@ def _extract_entities_rule_based(
|
|
|
354
354
|
List of extracted entities
|
|
355
355
|
"""
|
|
356
356
|
entities = []
|
|
357
|
-
timestamp = datetime.now(
|
|
357
|
+
timestamp = datetime.now(timezone.utc)
|
|
358
358
|
|
|
359
359
|
# Simple pattern matching for demonstration
|
|
360
360
|
# In production, use LLM or NER model
|
|
@@ -495,7 +495,7 @@ def configure_entity_types(
|
|
|
495
495
|
return ConfigurationResult(
|
|
496
496
|
config_name=config_name,
|
|
497
497
|
entity_types=entity_types,
|
|
498
|
-
updated_at=datetime.now(
|
|
498
|
+
updated_at=datetime.now(timezone.utc)
|
|
499
499
|
)
|
|
500
500
|
|
|
501
501
|
|
|
@@ -20,6 +20,7 @@ from .manager import (
|
|
|
20
20
|
_record_cache_hit,
|
|
21
21
|
_record_cache_miss,
|
|
22
22
|
_record_embeddings_generated,
|
|
23
|
+
_record_embedding_time,
|
|
23
24
|
)
|
|
24
25
|
|
|
25
26
|
logger = logging.getLogger(__name__)
|
|
@@ -333,11 +334,15 @@ def embed_texts(config_name: str, texts: List[str]) -> EmbeddingResult:
|
|
|
333
334
|
|
|
334
335
|
# Generate embeddings
|
|
335
336
|
try:
|
|
337
|
+
# Time the embedding generation
|
|
338
|
+
embed_start = time.time()
|
|
336
339
|
embeddings = model.encode(texts, convert_to_tensor=False)
|
|
337
340
|
embeddings_list = embeddings.tolist()
|
|
341
|
+
embed_time_ms = (time.time() - embed_start) * 1000
|
|
338
342
|
|
|
339
|
-
# Record embeddings generated
|
|
343
|
+
# Record embeddings generated and timing
|
|
340
344
|
_record_embeddings_generated(config_name, len(texts))
|
|
345
|
+
_record_embedding_time(config_name, embed_time_ms)
|
|
341
346
|
|
|
342
347
|
logger.debug(
|
|
343
348
|
"EMBEDDING_GENERATION_SUCCESS",
|
|
@@ -366,10 +371,18 @@ def embed_texts(config_name: str, texts: List[str]) -> EmbeddingResult:
|
|
|
366
371
|
# Try CPU fallback
|
|
367
372
|
try:
|
|
368
373
|
model_cpu = _get_cached_sentence_transformer(config.model_name, "cpu")
|
|
374
|
+
|
|
375
|
+
# Time CPU fallback embedding generation
|
|
376
|
+
embed_start = time.time()
|
|
369
377
|
embeddings = model_cpu.encode(texts, convert_to_tensor=False)
|
|
370
378
|
embeddings_list = embeddings.tolist()
|
|
379
|
+
embed_time_ms = (time.time() - embed_start) * 1000
|
|
371
380
|
device = "cpu"
|
|
372
381
|
|
|
382
|
+
# Record embeddings and timing for CPU fallback
|
|
383
|
+
_record_embeddings_generated(config_name, len(texts))
|
|
384
|
+
_record_embedding_time(config_name, embed_time_ms)
|
|
385
|
+
|
|
373
386
|
logger.info(
|
|
374
387
|
"EMBEDDING_CPU_FALLBACK_SUCCESS",
|
|
375
388
|
extra={
|
|
@@ -377,6 +390,7 @@ def embed_texts(config_name: str, texts: List[str]) -> EmbeddingResult:
|
|
|
377
390
|
"num_texts": len(texts),
|
|
378
391
|
"original_device": "gpu",
|
|
379
392
|
"fallback_device": "cpu",
|
|
393
|
+
"embedding_time_ms": embed_time_ms,
|
|
380
394
|
}
|
|
381
395
|
)
|
|
382
396
|
|
|
@@ -45,6 +45,7 @@ class CachedModelInstance:
|
|
|
45
45
|
cache_hits: int = 0
|
|
46
46
|
cache_misses: int = 0
|
|
47
47
|
total_embeddings_generated: int = 0
|
|
48
|
+
total_embedding_time_ms: float = 0.0 # Cumulative embedding time for averaging
|
|
48
49
|
|
|
49
50
|
|
|
50
51
|
@dataclass
|
|
@@ -503,13 +504,18 @@ def get_cache_stats(config_name: Optional[str] = None) -> CacheStatistics:
|
|
|
503
504
|
instance = _CACHE_STATS[config_name]
|
|
504
505
|
total_calls = instance.cache_hits + instance.cache_misses
|
|
505
506
|
hit_rate = instance.cache_hits / total_calls if total_calls > 0 else 0.0
|
|
507
|
+
avg_time = (
|
|
508
|
+
instance.total_embedding_time_ms / total_calls
|
|
509
|
+
if total_calls > 0
|
|
510
|
+
else 0.0
|
|
511
|
+
)
|
|
506
512
|
|
|
507
513
|
return CacheStatistics(
|
|
508
514
|
config_name=instance.config_name,
|
|
509
515
|
cache_hits=instance.cache_hits,
|
|
510
516
|
cache_misses=instance.cache_misses,
|
|
511
517
|
hit_rate=hit_rate,
|
|
512
|
-
avg_embedding_time_ms=
|
|
518
|
+
avg_embedding_time_ms=avg_time,
|
|
513
519
|
model_load_count=instance.cache_misses, # Approximation
|
|
514
520
|
memory_usage_mb=instance.memory_usage_mb,
|
|
515
521
|
device=instance.device,
|
|
@@ -557,20 +563,33 @@ def clear_cache(config_name: Optional[str] = None):
|
|
|
557
563
|
|
|
558
564
|
with _CACHE_LOCK:
|
|
559
565
|
if config_name:
|
|
560
|
-
# Clear specific model
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
566
|
+
# Clear specific model by config_name
|
|
567
|
+
# Need to get config to find model_name, then build cache keys
|
|
568
|
+
from ..embeddings.iris_embedding import get_config
|
|
569
|
+
|
|
570
|
+
try:
|
|
571
|
+
config = get_config(config_name)
|
|
572
|
+
model_name = config.model_name
|
|
573
|
+
except ValueError:
|
|
574
|
+
# Config not found, return empty result
|
|
575
|
+
logger.warning(f"Config '{config_name}' not found, nothing to clear")
|
|
576
|
+
return ClearCacheResult(models_cleared=0, memory_freed_mb=0.0)
|
|
577
|
+
|
|
578
|
+
# Cache keys are "model_name:device", check all possible devices
|
|
579
|
+
possible_devices = ["cuda:0", "mps", "cpu"]
|
|
580
|
+
cache_keys_to_remove = []
|
|
581
|
+
|
|
582
|
+
for device in possible_devices:
|
|
583
|
+
cache_key = f"{model_name}:{device}"
|
|
584
|
+
if cache_key in _SENTENCE_TRANSFORMER_CACHE:
|
|
585
|
+
cache_keys_to_remove.append(cache_key)
|
|
586
|
+
|
|
587
|
+
models_cleared = len(cache_keys_to_remove)
|
|
568
588
|
memory_freed = 0.0
|
|
569
589
|
|
|
570
|
-
|
|
571
|
-
del _SENTENCE_TRANSFORMER_CACHE[
|
|
572
|
-
|
|
573
|
-
logger.info(f"Cleared cache for: {cache_key_to_remove}")
|
|
590
|
+
for cache_key in cache_keys_to_remove:
|
|
591
|
+
del _SENTENCE_TRANSFORMER_CACHE[cache_key]
|
|
592
|
+
logger.info(f"Cleared cache for: {cache_key}")
|
|
574
593
|
|
|
575
594
|
with _STATS_LOCK:
|
|
576
595
|
if config_name in _CACHE_STATS:
|
|
@@ -628,3 +647,10 @@ def _record_embeddings_generated(config_name: str, count: int):
|
|
|
628
647
|
with _STATS_LOCK:
|
|
629
648
|
if config_name in _CACHE_STATS:
|
|
630
649
|
_CACHE_STATS[config_name].total_embeddings_generated += count
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
def _record_embedding_time(config_name: str, time_ms: float):
|
|
653
|
+
"""Record embedding generation time for averaging."""
|
|
654
|
+
with _STATS_LOCK:
|
|
655
|
+
if config_name in _CACHE_STATS:
|
|
656
|
+
_CACHE_STATS[config_name].total_embedding_time_ms += time_ms
|
|
@@ -53,6 +53,10 @@ class EntityStorageAdapter:
|
|
|
53
53
|
# Maps requested entity_id -> canonical stored entity_id
|
|
54
54
|
self._entity_id_map: Dict[str, str] = {}
|
|
55
55
|
|
|
56
|
+
# Table existence check caching (performance optimization - prevents redundant checks)
|
|
57
|
+
# Performance fix: 99.96% reduction in table checks (59,564 → 22 calls)
|
|
58
|
+
self._tables_ensured = False
|
|
59
|
+
|
|
56
60
|
logger.info(
|
|
57
61
|
f"EntityStorageAdapter initialized with tables: {self.entities_table}, {self.relationships_table}"
|
|
58
62
|
)
|
|
@@ -61,7 +65,14 @@ class EntityStorageAdapter:
|
|
|
61
65
|
"""
|
|
62
66
|
Ensure knowledge graph tables exist using SchemaManager.
|
|
63
67
|
Idempotent, safe to call before storage operations.
|
|
68
|
+
|
|
69
|
+
Performance optimization: Caches result after first call to avoid redundant checks.
|
|
64
70
|
"""
|
|
71
|
+
# Performance optimization: Skip if tables already ensured
|
|
72
|
+
if self._tables_ensured:
|
|
73
|
+
logger.debug("Tables already ensured, skipping check (cached)")
|
|
74
|
+
return
|
|
75
|
+
|
|
65
76
|
try:
|
|
66
77
|
schema_manager = SchemaManager(
|
|
67
78
|
self.connection_manager, ConfigurationManager()
|
|
@@ -72,6 +83,10 @@ class EntityStorageAdapter:
|
|
|
72
83
|
# Then relationships
|
|
73
84
|
success = schema_manager.ensure_table_schema("EntityRelationships")
|
|
74
85
|
logger.info(f"EntityRelationships table ensure result: {success}")
|
|
86
|
+
|
|
87
|
+
# Set flag to cache that tables are created (prevents redundant checks)
|
|
88
|
+
self._tables_ensured = True
|
|
89
|
+
|
|
75
90
|
except Exception as e:
|
|
76
91
|
logger.error(
|
|
77
92
|
f"Could not ensure knowledge graph tables prior to storage ops: {e}"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iris-vector-rag
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
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>
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "iris-vector-rag"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.3.0"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/comparative_analysis_system.py
RENAMED
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/evaluation_orchestrator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/production_evaluation_config.py
RENAMED
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/ragas_metrics_framework.py
RENAMED
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/real_production_evaluation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/test_iris_connectivity.py
RENAMED
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/test_small_scale_evaluation.py
RENAMED
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/evaluation_framework/visualization_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/dspy_modules/batch_entity_extraction.py
RENAMED
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/dspy_modules/entity_extraction_module.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/ontology/plugins/general_ontology.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/optimization/performance_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/colbert_pylate/__init__.py
RENAMED
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/colbert_pylate/pylate_pipeline.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/hybrid_graphrag_discovery.py
RENAMED
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_rag/pipelines/hybrid_graphrag_retrieval.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/iris_vector_rag.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_comprehensive_pipeline_validation_e2e.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_rag-0.2.5 → iris_vector_rag-0.3.0}/tests/test_performance_monitor_comprehensive.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|