# MilvusDemo 一个使用 C#(.NET 9)与 `Milvus.Client` 的极简示例项目,演示: - 初始化集合(存在则删除并重建) - 创建向量索引与加载集合 - 批量插入随机向量 - 执行向量相似度搜索 - 通过内置测试流程验证调用链 ### 模块划分 - **App(入口层)**:`Program.cs` - 提供交互式入口:输入 1=实际连接 Milvus 执行;输入 2=运行内置测试(无需 Milvus 实例)。 - **Core/Service(业务层)**:`MilvusService.cs` - 封装与 Milvus 的连接、集合初始化、索引创建/加载、数据插入与搜索。 - **Test Harness(测试层)**:`TestRunner.cs`、`MilvusServiceTests.cs` - `TestRunner` 负责编排测试流程;`MilvusServiceTests` 提供无外部依赖的模拟测试(验证调用链与参数)。 ### 环境要求 - .NET SDK 9.0+ - 仅当选择“实际运行(选项 1)”时需要:可访问的 Milvus Server(默认 `localhost:19530`)。 ### 快速开始 1. 构建 ```powershell dotnet build ``` 2. 运行(测试模式,无需 Milvus) - PowerShell: ```powershell echo 2 | dotnet run ``` - Bash: ```bash echo 2 | dotnet run ``` 3. 运行(实际连接 Milvus) - 确保本地或可达的 Milvus 实例运行在 `localhost:19530`。 - 程序启动后输入 `1`。 ### 在解决方案根目录运行(多项目) 本仓库包含多个示例项目。可在解决方案根目录使用 `--project` 指定要运行的项目: ```powershell # 运行 Milvus 示例(默认交互菜单 1/2) dotnet run --project MilvusDemo # 运行语音到函数示例 dotnet run --project VoiceToFunctionDemo ``` ### 启动 Milvus(可选) 若需在本机快速启动 Milvus,可参考官方快速开始,或使用 Docker(示例): ```bash # 仅供参考,建议按官方文档选择合适的版本与持久化配置 docker pull milvusdb/milvus:latest docker run -d --name milvus-standalone -p 19530:19530 milvusdb/milvus:latest ``` 文档:`https://milvus.io/docs`(查看“Get Started / Install”)。 ### 主要参数(实际运行模式) - 主机与端口:`localhost:19530` - 集合名:`csharp_demo_collection` - 向量维度:`8` > 提示:若需修改连接地址或集合名,请在代码中相应位置调整(例如在连接初始化与集合定义处)。 ### 文件说明 - `Program.cs`:控制台入口与菜单;调用服务或测试。 - `MilvusService.cs`:核心服务,封装 Milvus 客户端操作。 - `MilvusServiceTests.cs`:简单的模拟测试实现(不依赖 Milvus)。 - `TestRunner.cs`:运行测试流程的编排类。 - `MilvusDemo.csproj`:项目与依赖定义(包含 `Milvus.Client`)。 ### 项目结构 - `MilvusDemo/`:Milvus 向量数据库最小示例,支持实际连接与模拟测试两种模式。 - `VoiceToFunctionDemo/`:语音(文本)解析为函数调用的示例,展示如何从自然语言中抽取参数并调用预定义函数。 --- ## VoiceToFunctionDemo 一个将中文自然语言指令解析为函数调用的控制台示例。内置函数库包含: - `PRODUCT(double[], double[])`:计算两列数值的逐项乘积 - `FILTER(List, Func)`:按条件筛选用户(支持年龄阈值与姓名包含) - `COUNTIF(double[], Func)`:按范围统计数量 ### 运行 ```powershell dotnet run --project VoiceToFunctionDemo ``` 程序内置了示例输入,启动后会依次演示: - 计算两列数值的乘积(如 `[1,3,5]` 与 `[2,4,6]`) - 筛选年龄大于某值且姓名包含关键字的用户 - 统计销售额处于指定区间内的订单数 如需扩展,请修改 `VoiceToFunctionDemo/Program.cs`: - 新增函数:在 `functionLibrary` 中增加 `FunctionInfo`,定义参数类型与执行逻辑。 - 扩展解析:在 `ParseVoiceCommand` 中为新函数添加参数解析与类型校验。 --- ### 常见问题(FAQ) - 无法连接到 Milvus:请确认 Milvus 是否已启动并监听 `19530` 端口,以及本机/容器网络连通性。 - 还原/编译失败:请确认已安装 .NET 9 SDK,并允许联网下载 NuGet 依赖;必要时执行 `dotnet restore` 后再构建。 - 端口占用:如 `19530` 已被占用,请修改容器映射或程序连接端口并保持一致。