基于Transformers+Milvus(1.1.1)的语义搜索项目:如何Mock数据库或无服务器测试?
无需搭建Milvus服务器的测试方案(针对1.1.1版本)
当然可以,针对Milvus 1.1.1,你有几种无需搭建完整服务器或Mock的测试方案,根据你的测试场景选择:
内存模式快速测试
Milvus 1.1.1支持内存运行模式,不需要启动独立的Milvus服务器,数据仅存于内存,进程结束后自动清除,适合快速验证代码逻辑或单元测试。通过pymilvus连接时开启共享内存即可:from pymilvus import connections, CollectionSchema, FieldSchema, Collection, DataType # 连接内存模式Milvus connections.connect(alias='default', host='localhost', port='19530', use_shared_memory=True) # 定义集合Schema id_field = FieldSchema(name="id", dtype=DataType.INT64, is_primary=True) embedding_field = FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=768) schema = CollectionSchema(fields=[id_field, embedding_field], description="语义搜索测试集合") # 创建并使用集合 test_collection = Collection(name="semantic_search_test", schema=schema)Mock Milvus客户端
如果只需要测试业务逻辑(比如Transformers生成向量后的搜索流程),不需要真正执行向量运算,可以用Python的unittest.mock来模拟pymilvus的核心方法,返回预设结果:from unittest.mock import patch, Mock from your_module import semantic_search_function # 导入你的业务函数 def test_search_logic(): # 模拟Milvus集合的search方法 with patch('pymilvus.Collection') as mock_col: mock_search_result = Mock(return_value=[[(1, 0.92), (3, 0.85)]]) mock_col.return_value.search = mock_search_result # 调用业务函数,传入测试向量 results = semantic_search_function([0.1]*768) # 验证结果符合预期 assert len(results) == 2 assert results[0]['id'] == 1 assert results[0]['score'] == 0.92轻量Docker容器测试
若需要接近生产环境的测试场景,可启动单节点Milvus 1.1.1的Docker容器,无需复杂配置,测试完成后直接销毁即可:# 启动Milvus 1.1.1单节点容器 docker run -d --name milvus-test-1.1.1 -p 19530:19530 milvusdb/milvus:1.1.1-cpu-d050721-5e559c # 测试完成后停止并删除容器 docker stop milvus-test-1.1.1 && docker rm milvus-test-1.1.1
内容的提问来源于stack exchange,提问作者alhassanha
相关产品推荐
相关产品推荐

