proximadb 0.2.2__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.
- proximadb-0.2.2/.gitignore +50 -0
- proximadb-0.2.2/EMBEDDING_ARCHITECTURE_REDESIGN.md +544 -0
- proximadb-0.2.2/EMBEDDING_PROVIDERS.md +523 -0
- proximadb-0.2.2/ENUM_CONSTANTS_REFERENCE.md +405 -0
- proximadb-0.2.2/GRAPH_API_TEST_RESULTS.md +427 -0
- proximadb-0.2.2/Makefile +74 -0
- proximadb-0.2.2/PKG-INFO +156 -0
- proximadb-0.2.2/README.adoc +1023 -0
- proximadb-0.2.2/README.md +48 -0
- proximadb-0.2.2/SDK_DOCUMENTATION.adoc +95 -0
- proximadb-0.2.2/TEST_REPORT.md +162 -0
- proximadb-0.2.2/benchmarks/compression_benchmark.py +423 -0
- proximadb-0.2.2/codegen/.gitignore +1 -0
- proximadb-0.2.2/codegen/config.yaml +27 -0
- proximadb-0.2.2/codegen/gen.sh +85 -0
- proximadb-0.2.2/codegen/requirements.txt +13 -0
- proximadb-0.2.2/demo_v1_proto.py +151 -0
- proximadb-0.2.2/docs/diagrams/sdk_migration_flow.mmd +103 -0
- proximadb-0.2.2/docs/diagrams/smart_cache_architecture.mmd +118 -0
- proximadb-0.2.2/docs/diagrams/unified_sdk_architecture.mmd +103 -0
- proximadb-0.2.2/docs/multi_model_guide.md +779 -0
- proximadb-0.2.2/example_graph_hybrid_search.py +378 -0
- proximadb-0.2.2/example_v1_client.py +132 -0
- proximadb-0.2.2/examples/README.md +414 -0
- proximadb-0.2.2/examples/advanced_search.py +480 -0
- proximadb-0.2.2/examples/arrow_export_examples.py +790 -0
- proximadb-0.2.2/examples/auth_examples.py +401 -0
- proximadb-0.2.2/examples/basic_usage.py +436 -0
- proximadb-0.2.2/examples/basic_usage_working.py +256 -0
- proximadb-0.2.2/examples/bert_utils.py +223 -0
- proximadb-0.2.2/examples/chunking_embedding_demo.py +292 -0
- proximadb-0.2.2/examples/complete_workflow_demo.py +214 -0
- proximadb-0.2.2/examples/compression_example.py +271 -0
- proximadb-0.2.2/examples/dashboard_metrics_demo.py +328 -0
- proximadb-0.2.2/examples/domain_specific_embeddings.py +497 -0
- proximadb-0.2.2/examples/embedding_providers_demo.py +431 -0
- proximadb-0.2.2/examples/monitoring_example.py +588 -0
- proximadb-0.2.2/examples/production_setup.py +539 -0
- proximadb-0.2.2/examples/sks_graph_first_demo.py +387 -0
- proximadb-0.2.2/examples/sks_real_world_demo.py +642 -0
- proximadb-0.2.2/examples/sql_queries.py +365 -0
- proximadb-0.2.2/examples/streaming_upload.py +489 -0
- proximadb-0.2.2/grpc_transport_example.py +208 -0
- proximadb-0.2.2/list_collections_test.py +58 -0
- proximadb-0.2.2/log/proximadb.log.2025-06-24 +454 -0
- proximadb-0.2.2/metadata/current/op_0000000000000001.oplog +1 -0
- proximadb-0.2.2/pyproject.toml +386 -0
- proximadb-0.2.2/pytest.ini +70 -0
- proximadb-0.2.2/reports/report.html +1091 -0
- proximadb-0.2.2/run_tests_no_cache.sh +18 -0
- proximadb-0.2.2/scripts/download_and_verify_models.py +325 -0
- proximadb-0.2.2/scripts/generate_protos.py +232 -0
- proximadb-0.2.2/scripts/generate_v2_protos.py +140 -0
- proximadb-0.2.2/setup.cfg +4 -0
- proximadb-0.2.2/setup_test_environment.sh +89 -0
- proximadb-0.2.2/src/proximadb/__init__.py +1 -0
- proximadb-0.2.2/src/proximadb/v1/__init__.py +2 -0
- proximadb-0.2.2/src/proximadb/v1/collection_pb2.py +65 -0
- proximadb-0.2.2/src/proximadb/v1/collection_pb2_grpc.py +267 -0
- proximadb-0.2.2/src/proximadb/v1/collection_types_pb2.py +117 -0
- proximadb-0.2.2/src/proximadb/v1/collection_types_pb2_grpc.py +28 -0
- proximadb-0.2.2/src/proximadb/v1/entity_pb2.py +124 -0
- proximadb-0.2.2/src/proximadb/v1/entity_pb2_grpc.py +250 -0
- proximadb-0.2.2/src/proximadb/v1/graph_collection_pb2.py +109 -0
- proximadb-0.2.2/src/proximadb/v1/graph_collection_pb2_grpc.py +28 -0
- proximadb-0.2.2/src/proximadb/v1/graph_pb2.py +228 -0
- proximadb-0.2.2/src/proximadb/v1/graph_pb2_grpc.py +1478 -0
- proximadb-0.2.2/src/proximadb/v1/relations_pb2.py +56 -0
- proximadb-0.2.2/src/proximadb/v1/relations_pb2_grpc.py +261 -0
- proximadb-0.2.2/src/proximadb/v1/sql_pb2.py +35 -0
- proximadb-0.2.2/src/proximadb/v1/sql_pb2_grpc.py +109 -0
- proximadb-0.2.2/src/proximadb/v1/types_pb2.py +51 -0
- proximadb-0.2.2/src/proximadb/v1/types_pb2_grpc.py +28 -0
- proximadb-0.2.2/src/proximadb/v1/vector_pb2.py +55 -0
- proximadb-0.2.2/src/proximadb/v1/vector_pb2_grpc.py +265 -0
- proximadb-0.2.2/src/proximadb/v1/vector_types_pb2.py +134 -0
- proximadb-0.2.2/src/proximadb/v1/vector_types_pb2_grpc.py +28 -0
- proximadb-0.2.2/src/proximadb/v2/__init__.py +1 -0
- proximadb-0.2.2/src/proximadb/v2/document_pb2.py +107 -0
- proximadb-0.2.2/src/proximadb/v2/document_pb2_grpc.py +347 -0
- proximadb-0.2.2/src/proximadb/v2/entity_pb2.py +121 -0
- proximadb-0.2.2/src/proximadb/v2/entity_pb2_grpc.py +262 -0
- proximadb-0.2.2/src/proximadb/v2/fusion_pb2.py +46 -0
- proximadb-0.2.2/src/proximadb/v2/fusion_pb2_grpc.py +115 -0
- proximadb-0.2.2/src/proximadb/v2/graph_pb2.py +157 -0
- proximadb-0.2.2/src/proximadb/v2/graph_pb2_grpc.py +1138 -0
- proximadb-0.2.2/src/proximadb/v2/record_pb2.py +215 -0
- proximadb-0.2.2/src/proximadb/v2/record_pb2_grpc.py +890 -0
- proximadb-0.2.2/src/proximadb.egg-info/PKG-INFO +156 -0
- proximadb-0.2.2/src/proximadb.egg-info/SOURCES.txt +775 -0
- proximadb-0.2.2/src/proximadb.egg-info/dependency_links.txt +1 -0
- proximadb-0.2.2/src/proximadb.egg-info/entry_points.txt +3 -0
- proximadb-0.2.2/src/proximadb.egg-info/requires.txt +103 -0
- proximadb-0.2.2/src/proximadb.egg-info/top_level.txt +2 -0
- proximadb-0.2.2/src/proximadb_sdk/__init__.py +1257 -0
- proximadb-0.2.2/src/proximadb_sdk/_code_oid.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/__init__.py +14 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/collections/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/collections/create_collection.py +314 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/collections/delete_collection.py +179 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/collections/get_collection.py +223 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/collections/list_collections.py +258 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/documents/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/documents/create_document_collection.py +167 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/documents/ingest_documents.py +209 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/documents/insert_document.py +185 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/documents/list_document_collections.py +134 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/documents/query_documents.py +158 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/entities/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/entities/delete_entity_v2.py +177 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/entities/get_entity_v2.py +177 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/entities/search_entities_v2.py +185 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/entities/upsert_entity_v2.py +185 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/batch_create_edges.py +197 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/batch_create_nodes.py +201 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/create_edge.py +189 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/create_graph.py +170 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/create_node.py +189 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/delete_graph.py +163 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/delete_node.py +177 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/fusion_search_v2.py +193 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/get_graph.py +163 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/get_graph_stats.py +158 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/get_node.py +177 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/impact_analysis_v2.py +197 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/list_graphs.py +132 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/graphs/traverse_graph.py +189 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/health/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/health/get_health.py +132 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/health/get_liveness.py +132 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/health/get_readiness.py +132 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/hybrid/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/hybrid/hybrid_index.py +165 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/hybrid/hybrid_search.py +170 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/meta/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/meta/get_capabilities.py +144 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/observability/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/observability/ingest_log.py +180 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/observability/query_logs.py +180 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/query/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/query/execute_query.py +194 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/query/explain_query.py +170 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/records/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/records/delete_record.py +180 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/records/get_record.py +297 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/records/insert_records.py +377 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/records/scan_records.py +229 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/schema/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/schema/get_collection_schema.py +223 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/schema/update_collection_schema.py +373 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/search/__init__.py +6 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/api/search/search_records.py +309 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/client.py +291 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/errors.py +21 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/__init__.py +246 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/batch_create_edges_request.py +83 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/batch_create_nodes_request.py +83 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/batch_edges_response.py +89 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/batch_edges_response_data.py +91 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/batch_nodes_response.py +89 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/batch_nodes_response_data.py +91 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/capabilities_response.py +135 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/capabilities_response_error_envelope.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/capabilities_response_limits.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/collection_stats_v2.py +91 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/collection_v2_response.py +267 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/collection_v2_summary.py +119 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/create_collection_v2_request.py +410 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/create_collection_v2_response.py +127 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/create_document_collection_body.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/create_document_collection_response_200.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/create_edge_request.py +76 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/create_graph_request.py +106 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/create_node_request.py +76 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/delete_collection_v2_response.py +75 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/delete_graph_response.py +66 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/delete_node_response.py +73 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/delete_record_v2_response.py +83 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/edge_input.py +136 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/edge_input_properties.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/edge_response.py +164 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/edge_response_properties_type_0.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/embedding_input.py +106 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/entity_dto.py +92 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/entity_dto_flexible_metadata.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/entity_embedding_input.py +103 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/entity_provenance_input.py +119 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/entity_provenance_input_metadata.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/entity_relation_input.py +119 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/entity_relation_input_properties.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/entity_search_result.py +82 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/error_body.py +141 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/error_body_details_type_0.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/error_response.py +79 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/explain_query_request.py +95 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/fusion_hit.py +96 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/fusion_search_request.py +313 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/fusion_search_response.py +93 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/fusion_stats_dto.py +90 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/graph_collection_response.py +148 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/graph_stats_response.py +94 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/health_response.py +82 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/hnsw_config_input.py +117 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/hnsw_config_output.py +117 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/hybrid_index_body.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/hybrid_index_response_200.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/hybrid_search_body.py +104 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/hybrid_search_response_200.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/impact_analysis_request.py +115 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/impact_analysis_response.py +82 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/index_config_input.py +197 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/index_config_input_parameters.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/index_policy_input.py +143 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/index_spec_output.py +146 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/ingest_document.py +145 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/ingest_document_metadata.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/ingest_documents_request.py +82 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/ingest_documents_response.py +110 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/ingest_log_body.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/ingest_log_response_200.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/ingested_record.py +74 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/insert_document_body.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/insert_document_response_200.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/insert_error.py +95 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/insert_records_request.py +159 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/insert_records_response.py +107 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/ivf_config_input.py +97 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/ivf_config_output.py +97 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/list_collections_v2_response.py +115 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/list_document_collections_response_200.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/list_graphs_response.py +93 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/node_input.py +122 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/node_input_properties.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/node_response.py +137 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/node_response_properties_type_0.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/predicate_shortfall_wire.py +97 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/probe_response.py +66 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/proxima_record_input.py +181 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/proxima_record_input_props_type_0.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/quantization_config_input.py +99 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/quantization_config_output.py +75 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/query_documents_response_200.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/query_language.py +15 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/query_logs_body.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/query_logs_response_200.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/query_request.py +174 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/query_request_parameters_type_0_item.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/query_response.py +56 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/record_v2_response.py +200 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/record_v2_response_props.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/rest_column_definition.py +244 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/scan_records_request.py +150 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/scan_records_response.py +125 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/schema_change.py +95 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/schema_definition.py +134 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/schema_response.py +149 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/search_entities_request.py +105 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/search_entities_request_filters.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/search_entities_response.py +90 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/text_field_input.py +103 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/text_field_output.py +103 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/traverse_request.py +139 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/traverse_response.py +124 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/typed_filter.py +107 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/typed_search_request.py +207 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/typed_search_response.py +181 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/typed_search_result.py +168 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/typed_search_result_props.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/update_schema_request.py +175 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/update_schema_response.py +123 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/upsert_entity_request.py +175 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/upsert_entity_request_flexible_metadata.py +52 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/models/upsert_entity_response.py +82 -0
- proximadb-0.2.2/src/proximadb_sdk/_generated/rest/types.py +51 -0
- proximadb-0.2.2/src/proximadb_sdk/adapters/__init__.py +104 -0
- proximadb-0.2.2/src/proximadb_sdk/adapters/base.py +370 -0
- proximadb-0.2.2/src/proximadb_sdk/adapters/embedded_adapter.py +2023 -0
- proximadb-0.2.2/src/proximadb_sdk/adapters/grpc_adapter.py +616 -0
- proximadb-0.2.2/src/proximadb_sdk/adapters/rest_adapter.py +970 -0
- proximadb-0.2.2/src/proximadb_sdk/arrow_export.py +596 -0
- proximadb-0.2.2/src/proximadb_sdk/auth.py +672 -0
- proximadb-0.2.2/src/proximadb_sdk/automl.py +964 -0
- proximadb-0.2.2/src/proximadb_sdk/batching.py +42 -0
- proximadb-0.2.2/src/proximadb_sdk/batching_unified.py +551 -0
- proximadb-0.2.2/src/proximadb_sdk/builders/__init__.py +15 -0
- proximadb-0.2.2/src/proximadb_sdk/builders/collection.py +314 -0
- proximadb-0.2.2/src/proximadb_sdk/builders/insert.py +360 -0
- proximadb-0.2.2/src/proximadb_sdk/builders/search.py +210 -0
- proximadb-0.2.2/src/proximadb_sdk/cache.py +708 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking.py +883 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/__init__.py +227 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/base.py +225 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/code.py +4427 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/document_parsers.py +1111 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/factory.py +131 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/fixed_size.py +154 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/paragraph.py +346 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/parser_utils.py +434 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/pipeline.py +1399 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/recursive.py +186 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/semantic.py +398 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/semantic_embedding.py +256 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/sentence.py +258 -0
- proximadb-0.2.2/src/proximadb_sdk/chunking_strategies/sliding_window.py +207 -0
- proximadb-0.2.2/src/proximadb_sdk/circuit_breaker.py +494 -0
- proximadb-0.2.2/src/proximadb_sdk/cli.py +654 -0
- proximadb-0.2.2/src/proximadb_sdk/client_v1.py +1530 -0
- proximadb-0.2.2/src/proximadb_sdk/code_knowledge.py +1027 -0
- proximadb-0.2.2/src/proximadb_sdk/config.py +438 -0
- proximadb-0.2.2/src/proximadb_sdk/document.py +1627 -0
- proximadb-0.2.2/src/proximadb_sdk/document_pipeline.py +830 -0
- proximadb-0.2.2/src/proximadb_sdk/document_processor.py +1029 -0
- proximadb-0.2.2/src/proximadb_sdk/document_v2.py +479 -0
- proximadb-0.2.2/src/proximadb_sdk/embedded.py +2500 -0
- proximadb-0.2.2/src/proximadb_sdk/embedded_multi.py +871 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/__init__.py +234 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/cohere.py +205 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/core/__init__.py +19 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/core/base.py +263 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/core/cache.py +282 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/core/config.py +123 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/core/device.py +43 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/core/registry.py +254 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/fastembed.py +130 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/finbert_provider.py +321 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/instructor.py +211 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/mixins/__init__.py +17 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/mixins/batching.py +143 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/mixins/instruction.py +163 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/mixins/normalization.py +116 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/mixins/sentence_transformer.py +199 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/multi_bert_provider.py +713 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/openai_compatible.py +215 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/openai_provider.py +222 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/providers/__init__.py +7 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/providers/local/__init__.py +3 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/providers/local/bge.py +111 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/providers/local/e5.py +123 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/providers/local/gte_qwen.py +100 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/providers/local/sentence_transformer.py +106 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/providers/local/sfr.py +82 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/providers/testing/__init__.py +1 -0
- proximadb-0.2.2/src/proximadb_sdk/embedding_providers/providers/testing/simulated.py +113 -0
- proximadb-0.2.2/src/proximadb_sdk/entity_v2.py +407 -0
- proximadb-0.2.2/src/proximadb_sdk/enum_packing.py +545 -0
- proximadb-0.2.2/src/proximadb_sdk/exceptions.py +362 -0
- proximadb-0.2.2/src/proximadb_sdk/filters.py +420 -0
- proximadb-0.2.2/src/proximadb_sdk/fusion_v2.py +157 -0
- proximadb-0.2.2/src/proximadb_sdk/graph.py +1182 -0
- proximadb-0.2.2/src/proximadb_sdk/graph_analytics.py +912 -0
- proximadb-0.2.2/src/proximadb_sdk/hybrid.py +1340 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/__init__.py +26 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/_records.py +34 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/agentic_ddl.py +178 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/agentic_io.py +504 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/agentic_store.py +588 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/autogen.py +472 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/crewai.py +154 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/dspy.py +88 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/dual_use_store.py +215 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/graph_walk_client.py +175 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/haystack.py +614 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/langchain.py +315 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/langgraph.py +85 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/llama_index.py +312 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/mcp_tools.py +199 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/mlops.py +150 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/victor.py +276 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/victor_embedded.py +411 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/victor_graph.py +697 -0
- proximadb-0.2.2/src/proximadb_sdk/integrations/victor_multi.py +813 -0
- proximadb-0.2.2/src/proximadb_sdk/intelligent_router.py +744 -0
- proximadb-0.2.2/src/proximadb_sdk/llm/__init__.py +66 -0
- proximadb-0.2.2/src/proximadb_sdk/llm/config.py +165 -0
- proximadb-0.2.2/src/proximadb_sdk/llm/embedding.py +289 -0
- proximadb-0.2.2/src/proximadb_sdk/llm/rag.py +430 -0
- proximadb-0.2.2/src/proximadb_sdk/llm/semantic_cache.py +349 -0
- proximadb-0.2.2/src/proximadb_sdk/metadata_utils.py +113 -0
- proximadb-0.2.2/src/proximadb_sdk/models.py +1651 -0
- proximadb-0.2.2/src/proximadb_sdk/models_v2.py +1902 -0
- proximadb-0.2.2/src/proximadb_sdk/multimodal_query.py +2544 -0
- proximadb-0.2.2/src/proximadb_sdk/observability.py +870 -0
- proximadb-0.2.2/src/proximadb_sdk/operation_router.py +44 -0
- proximadb-0.2.2/src/proximadb_sdk/performance/__init__.py +34 -0
- proximadb-0.2.2/src/proximadb_sdk/performance/data_models.py +271 -0
- proximadb-0.2.2/src/proximadb_sdk/proto_conversion.py +412 -0
- proximadb-0.2.2/src/proximadb_sdk/protocol_selector.py +65 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/__init__.py +40 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/_grpc_v2_codec.py +275 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/_rest_codegen.py +314 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/_rest_codegen_async.py +154 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/arrow_flight.py +940 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/connection_pools.py +612 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/grpc_async.py +357 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/grpc_sync.py +2546 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/rest_async.py +106 -0
- proximadb-0.2.2/src/proximadb_sdk/protocols/rest_sync.py +3407 -0
- proximadb-0.2.2/src/proximadb_sdk/py.typed +0 -0
- proximadb-0.2.2/src/proximadb_sdk/repository_indexer.py +755 -0
- proximadb-0.2.2/src/proximadb_sdk/repository_manager.py +1367 -0
- proximadb-0.2.2/src/proximadb_sdk/resilience.py +117 -0
- proximadb-0.2.2/src/proximadb_sdk/resource_pool.py +676 -0
- proximadb-0.2.2/src/proximadb_sdk/search_utils.py +330 -0
- proximadb-0.2.2/src/proximadb_sdk/security.py +1119 -0
- proximadb-0.2.2/src/proximadb_sdk/timeseries.py +1468 -0
- proximadb-0.2.2/src/proximadb_sdk/unified_client.py +4830 -0
- proximadb-0.2.2/src/proximadb_sdk/unified_client_async.py +773 -0
- proximadb-0.2.2/src/proximadb_sdk/unified_client_v2.py +686 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/__init__.py +1 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/collection_pb2.py +65 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/collection_pb2_grpc.py +267 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/collection_types_pb2.py +117 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/collection_types_pb2_grpc.py +28 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/document_pb2.py +128 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/document_pb2_grpc.py +485 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/entity_pb2.py +124 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/entity_pb2_grpc.py +250 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/graph_collection_pb2.py +109 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/graph_collection_pb2_grpc.py +28 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/graph_pb2.py +228 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/graph_pb2_grpc.py +1478 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/hybrid_pb2.py +67 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/hybrid_pb2_grpc.py +176 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/proximadb/v1/timeseries_pb2.py +107 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/proximadb/v1/timeseries_pb2_grpc.py +391 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/relations_pb2.py +56 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/relations_pb2_grpc.py +261 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/sql_pb2.py +35 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/sql_pb2_grpc.py +109 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/types_pb2.py +51 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/types_pb2_grpc.py +28 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/vector_pb2.py +55 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/vector_pb2_grpc.py +265 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/vector_types_pb2.py +134 -0
- proximadb-0.2.2/src/proximadb_sdk/v1/vector_types_pb2_grpc.py +28 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/__init__.py +0 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/document_pb2.py +107 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/document_pb2_grpc.py +347 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/entity_pb2.py +121 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/entity_pb2_grpc.py +262 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/fusion_pb2.py +46 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/fusion_pb2_grpc.py +115 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/graph_pb2.py +157 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/graph_pb2_grpc.py +1138 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/record_pb2.py +215 -0
- proximadb-0.2.2/src/proximadb_sdk/v2/record_pb2_grpc.py +890 -0
- proximadb-0.2.2/test-results.xml +154 -0
- proximadb-0.2.2/test_all_sdk_validation.py +261 -0
- proximadb-0.2.2/test_delete.py +29 -0
- proximadb-0.2.2/test_distance_metric.py +81 -0
- proximadb-0.2.2/test_embedded_multimodel.py +176 -0
- proximadb-0.2.2/test_final_sdk_validation.py +368 -0
- proximadb-0.2.2/test_graph_hybrid_search.py +547 -0
- proximadb-0.2.2/test_grpc_get_simple.py +91 -0
- proximadb-0.2.2/test_grpc_insert_debug.py +139 -0
- proximadb-0.2.2/test_grpc_simple.py +121 -0
- proximadb-0.2.2/test_grpc_workflow.py +95 -0
- proximadb-0.2.2/test_immediate_search.py +70 -0
- proximadb-0.2.2/test_metadata_debug.py +49 -0
- proximadb-0.2.2/test_recovery.py +79 -0
- proximadb-0.2.2/test_runner.py +238 -0
- proximadb-0.2.2/test_search_after_insert.py +50 -0
- proximadb-0.2.2/test_search_correct_format.py +63 -0
- proximadb-0.2.2/test_search_fix.py +63 -0
- proximadb-0.2.2/test_search_simple.py +68 -0
- proximadb-0.2.2/test_simple_recovery.py +84 -0
- proximadb-0.2.2/test_sql_v1.py +288 -0
- proximadb-0.2.2/test_status.py +92 -0
- proximadb-0.2.2/test_trace_issue.py +91 -0
- proximadb-0.2.2/test_v1_client.py +146 -0
- proximadb-0.2.2/test_v1_integration.py +205 -0
- proximadb-0.2.2/test_vector_insert_and_persist.py +97 -0
- proximadb-0.2.2/test_vector_persist_correct.py +131 -0
- proximadb-0.2.2/test_vector_persist_rest.py +81 -0
- proximadb-0.2.2/test_vector_persistence.py +120 -0
- proximadb-0.2.2/test_wal_verification.py +217 -0
- proximadb-0.2.2/tests/README.md +69 -0
- proximadb-0.2.2/tests/__init__.py +0 -0
- proximadb-0.2.2/tests/all_databases_benchmark.py +414 -0
- proximadb-0.2.2/tests/ann_functional_test.py +634 -0
- proximadb-0.2.2/tests/benchmark_vector_dbs.py +1218 -0
- proximadb-0.2.2/tests/bottleneck_analysis.py +221 -0
- proximadb-0.2.2/tests/chunking/__init__.py +9 -0
- proximadb-0.2.2/tests/chunking/conftest.py +112 -0
- proximadb-0.2.2/tests/chunking/loader.py +205 -0
- proximadb-0.2.2/tests/chunking/resources/bash/sample.sh +264 -0
- proximadb-0.2.2/tests/chunking/resources/c/sample.c +258 -0
- proximadb-0.2.2/tests/chunking/resources/cpp/sample.cpp +210 -0
- proximadb-0.2.2/tests/chunking/resources/csharp/Sample.cs +226 -0
- proximadb-0.2.2/tests/chunking/resources/elixir/sample.ex +269 -0
- proximadb-0.2.2/tests/chunking/resources/go/sample.go +192 -0
- proximadb-0.2.2/tests/chunking/resources/haskell/Sample.hs +216 -0
- proximadb-0.2.2/tests/chunking/resources/java/Sample.java +175 -0
- proximadb-0.2.2/tests/chunking/resources/javascript/sample.js +156 -0
- proximadb-0.2.2/tests/chunking/resources/kotlin/Sample.kt +177 -0
- proximadb-0.2.2/tests/chunking/resources/lua/sample.lua +219 -0
- proximadb-0.2.2/tests/chunking/resources/perl/sample.pl +202 -0
- proximadb-0.2.2/tests/chunking/resources/php/sample.php +232 -0
- proximadb-0.2.2/tests/chunking/resources/python/sample.py +129 -0
- proximadb-0.2.2/tests/chunking/resources/ruby/sample.rb +181 -0
- proximadb-0.2.2/tests/chunking/resources/rust/sample.rs +175 -0
- proximadb-0.2.2/tests/chunking/resources/scala/Sample.scala +197 -0
- proximadb-0.2.2/tests/chunking/resources/sql/sample.sql +289 -0
- proximadb-0.2.2/tests/chunking/resources/swift/Sample.swift +232 -0
- proximadb-0.2.2/tests/chunking/resources/typescript/sample.ts +212 -0
- proximadb-0.2.2/tests/chunking/resources/xml/sample.xml +241 -0
- proximadb-0.2.2/tests/chunking/resources/yaml/sample.yaml +265 -0
- proximadb-0.2.2/tests/chunking/test_code_chunking_strategy.py +1098 -0
- proximadb-0.2.2/tests/chunking/test_code_knowledge_builder.py +843 -0
- proximadb-0.2.2/tests/chunking/test_code_parsers.py +1197 -0
- proximadb-0.2.2/tests/chunking/test_document_parsers.py +479 -0
- proximadb-0.2.2/tests/chunking/test_document_pipeline.py +770 -0
- proximadb-0.2.2/tests/chunking/test_pipeline.py +734 -0
- proximadb-0.2.2/tests/chunking/test_repository_indexer.py +612 -0
- proximadb-0.2.2/tests/chunking/test_repository_manager.py +730 -0
- proximadb-0.2.2/tests/conftest.py +293 -0
- proximadb-0.2.2/tests/detailed_timing.py +82 -0
- proximadb-0.2.2/tests/e2e/__init__.py +0 -0
- proximadb-0.2.2/tests/e2e/conftest.py +366 -0
- proximadb-0.2.2/tests/e2e/test_e2e_vector_flow.py +364 -0
- proximadb-0.2.2/tests/e2e/test_simple_e2e.py +163 -0
- proximadb-0.2.2/tests/embedded_consolidated_benchmark.py +4463 -0
- proximadb-0.2.2/tests/embedded_graph_db_benchmark.py +930 -0
- proximadb-0.2.2/tests/embedded_vector_db_benchmark.py +655 -0
- proximadb-0.2.2/tests/embedded_victor_shape_benchmark.py +912 -0
- proximadb-0.2.2/tests/embedding_utils.py +158 -0
- proximadb-0.2.2/tests/engine_compression_benchmark.py +347 -0
- proximadb-0.2.2/tests/integration/__init__.py +0 -0
- proximadb-0.2.2/tests/integration/bert_embedding_service.py +349 -0
- proximadb-0.2.2/tests/integration/conftest.py +382 -0
- proximadb-0.2.2/tests/integration/integration_test.py +249 -0
- proximadb-0.2.2/tests/integration/test_batching_real_server.py +461 -0
- proximadb-0.2.2/tests/integration/test_benchmark.py +656 -0
- proximadb-0.2.2/tests/integration/test_chunking_embedding_benchmark.py +428 -0
- proximadb-0.2.2/tests/integration/test_chunking_embedding_integration.py +404 -0
- proximadb-0.2.2/tests/integration/test_code_indexing_integration.py +1117 -0
- proximadb-0.2.2/tests/integration/test_collection_config.py +994 -0
- proximadb-0.2.2/tests/integration/test_collection_config_all_combinations.py +501 -0
- proximadb-0.2.2/tests/integration/test_connection_pools.py +406 -0
- proximadb-0.2.2/tests/integration/test_demo_container.py +238 -0
- proximadb-0.2.2/tests/integration/test_document_v2.py +198 -0
- proximadb-0.2.2/tests/integration/test_emb_collection_lifecycle_cov.py +384 -0
- proximadb-0.2.2/tests/integration/test_emb_hybrid_search_cov.py +327 -0
- proximadb-0.2.2/tests/integration/test_emb_query_sql_cov.py +387 -0
- proximadb-0.2.2/tests/integration/test_emb_vector_cov.py +290 -0
- proximadb-0.2.2/tests/integration/test_entity_store_comprehensive.py +628 -0
- proximadb-0.2.2/tests/integration/test_entity_store_extended.py +464 -0
- proximadb-0.2.2/tests/integration/test_entity_v2.py +159 -0
- proximadb-0.2.2/tests/integration/test_fusion_v2.py +69 -0
- proximadb-0.2.2/tests/integration/test_graph_operations.py +596 -0
- proximadb-0.2.2/tests/integration/test_grpc_sync_real_server.py +380 -0
- proximadb-0.2.2/tests/integration/test_integration.py +143 -0
- proximadb-0.2.2/tests/integration/test_multilang_code_indexing.py +1519 -0
- proximadb-0.2.2/tests/integration/test_operation_router_integration.py +718 -0
- proximadb-0.2.2/tests/integration/test_quantization_e2e.py +370 -0
- proximadb-0.2.2/tests/integration/test_response_cache_integration.py +642 -0
- proximadb-0.2.2/tests/integration/test_rest_batching_integration.py +255 -0
- proximadb-0.2.2/tests/integration/test_semantic_chunking_integration.py +692 -0
- proximadb-0.2.2/tests/integration/test_simple_atomic_wal.py +172 -0
- proximadb-0.2.2/tests/integration/test_sks_graph_first_integration.py +474 -0
- proximadb-0.2.2/tests/integration/test_sks_semantic_graph_and_vector.py +174 -0
- proximadb-0.2.2/tests/integration/test_sql_integration.py +456 -0
- proximadb-0.2.2/tests/integration/test_v2_insert_search_e2e.py +176 -0
- proximadb-0.2.2/tests/integration/test_vector_operations_sdk.py +730 -0
- proximadb-0.2.2/tests/integration_sks/test_grpc_end_to_end.py +83 -0
- proximadb-0.2.2/tests/integration_sks/test_rest_end_to_end.py +59 -0
- proximadb-0.2.2/tests/integration_sks/test_rest_get_delete.py +64 -0
- proximadb-0.2.2/tests/integration_sks/test_unified_client_end_to_end.py +58 -0
- proximadb-0.2.2/tests/integrations/test_agentic_embedded.py +199 -0
- proximadb-0.2.2/tests/integrations/test_agentic_io.py +214 -0
- proximadb-0.2.2/tests/integrations/test_agentic_store.py +174 -0
- proximadb-0.2.2/tests/integrations/test_dual_use_store.py +354 -0
- proximadb-0.2.2/tests/integrations/test_graph_walk_client.py +152 -0
- proximadb-0.2.2/tests/integrations/test_mcp_tools.py +171 -0
- proximadb-0.2.2/tests/integrations/test_victor_graph.py +326 -0
- proximadb-0.2.2/tests/performance/__init__.py +0 -0
- proximadb-0.2.2/tests/performance/bert_embedding_utils.py +294 -0
- proximadb-0.2.2/tests/performance/conftest.py +346 -0
- proximadb-0.2.2/tests/pytest.ini +25 -0
- proximadb-0.2.2/tests/requirements.txt +6 -0
- proximadb-0.2.2/tests/server_lifecycle/BUG_REPORT_RECOVERY.md +149 -0
- proximadb-0.2.2/tests/server_lifecycle/DIAGNOSIS_WAL_RECOVERY.md +256 -0
- proximadb-0.2.2/tests/server_lifecycle/PRODUCTION_RECOVERY_STRATEGY.md +223 -0
- proximadb-0.2.2/tests/server_lifecycle/README.md +115 -0
- proximadb-0.2.2/tests/server_lifecycle/RECOVERY_PROGRESS.md +123 -0
- proximadb-0.2.2/tests/server_lifecycle/TESTING.md +160 -0
- proximadb-0.2.2/tests/server_lifecycle/conftest.py +37 -0
- proximadb-0.2.2/tests/server_lifecycle/test_comprehensive_recovery.py +391 -0
- proximadb-0.2.2/tests/server_lifecycle/test_fp16_grpc_lifecycle.py +124 -0
- proximadb-0.2.2/tests/server_lifecycle/test_fp16_precision_lifecycle.py +134 -0
- proximadb-0.2.2/tests/server_lifecycle/test_grpc_error_propagation_lifecycle.py +129 -0
- proximadb-0.2.2/tests/server_lifecycle/test_grpc_vector_get.py +169 -0
- proximadb-0.2.2/tests/server_lifecycle/test_wal_persistence_detailed.py +290 -0
- proximadb-0.2.2/tests/setup_graph_databases.sh +206 -0
- proximadb-0.2.2/tests/sst_nprobe_accuracy_benchmark.py +350 -0
- proximadb-0.2.2/tests/target/consolidated_benchmark_latest.md +38 -0
- proximadb-0.2.2/tests/tdd/__init__.py +143 -0
- proximadb-0.2.2/tests/test_50k_benchmark.py +372 -0
- proximadb-0.2.2/tests/test_arrow_export_sdk.py +291 -0
- proximadb-0.2.2/tests/test_arrow_interop.py +594 -0
- proximadb-0.2.2/tests/test_chunking_integration.py +1086 -0
- proximadb-0.2.2/tests/test_chunking_metadata.py +377 -0
- proximadb-0.2.2/tests/test_chunking_strategies.py +298 -0
- proximadb-0.2.2/tests/test_client_sdk.py +435 -0
- proximadb-0.2.2/tests/test_codegraph_delegation.py +61 -0
- proximadb-0.2.2/tests/test_collection_operations.py +373 -0
- proximadb-0.2.2/tests/test_compression_integration.py +407 -0
- proximadb-0.2.2/tests/test_document_api.py +376 -0
- proximadb-0.2.2/tests/test_embedded_multi_model.py +614 -0
- proximadb-0.2.2/tests/test_engine_index_matrix.py +501 -0
- proximadb-0.2.2/tests/test_engine_search.py +426 -0
- proximadb-0.2.2/tests/test_filter_api.py +233 -0
- proximadb-0.2.2/tests/test_grpc_api_completeness.py +565 -0
- proximadb-0.2.2/tests/test_grpc_basic.py +126 -0
- proximadb-0.2.2/tests/test_helpers.py +129 -0
- proximadb-0.2.2/tests/test_hybrid_api.py +498 -0
- proximadb-0.2.2/tests/test_models_and_utils.py +45 -0
- proximadb-0.2.2/tests/test_parquet_interop.py +1077 -0
- proximadb-0.2.2/tests/test_rest_api_completeness.py +433 -0
- proximadb-0.2.2/tests/test_rl_planner_embedded.py +341 -0
- proximadb-0.2.2/tests/test_sdk_stable_oid.py +76 -0
- proximadb-0.2.2/tests/test_sdk_upsert_operations.py +469 -0
- proximadb-0.2.2/tests/test_search_operations.py +698 -0
- proximadb-0.2.2/tests/test_sql_api.py +228 -0
- proximadb-0.2.2/tests/test_temp_edges.py +58 -0
- proximadb-0.2.2/tests/test_timeseries_api.py +535 -0
- proximadb-0.2.2/tests/test_unified_client.py +264 -0
- proximadb-0.2.2/tests/test_validation_vs_persistence.py +148 -0
- proximadb-0.2.2/tests/test_vector_operations.py +569 -0
- proximadb-0.2.2/tests/trace_bottleneck.py +66 -0
- proximadb-0.2.2/tests/trace_edge_bottleneck.py +108 -0
- proximadb-0.2.2/tests/unit/README_EMBEDDING_TESTS.md +271 -0
- proximadb-0.2.2/tests/unit/__init__.py +0 -0
- proximadb-0.2.2/tests/unit/conftest.py +803 -0
- proximadb-0.2.2/tests/unit/grpc_drift_baseline.json +20 -0
- proximadb-0.2.2/tests/unit/test_adapter_record_methods.py +527 -0
- proximadb-0.2.2/tests/unit/test_agentic_ddl.py +70 -0
- proximadb-0.2.2/tests/unit/test_arrow_export_cov.py +548 -0
- proximadb-0.2.2/tests/unit/test_arrow_flight_cov.py +686 -0
- proximadb-0.2.2/tests/unit/test_arrow_flight_protocol.py +377 -0
- proximadb-0.2.2/tests/unit/test_atomic_wal.py +223 -0
- proximadb-0.2.2/tests/unit/test_auth_cov.py +784 -0
- proximadb-0.2.2/tests/unit/test_autogen_integration.py +197 -0
- proximadb-0.2.2/tests/unit/test_automl_cov.py +605 -0
- proximadb-0.2.2/tests/unit/test_batching.py +335 -0
- proximadb-0.2.2/tests/unit/test_batching_records.py +41 -0
- proximadb-0.2.2/tests/unit/test_batching_unified_cov.py +604 -0
- proximadb-0.2.2/tests/unit/test_builder_search_utils_core.py +284 -0
- proximadb-0.2.2/tests/unit/test_cache_cov.py +587 -0
- proximadb-0.2.2/tests/unit/test_chunker_pooling.py +488 -0
- proximadb-0.2.2/tests/unit/test_chunking.py +499 -0
- proximadb-0.2.2/tests/unit/test_chunking_code_cov.py +1040 -0
- proximadb-0.2.2/tests/unit/test_chunking_doc_parsers_cov.py +823 -0
- proximadb-0.2.2/tests/unit/test_chunking_parser_utils_cov.py +363 -0
- proximadb-0.2.2/tests/unit/test_chunking_pipeline_cov.py +1016 -0
- proximadb-0.2.2/tests/unit/test_chunking_records.py +84 -0
- proximadb-0.2.2/tests/unit/test_chunking_refactored.py +533 -0
- proximadb-0.2.2/tests/unit/test_chunking_strategies_rest_cov.py +589 -0
- proximadb-0.2.2/tests/unit/test_chunking_strategy_core_coverage.py +285 -0
- proximadb-0.2.2/tests/unit/test_chunking_top_cov.py +690 -0
- proximadb-0.2.2/tests/unit/test_chunking_true_streaming.py +369 -0
- proximadb-0.2.2/tests/unit/test_cli_cov.py +653 -0
- proximadb-0.2.2/tests/unit/test_client_v1_cov.py +959 -0
- proximadb-0.2.2/tests/unit/test_client_v1_record_writes.py +59 -0
- proximadb-0.2.2/tests/unit/test_code_knowledge_cov.py +909 -0
- proximadb-0.2.2/tests/unit/test_collection_operations.py +363 -0
- proximadb-0.2.2/tests/unit/test_config.py +374 -0
- proximadb-0.2.2/tests/unit/test_config_cov.py +488 -0
- proximadb-0.2.2/tests/unit/test_core_low_coverage_helpers.py +459 -0
- proximadb-0.2.2/tests/unit/test_core_utils_cov.py +1300 -0
- proximadb-0.2.2/tests/unit/test_crewai_integration.py +131 -0
- proximadb-0.2.2/tests/unit/test_document_cov.py +824 -0
- proximadb-0.2.2/tests/unit/test_document_pipeline_cov.py +612 -0
- proximadb-0.2.2/tests/unit/test_document_processing_pipeline_core.py +447 -0
- proximadb-0.2.2/tests/unit/test_document_processor_cov.py +784 -0
- proximadb-0.2.2/tests/unit/test_dspy_integration.py +102 -0
- proximadb-0.2.2/tests/unit/test_emb_core_mixins_cov.py +985 -0
- proximadb-0.2.2/tests/unit/test_emb_providers_cloud_cov.py +447 -0
- proximadb-0.2.2/tests/unit/test_emb_providers_finbert_cov.py +236 -0
- proximadb-0.2.2/tests/unit/test_emb_providers_instructor_cov.py +111 -0
- proximadb-0.2.2/tests/unit/test_emb_providers_local_cov.py +372 -0
- proximadb-0.2.2/tests/unit/test_embedded_adapter_cov.py +1706 -0
- proximadb-0.2.2/tests/unit/test_embedded_cov.py +1364 -0
- proximadb-0.2.2/tests/unit/test_embedded_multi_cov.py +722 -0
- proximadb-0.2.2/tests/unit/test_embedded_record_http.py +75 -0
- proximadb-0.2.2/tests/unit/test_embedding_precision.py +158 -0
- proximadb-0.2.2/tests/unit/test_embedding_providers.py +420 -0
- proximadb-0.2.2/tests/unit/test_embedding_providers_v2.py +450 -0
- proximadb-0.2.2/tests/unit/test_enum_packing_cov.py +247 -0
- proximadb-0.2.2/tests/unit/test_exceptions.py +524 -0
- proximadb-0.2.2/tests/unit/test_exceptions_cov.py +537 -0
- proximadb-0.2.2/tests/unit/test_fallback_warnings.py +234 -0
- proximadb-0.2.2/tests/unit/test_filters_cov.py +489 -0
- proximadb-0.2.2/tests/unit/test_filters_simple.py +198 -0
- proximadb-0.2.2/tests/unit/test_graph_analytics_cov.py +694 -0
- proximadb-0.2.2/tests/unit/test_graph_client_unit.py +352 -0
- proximadb-0.2.2/tests/unit/test_graph_cov.py +742 -0
- proximadb-0.2.2/tests/unit/test_graph_grpc_overrides.py +224 -0
- proximadb-0.2.2/tests/unit/test_graph_rest_async_overrides.py +82 -0
- proximadb-0.2.2/tests/unit/test_graph_rest_overrides.py +52 -0
- proximadb-0.2.2/tests/unit/test_graph_rest_sync_overrides.py +63 -0
- proximadb-0.2.2/tests/unit/test_grpc_adapter_cov.py +664 -0
- proximadb-0.2.2/tests/unit/test_grpc_async_native.py +252 -0
- proximadb-0.2.2/tests/unit/test_grpc_proto_drift.py +213 -0
- proximadb-0.2.2/tests/unit/test_grpc_sync_basic.py +152 -0
- proximadb-0.2.2/tests/unit/test_grpc_sync_collections.py +150 -0
- proximadb-0.2.2/tests/unit/test_grpc_sync_cov.py +1102 -0
- proximadb-0.2.2/tests/unit/test_grpc_sync_integration.py +274 -0
- proximadb-0.2.2/tests/unit/test_haystack_integration.py +279 -0
- proximadb-0.2.2/tests/unit/test_hybrid_cov.py +565 -0
- proximadb-0.2.2/tests/unit/test_insert_builder_records.py +61 -0
- proximadb-0.2.2/tests/unit/test_integration_record_helpers.py +67 -0
- proximadb-0.2.2/tests/unit/test_integrations_frameworks_cov.py +732 -0
- proximadb-0.2.2/tests/unit/test_integrations_victor_cov.py +206 -0
- proximadb-0.2.2/tests/unit/test_langchain_integration.py +207 -0
- proximadb-0.2.2/tests/unit/test_langgraph_integration.py +81 -0
- proximadb-0.2.2/tests/unit/test_llm_cov.py +785 -0
- proximadb-0.2.2/tests/unit/test_misc_core_cov.py +385 -0
- proximadb-0.2.2/tests/unit/test_mlops_contracts.py +76 -0
- proximadb-0.2.2/tests/unit/test_models_builders_cov.py +1048 -0
- proximadb-0.2.2/tests/unit/test_models_coverage.py +60 -0
- proximadb-0.2.2/tests/unit/test_multi_bert_provider_cov.py +534 -0
- proximadb-0.2.2/tests/unit/test_multimodal_query_cov.py +805 -0
- proximadb-0.2.2/tests/unit/test_observability_cov.py +491 -0
- proximadb-0.2.2/tests/unit/test_openapi_contract.py +351 -0
- proximadb-0.2.2/tests/unit/test_operation_router.py +386 -0
- proximadb-0.2.2/tests/unit/test_proto_conversion_cov.py +304 -0
- proximadb-0.2.2/tests/unit/test_proto_conversions.py +380 -0
- proximadb-0.2.2/tests/unit/test_protocol_selector.py +598 -0
- proximadb-0.2.2/tests/unit/test_protocols_async_pools_cov.py +683 -0
- proximadb-0.2.2/tests/unit/test_quantization_features.py +411 -0
- proximadb-0.2.2/tests/unit/test_real_embedding_providers.py +543 -0
- proximadb-0.2.2/tests/unit/test_relaxed_validation.py +182 -0
- proximadb-0.2.2/tests/unit/test_repository_indexer_core.py +375 -0
- proximadb-0.2.2/tests/unit/test_repository_indexer_cov.py +715 -0
- proximadb-0.2.2/tests/unit/test_repository_manager_core.py +447 -0
- proximadb-0.2.2/tests/unit/test_repository_manager_cov.py +1093 -0
- proximadb-0.2.2/tests/unit/test_response_cache.py +728 -0
- proximadb-0.2.2/tests/unit/test_rest_adapter_cov.py +926 -0
- proximadb-0.2.2/tests/unit/test_rest_batching.py +196 -0
- proximadb-0.2.2/tests/unit/test_rest_record_ingest.py +220 -0
- proximadb-0.2.2/tests/unit/test_rest_sync_collections.py +116 -0
- proximadb-0.2.2/tests/unit/test_rest_sync_extend_cov.py +1126 -0
- proximadb-0.2.2/tests/unit/test_rest_sync_methods_coverage.py +234 -0
- proximadb-0.2.2/tests/unit/test_rest_sync_more_cov.py +957 -0
- proximadb-0.2.2/tests/unit/test_scan_records.py +201 -0
- proximadb-0.2.2/tests/unit/test_sdk_imports.py +172 -0
- proximadb-0.2.2/tests/unit/test_sdk_imports_moved.py +163 -0
- proximadb-0.2.2/tests/unit/test_search_operations.py +531 -0
- proximadb-0.2.2/tests/unit/test_search_utils_cov.py +369 -0
- proximadb-0.2.2/tests/unit/test_security_cov.py +844 -0
- proximadb-0.2.2/tests/unit/test_semantic_chunking.py +452 -0
- proximadb-0.2.2/tests/unit/test_semantic_embedding_chunking.py +218 -0
- proximadb-0.2.2/tests/unit/test_timeseries_cov.py +715 -0
- proximadb-0.2.2/tests/unit/test_unified_client_async.py +124 -0
- proximadb-0.2.2/tests/unit/test_unified_client_async_core_ops.py +332 -0
- proximadb-0.2.2/tests/unit/test_unified_client_async_grpc_routing.py +152 -0
- proximadb-0.2.2/tests/unit/test_unified_client_cov.py +3163 -0
- proximadb-0.2.2/tests/unit/test_unified_client_ingest_documents.py +242 -0
- proximadb-0.2.2/tests/unit/test_unified_client_intelligent_selection.py +538 -0
- proximadb-0.2.2/tests/unit/test_unified_client_v2_cov.py +637 -0
- proximadb-0.2.2/tests/unit/test_vector_operations.py +640 -0
- proximadb-0.2.2/tests/unit/test_victor_integration.py +217 -0
- proximadb-0.2.2/tests/unit/test_victor_integrations_cov.py +1283 -0
- proximadb-0.2.2/tests/update_tests_real_server.py +312 -0
- proximadb-0.2.2/tests/utils/__init__.py +24 -0
- proximadb-0.2.2/tests/utils/base_test.py +245 -0
- proximadb-0.2.2/tests/utils/bert_embedding_service.py +352 -0
- proximadb-0.2.2/tests/utils/bert_embedding_utils.py +294 -0
- proximadb-0.2.2/tests/utils/embedded_base_test.py +270 -0
- proximadb-0.2.2/tests/utils/embedded_client_adapter.py +280 -0
- proximadb-0.2.2/tests/utils/server_utils.py +151 -0
- proximadb-0.2.2/tests/utils/test_helpers.py +91 -0
- proximadb-0.2.2/tests/validate_sst_recall.py +231 -0
- proximadb-0.2.2/tests/working_graph_benchmark.py +551 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
build/
|
|
8
|
+
develop-eggs/
|
|
9
|
+
dist/
|
|
10
|
+
downloads/
|
|
11
|
+
eggs/
|
|
12
|
+
.eggs/
|
|
13
|
+
lib/
|
|
14
|
+
lib64/
|
|
15
|
+
parts/
|
|
16
|
+
sdist/
|
|
17
|
+
var/
|
|
18
|
+
wheels/
|
|
19
|
+
*.egg-info/
|
|
20
|
+
.installed.cfg
|
|
21
|
+
*.egg
|
|
22
|
+
MANIFEST
|
|
23
|
+
|
|
24
|
+
# Virtual environments
|
|
25
|
+
venv/
|
|
26
|
+
ENV/
|
|
27
|
+
env/
|
|
28
|
+
.venv
|
|
29
|
+
|
|
30
|
+
# IDEs
|
|
31
|
+
.vscode/
|
|
32
|
+
.idea/
|
|
33
|
+
*.swp
|
|
34
|
+
*.swo
|
|
35
|
+
*~
|
|
36
|
+
|
|
37
|
+
# Testing
|
|
38
|
+
.pytest_cache/
|
|
39
|
+
.coverage
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
|
|
43
|
+
# ProximaDB test data directories
|
|
44
|
+
data/
|
|
45
|
+
metadata/
|
|
46
|
+
manifest/
|
|
47
|
+
|
|
48
|
+
# Temporary files
|
|
49
|
+
*.log
|
|
50
|
+
=1.75.1
|
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
# Embedding Providers Architecture Redesign
|
|
2
|
+
|
|
3
|
+
## Current Issues
|
|
4
|
+
|
|
5
|
+
### 1. **Code Duplication**
|
|
6
|
+
- Each provider (BGE, E5, SFR, gte-Qwen) repeats similar initialization logic
|
|
7
|
+
- Model loading code is duplicated across providers
|
|
8
|
+
- Normalization, batching, and dimension detection repeated everywhere
|
|
9
|
+
|
|
10
|
+
### 2. **Clunky Factory Pattern**
|
|
11
|
+
- Factory has hardcoded default models and dimensions
|
|
12
|
+
- Adding new providers requires modifying factory code
|
|
13
|
+
- No clean separation between provider metadata and implementation
|
|
14
|
+
|
|
15
|
+
### 3. **Poor Extensibility**
|
|
16
|
+
- No plugin system for third-party providers
|
|
17
|
+
- Hardcoded provider registry in factory.py
|
|
18
|
+
- Difficult to add new model variants without code changes
|
|
19
|
+
|
|
20
|
+
### 4. **Missing Features**
|
|
21
|
+
- No provider lifecycle management (init, warmup, cleanup)
|
|
22
|
+
- No model caching/pooling across provider instances
|
|
23
|
+
- No automatic model discovery from HuggingFace
|
|
24
|
+
- No provider-level configuration inheritance
|
|
25
|
+
|
|
26
|
+
### 5. **Performance Issues**
|
|
27
|
+
- Models loaded on every provider instantiation
|
|
28
|
+
- No shared model instances across requests
|
|
29
|
+
- No async/concurrent embedding support
|
|
30
|
+
- No batch optimization strategies
|
|
31
|
+
|
|
32
|
+
### 6. **Testing Challenges**
|
|
33
|
+
- Hard to mock providers for testing
|
|
34
|
+
- No clear provider interface contract
|
|
35
|
+
- Integration tests require real model downloads
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Optimized Architecture
|
|
40
|
+
|
|
41
|
+
### Design Principles
|
|
42
|
+
|
|
43
|
+
1. **Composition over Inheritance** - Use mixins for shared functionality
|
|
44
|
+
2. **Plugin-Based** - Dynamic provider registration via decorators
|
|
45
|
+
3. **Lazy Loading** - Load models only when first used
|
|
46
|
+
4. **Singleton Models** - Share model instances across provider instances
|
|
47
|
+
5. **Type Safety** - Full type hints and runtime validation
|
|
48
|
+
6. **Async-First** - Support both sync and async APIs
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### New Architecture Components
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
embedding_providers/
|
|
56
|
+
├── __init__.py # Public API exports
|
|
57
|
+
├── core/
|
|
58
|
+
│ ├── __init__.py
|
|
59
|
+
│ ├── base.py # Abstract base classes
|
|
60
|
+
│ ├── config.py # Configuration classes
|
|
61
|
+
│ ├── registry.py # Provider registry system
|
|
62
|
+
│ ├── lifecycle.py # Provider lifecycle management
|
|
63
|
+
│ └── cache.py # Model caching and pooling
|
|
64
|
+
├── mixins/
|
|
65
|
+
│ ├── __init__.py
|
|
66
|
+
│ ├── sentence_transformer.py # SentenceTransformer mixin
|
|
67
|
+
│ ├── normalization.py # Embedding normalization mixin
|
|
68
|
+
│ ├── batching.py # Batch processing mixin
|
|
69
|
+
│ └── instruction.py # Query instruction mixin
|
|
70
|
+
├── providers/
|
|
71
|
+
│ ├── __init__.py
|
|
72
|
+
│ ├── local/ # Local model providers
|
|
73
|
+
│ │ ├── __init__.py
|
|
74
|
+
│ │ ├── gte_qwen.py
|
|
75
|
+
│ │ ├── sfr.py
|
|
76
|
+
│ │ ├── bge.py
|
|
77
|
+
│ │ ├── e5.py
|
|
78
|
+
│ │ └── sentence_transformer.py
|
|
79
|
+
│ ├── api/ # API-based providers
|
|
80
|
+
│ │ ├── __init__.py
|
|
81
|
+
│ │ ├── openai.py
|
|
82
|
+
│ │ └── cohere.py
|
|
83
|
+
│ └── testing/
|
|
84
|
+
│ ├── __init__.py
|
|
85
|
+
│ └── simulated.py
|
|
86
|
+
├── factory.py # Smart factory with auto-discovery
|
|
87
|
+
└── utils/
|
|
88
|
+
├── __init__.py
|
|
89
|
+
├── model_info.py # HuggingFace model metadata
|
|
90
|
+
└── validators.py # Input validation utilities
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Implementation Plan
|
|
96
|
+
|
|
97
|
+
### Phase 1: Core Infrastructure (This Session)
|
|
98
|
+
|
|
99
|
+
#### 1.1 New Base Classes (`core/base.py`)
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
from abc import ABC, abstractmethod
|
|
103
|
+
from typing import Optional, List, Dict, Any
|
|
104
|
+
import numpy as np
|
|
105
|
+
|
|
106
|
+
class EmbeddingProviderProtocol(Protocol):
|
|
107
|
+
"""Type protocol for embedding providers"""
|
|
108
|
+
def embed(self, texts: List[str]) -> np.ndarray: ...
|
|
109
|
+
def get_dimension(self) -> int: ...
|
|
110
|
+
|
|
111
|
+
class BaseEmbeddingProvider(ABC):
|
|
112
|
+
"""Enhanced base class with lifecycle support"""
|
|
113
|
+
|
|
114
|
+
def __init__(self, config: Optional['ProviderConfig'] = None):
|
|
115
|
+
self.config = config or self.default_config()
|
|
116
|
+
self._initialized = False
|
|
117
|
+
self._model = None
|
|
118
|
+
|
|
119
|
+
@abstractmethod
|
|
120
|
+
def default_config(self) -> 'ProviderConfig':
|
|
121
|
+
"""Return default configuration"""
|
|
122
|
+
pass
|
|
123
|
+
|
|
124
|
+
@abstractmethod
|
|
125
|
+
def _load_model(self):
|
|
126
|
+
"""Load the embedding model"""
|
|
127
|
+
pass
|
|
128
|
+
|
|
129
|
+
def ensure_initialized(self):
|
|
130
|
+
"""Lazy initialization"""
|
|
131
|
+
if not self._initialized:
|
|
132
|
+
self._model = self._load_model()
|
|
133
|
+
self._initialized = True
|
|
134
|
+
|
|
135
|
+
@abstractmethod
|
|
136
|
+
def embed(self, texts: List[str]) -> np.ndarray:
|
|
137
|
+
"""Generate embeddings (concrete implementation)"""
|
|
138
|
+
pass
|
|
139
|
+
|
|
140
|
+
def cleanup(self):
|
|
141
|
+
"""Cleanup resources"""
|
|
142
|
+
if self._model is not None:
|
|
143
|
+
del self._model
|
|
144
|
+
self._model = None
|
|
145
|
+
self._initialized = False
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### 1.2 Provider Configuration (`core/config.py`)
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
from dataclasses import dataclass, field
|
|
152
|
+
from typing import Optional, Dict, Any
|
|
153
|
+
|
|
154
|
+
@dataclass(frozen=True)
|
|
155
|
+
class ModelMetadata:
|
|
156
|
+
"""Immutable model metadata"""
|
|
157
|
+
name: str
|
|
158
|
+
dimension: int
|
|
159
|
+
max_length: int = 512
|
|
160
|
+
provider_type: str = "sentence-transformer"
|
|
161
|
+
requires_instruction: bool = False
|
|
162
|
+
instruction_template: Optional[str] = None
|
|
163
|
+
mteb_score: Optional[float] = None
|
|
164
|
+
languages: str = "en"
|
|
165
|
+
|
|
166
|
+
@dataclass
|
|
167
|
+
class ProviderConfig:
|
|
168
|
+
"""Unified provider configuration"""
|
|
169
|
+
model: ModelMetadata
|
|
170
|
+
batch_size: int = 32
|
|
171
|
+
normalize: bool = True
|
|
172
|
+
device: Optional[str] = None
|
|
173
|
+
cache_dir: Optional[str] = None
|
|
174
|
+
trust_remote_code: bool = False
|
|
175
|
+
extra: Dict[str, Any] = field(default_factory=dict)
|
|
176
|
+
|
|
177
|
+
def merge(self, **kwargs) -> 'ProviderConfig':
|
|
178
|
+
"""Return new config with updated values"""
|
|
179
|
+
data = asdict(self)
|
|
180
|
+
data['extra'].update(kwargs.pop('extra', {}))
|
|
181
|
+
data.update(kwargs)
|
|
182
|
+
return ProviderConfig(**data)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
#### 1.3 Provider Registry (`core/registry.py`)
|
|
186
|
+
|
|
187
|
+
```python
|
|
188
|
+
from typing import Dict, Type, Optional, Callable
|
|
189
|
+
from functools import wraps
|
|
190
|
+
|
|
191
|
+
class ProviderRegistry:
|
|
192
|
+
"""Global provider registry with auto-discovery"""
|
|
193
|
+
|
|
194
|
+
_providers: Dict[str, Type[BaseEmbeddingProvider]] = {}
|
|
195
|
+
_metadata: Dict[str, Dict[str, ModelMetadata]] = {}
|
|
196
|
+
_aliases: Dict[str, str] = {}
|
|
197
|
+
|
|
198
|
+
@classmethod
|
|
199
|
+
def register(
|
|
200
|
+
cls,
|
|
201
|
+
name: str,
|
|
202
|
+
models: Dict[str, ModelMetadata],
|
|
203
|
+
aliases: Optional[List[str]] = None
|
|
204
|
+
):
|
|
205
|
+
"""Decorator for provider registration"""
|
|
206
|
+
def decorator(provider_class: Type[BaseEmbeddingProvider]):
|
|
207
|
+
cls._providers[name] = provider_class
|
|
208
|
+
cls._metadata[name] = models
|
|
209
|
+
|
|
210
|
+
# Register aliases
|
|
211
|
+
for alias in (aliases or []):
|
|
212
|
+
cls._aliases[alias] = name
|
|
213
|
+
|
|
214
|
+
return provider_class
|
|
215
|
+
return decorator
|
|
216
|
+
|
|
217
|
+
@classmethod
|
|
218
|
+
def get_provider(cls, name: str) -> Type[BaseEmbeddingProvider]:
|
|
219
|
+
"""Get provider class by name"""
|
|
220
|
+
name = cls._aliases.get(name, name)
|
|
221
|
+
if name not in cls._providers:
|
|
222
|
+
raise ValueError(f"Unknown provider: {name}")
|
|
223
|
+
return cls._providers[name]
|
|
224
|
+
|
|
225
|
+
@classmethod
|
|
226
|
+
def get_models(cls, provider_name: str) -> Dict[str, ModelMetadata]:
|
|
227
|
+
"""Get available models for provider"""
|
|
228
|
+
provider_name = cls._aliases.get(provider_name, provider_name)
|
|
229
|
+
return cls._metadata.get(provider_name, {})
|
|
230
|
+
|
|
231
|
+
@classmethod
|
|
232
|
+
def list_providers(cls) -> List[str]:
|
|
233
|
+
"""List all registered providers"""
|
|
234
|
+
return sorted(cls._providers.keys())
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
#### 1.4 Model Cache (`core/cache.py`)
|
|
238
|
+
|
|
239
|
+
```python
|
|
240
|
+
from typing import Optional, Any
|
|
241
|
+
import threading
|
|
242
|
+
|
|
243
|
+
class ModelCache:
|
|
244
|
+
"""Thread-safe singleton model cache"""
|
|
245
|
+
|
|
246
|
+
_instance = None
|
|
247
|
+
_lock = threading.Lock()
|
|
248
|
+
_models: Dict[str, Any] = {}
|
|
249
|
+
|
|
250
|
+
def __new__(cls):
|
|
251
|
+
if cls._instance is None:
|
|
252
|
+
with cls._lock:
|
|
253
|
+
if cls._instance is None:
|
|
254
|
+
cls._instance = super().__new__(cls)
|
|
255
|
+
return cls._instance
|
|
256
|
+
|
|
257
|
+
def get_or_load(
|
|
258
|
+
self,
|
|
259
|
+
key: str,
|
|
260
|
+
loader: Callable[[], Any]
|
|
261
|
+
) -> Any:
|
|
262
|
+
"""Get cached model or load it"""
|
|
263
|
+
if key not in self._models:
|
|
264
|
+
with self._lock:
|
|
265
|
+
if key not in self._models:
|
|
266
|
+
self._models[key] = loader()
|
|
267
|
+
return self._models[key]
|
|
268
|
+
|
|
269
|
+
def clear(self, key: Optional[str] = None):
|
|
270
|
+
"""Clear cache entry or entire cache"""
|
|
271
|
+
with self._lock:
|
|
272
|
+
if key:
|
|
273
|
+
self._models.pop(key, None)
|
|
274
|
+
else:
|
|
275
|
+
self._models.clear()
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
### Phase 2: Mixins for Shared Functionality
|
|
281
|
+
|
|
282
|
+
#### 2.1 SentenceTransformer Mixin (`mixins/sentence_transformer.py`)
|
|
283
|
+
|
|
284
|
+
```python
|
|
285
|
+
class SentenceTransformerMixin:
|
|
286
|
+
"""Mixin for sentence-transformers based providers"""
|
|
287
|
+
|
|
288
|
+
def _load_model(self):
|
|
289
|
+
"""Load sentence-transformer model with caching"""
|
|
290
|
+
from sentence_transformers import SentenceTransformer
|
|
291
|
+
|
|
292
|
+
cache = ModelCache()
|
|
293
|
+
cache_key = f"st_{self.config.model.name}"
|
|
294
|
+
|
|
295
|
+
return cache.get_or_load(
|
|
296
|
+
cache_key,
|
|
297
|
+
lambda: SentenceTransformer(
|
|
298
|
+
self.config.model.name,
|
|
299
|
+
device=self.config.device,
|
|
300
|
+
trust_remote_code=self.config.trust_remote_code,
|
|
301
|
+
cache_folder=self.config.cache_dir
|
|
302
|
+
)
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
def embed(self, texts: List[str]) -> np.ndarray:
|
|
306
|
+
"""Generate embeddings using sentence-transformers"""
|
|
307
|
+
self.ensure_initialized()
|
|
308
|
+
|
|
309
|
+
embeddings = self._model.encode(
|
|
310
|
+
texts,
|
|
311
|
+
batch_size=self.config.batch_size,
|
|
312
|
+
normalize_embeddings=self.config.normalize,
|
|
313
|
+
show_progress_bar=False
|
|
314
|
+
)
|
|
315
|
+
return embeddings
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
#### 2.2 Instruction Mixin (`mixins/instruction.py`)
|
|
319
|
+
|
|
320
|
+
```python
|
|
321
|
+
class InstructionMixin:
|
|
322
|
+
"""Mixin for providers with query instructions"""
|
|
323
|
+
|
|
324
|
+
def apply_instruction(self, text: str, is_query: bool = True) -> str:
|
|
325
|
+
"""Apply instruction template to text"""
|
|
326
|
+
if not is_query or not self.config.model.requires_instruction:
|
|
327
|
+
return text
|
|
328
|
+
|
|
329
|
+
template = self.config.model.instruction_template
|
|
330
|
+
if not template:
|
|
331
|
+
return text
|
|
332
|
+
|
|
333
|
+
return template.format(query=text)
|
|
334
|
+
|
|
335
|
+
def embed_query(self, query: str) -> np.ndarray:
|
|
336
|
+
"""Embed query with instruction"""
|
|
337
|
+
instructed = self.apply_instruction(query, is_query=True)
|
|
338
|
+
return self.embed([instructed])[0]
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
### Phase 3: Refactored Providers
|
|
344
|
+
|
|
345
|
+
#### 3.1 Example: gte-Qwen Provider
|
|
346
|
+
|
|
347
|
+
```python
|
|
348
|
+
from ..core.base import BaseEmbeddingProvider
|
|
349
|
+
from ..core.config import ProviderConfig, ModelMetadata
|
|
350
|
+
from ..core.registry import ProviderRegistry
|
|
351
|
+
from ..mixins.sentence_transformer import SentenceTransformerMixin
|
|
352
|
+
from ..mixins.instruction import InstructionMixin
|
|
353
|
+
|
|
354
|
+
# Model metadata
|
|
355
|
+
GTE_QWEN_MODELS = {
|
|
356
|
+
"Alibaba-NLP/gte-Qwen2-7B-instruct": ModelMetadata(
|
|
357
|
+
name="Alibaba-NLP/gte-Qwen2-7B-instruct",
|
|
358
|
+
dimension=3584,
|
|
359
|
+
max_length=32768,
|
|
360
|
+
requires_instruction=True,
|
|
361
|
+
instruction_template="Instruct: Given a query, retrieve relevant passages\\nQuery: {query}",
|
|
362
|
+
mteb_score=71.0,
|
|
363
|
+
languages="100+"
|
|
364
|
+
),
|
|
365
|
+
"Alibaba-NLP/gte-Qwen2-1.5B-instruct": ModelMetadata(
|
|
366
|
+
name="Alibaba-NLP/gte-Qwen2-1.5B-instruct",
|
|
367
|
+
dimension=1536,
|
|
368
|
+
max_length=32768,
|
|
369
|
+
requires_instruction=True,
|
|
370
|
+
instruction_template="Instruct: Given a query, retrieve relevant passages\\nQuery: {query}",
|
|
371
|
+
mteb_score=68.0,
|
|
372
|
+
languages="100+"
|
|
373
|
+
)
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
@ProviderRegistry.register(
|
|
377
|
+
name="gte-qwen",
|
|
378
|
+
models=GTE_QWEN_MODELS,
|
|
379
|
+
aliases=["alibaba", "qwen", "gte"]
|
|
380
|
+
)
|
|
381
|
+
class GTEQwenProvider(
|
|
382
|
+
InstructionMixin,
|
|
383
|
+
SentenceTransformerMixin,
|
|
384
|
+
BaseEmbeddingProvider
|
|
385
|
+
):
|
|
386
|
+
"""Optimized gte-Qwen provider"""
|
|
387
|
+
|
|
388
|
+
def default_config(self) -> ProviderConfig:
|
|
389
|
+
"""Default configuration"""
|
|
390
|
+
return ProviderConfig(
|
|
391
|
+
model=GTE_QWEN_MODELS["Alibaba-NLP/gte-Qwen2-1.5B-instruct"],
|
|
392
|
+
batch_size=16,
|
|
393
|
+
normalize=True,
|
|
394
|
+
trust_remote_code=False # Use standard implementation
|
|
395
|
+
)
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
**Lines of code: ~30 (vs 336 in current implementation)**
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
### Phase 4: Smart Factory
|
|
403
|
+
|
|
404
|
+
```python
|
|
405
|
+
class EmbeddingProviderFactory:
|
|
406
|
+
"""Smart factory with auto-discovery"""
|
|
407
|
+
|
|
408
|
+
@staticmethod
|
|
409
|
+
def create(
|
|
410
|
+
provider_name: str,
|
|
411
|
+
model_name: Optional[str] = None,
|
|
412
|
+
**kwargs
|
|
413
|
+
) -> BaseEmbeddingProvider:
|
|
414
|
+
"""
|
|
415
|
+
Create provider with intelligent defaults
|
|
416
|
+
|
|
417
|
+
Examples:
|
|
418
|
+
# Use default model
|
|
419
|
+
provider = EmbeddingProviderFactory.create("gte-qwen")
|
|
420
|
+
|
|
421
|
+
# Specify model
|
|
422
|
+
provider = EmbeddingProviderFactory.create(
|
|
423
|
+
"gte-qwen",
|
|
424
|
+
model_name="Alibaba-NLP/gte-Qwen2-7B-instruct"
|
|
425
|
+
)
|
|
426
|
+
|
|
427
|
+
# Custom config
|
|
428
|
+
provider = EmbeddingProviderFactory.create(
|
|
429
|
+
"bge",
|
|
430
|
+
batch_size=64,
|
|
431
|
+
device="cuda"
|
|
432
|
+
)
|
|
433
|
+
"""
|
|
434
|
+
# Get provider class
|
|
435
|
+
provider_class = ProviderRegistry.get_provider(provider_name)
|
|
436
|
+
|
|
437
|
+
# Get default config
|
|
438
|
+
config = provider_class().default_config()
|
|
439
|
+
|
|
440
|
+
# Override model if specified
|
|
441
|
+
if model_name:
|
|
442
|
+
models = ProviderRegistry.get_models(provider_name)
|
|
443
|
+
if model_name not in models:
|
|
444
|
+
raise ValueError(f"Unknown model: {model_name}")
|
|
445
|
+
config = config.merge(model=models[model_name])
|
|
446
|
+
|
|
447
|
+
# Merge kwargs
|
|
448
|
+
if kwargs:
|
|
449
|
+
config = config.merge(**kwargs)
|
|
450
|
+
|
|
451
|
+
return provider_class(config)
|
|
452
|
+
|
|
453
|
+
@staticmethod
|
|
454
|
+
def list_providers() -> Dict[str, List[str]]:
|
|
455
|
+
"""List all providers with their models"""
|
|
456
|
+
result = {}
|
|
457
|
+
for provider_name in ProviderRegistry.list_providers():
|
|
458
|
+
models = ProviderRegistry.get_models(provider_name)
|
|
459
|
+
result[provider_name] = list(models.keys())
|
|
460
|
+
return result
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
---
|
|
464
|
+
|
|
465
|
+
## Benefits
|
|
466
|
+
|
|
467
|
+
### 1. **Extensibility**
|
|
468
|
+
- Add new providers with ~30 lines of code
|
|
469
|
+
- Register providers via decorator
|
|
470
|
+
- No factory code changes needed
|
|
471
|
+
|
|
472
|
+
### 2. **Performance**
|
|
473
|
+
- Model caching reduces memory usage
|
|
474
|
+
- Lazy loading improves startup time
|
|
475
|
+
- Shared models across instances
|
|
476
|
+
|
|
477
|
+
### 3. **Maintainability**
|
|
478
|
+
- DRY principle via mixins
|
|
479
|
+
- Clear separation of concerns
|
|
480
|
+
- Type-safe with full hints
|
|
481
|
+
|
|
482
|
+
### 4. **Testing**
|
|
483
|
+
- Easy to mock with protocols
|
|
484
|
+
- Provider registration is testable
|
|
485
|
+
- Clear interface contracts
|
|
486
|
+
|
|
487
|
+
### 5. **Developer Experience**
|
|
488
|
+
- Auto-discovery of providers
|
|
489
|
+
- Intelligent defaults
|
|
490
|
+
- Comprehensive error messages
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## Migration Path
|
|
495
|
+
|
|
496
|
+
### Backward Compatibility
|
|
497
|
+
|
|
498
|
+
```python
|
|
499
|
+
# Old API (still works)
|
|
500
|
+
from proximadb.embedding_providers import get_embedding_provider
|
|
501
|
+
provider = get_embedding_provider("simulated", dimension=384)
|
|
502
|
+
|
|
503
|
+
# New API (recommended)
|
|
504
|
+
from proximadb.embedding_providers import EmbeddingProviderFactory
|
|
505
|
+
provider = EmbeddingProviderFactory.create("gte-qwen")
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Migration Steps
|
|
509
|
+
|
|
510
|
+
1. Implement core infrastructure (core/, mixins/)
|
|
511
|
+
2. Refactor one provider as proof-of-concept
|
|
512
|
+
3. Add backward compatibility layer
|
|
513
|
+
4. Migrate remaining providers
|
|
514
|
+
5. Deprecate old API (with warnings)
|
|
515
|
+
6. Remove deprecated code in next major version
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## Implementation Checklist
|
|
520
|
+
|
|
521
|
+
- [ ] Create core/ module structure
|
|
522
|
+
- [ ] Implement BaseEmbeddingProvider
|
|
523
|
+
- [ ] Implement ProviderConfig and ModelMetadata
|
|
524
|
+
- [ ] Implement ProviderRegistry
|
|
525
|
+
- [ ] Implement ModelCache
|
|
526
|
+
- [ ] Create mixins/ module structure
|
|
527
|
+
- [ ] Implement SentenceTransformerMixin
|
|
528
|
+
- [ ] Implement InstructionMixin
|
|
529
|
+
- [ ] Refactor gte-Qwen provider as POC
|
|
530
|
+
- [ ] Implement new Factory
|
|
531
|
+
- [ ] Add backward compatibility layer
|
|
532
|
+
- [ ] Migrate all providers
|
|
533
|
+
- [ ] Update tests
|
|
534
|
+
- [ ] Update documentation
|
|
535
|
+
|
|
536
|
+
---
|
|
537
|
+
|
|
538
|
+
## Success Metrics
|
|
539
|
+
|
|
540
|
+
- **Code Reduction**: 70%+ reduction in provider code
|
|
541
|
+
- **Performance**: 50%+ reduction in memory usage (model caching)
|
|
542
|
+
- **Extensibility**: Add new provider in <50 lines
|
|
543
|
+
- **Test Coverage**: 95%+ coverage on core modules
|
|
544
|
+
- **Backward Compatibility**: 100% of existing tests pass
|