b8422398f78b997294eae82758d55bbcc197649e
Some checks failed
SonarQube Code Quality Scan / scan (push) Failing after 14s
MilvusDemo
一个使用 C#(.NET 9)与 Milvus.Client 的极简示例项目,演示:
- 初始化集合(存在则删除并重建)
- 创建向量索引与加载集合
- 批量插入随机向量
- 执行向量相似度搜索
- 通过内置测试流程验证调用链
模块划分
- App(入口层):
Program.cs- 提供交互式入口:输入 1=实际连接 Milvus 执行;输入 2=运行内置测试(无需 Milvus 实例)。
- Core/Service(业务层):
MilvusService.cs- 封装与 Milvus 的连接、集合初始化、索引创建/加载、数据插入与搜索。
- Test Harness(测试层):
TestRunner.cs、MilvusServiceTests.csTestRunner负责编排测试流程;MilvusServiceTests提供无外部依赖的模拟测试(验证调用链与参数)。
环境要求
- .NET SDK 9.0+
- 仅当选择“实际运行(选项 1)”时需要:可访问的 Milvus Server(默认
localhost:19530)。
快速开始
- 构建
dotnet build - 运行(测试模式,无需 Milvus)
- PowerShell:
echo 2 | dotnet run - Bash:
echo 2 | dotnet run
- PowerShell:
- 运行(实际连接 Milvus)
- 确保本地或可达的 Milvus 实例运行在
localhost:19530。 - 程序启动后输入
1。
- 确保本地或可达的 Milvus 实例运行在
在解决方案根目录运行(多项目)
本仓库包含多个示例项目。可在解决方案根目录使用 --project 指定要运行的项目:
# 运行 Milvus 示例(默认交互菜单 1/2)
dotnet run --project MilvusDemo
# 运行语音到函数示例
dotnet run --project VoiceToFunctionDemo
启动 Milvus(可选)
若需在本机快速启动 Milvus,可参考官方快速开始,或使用 Docker(示例):
# 仅供参考,建议按官方文档选择合适的版本与持久化配置
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<User>, Func<User,bool>):按条件筛选用户(支持年龄阈值与姓名包含)COUNTIF(double[], Func<double,bool>):按范围统计数量
运行
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已被占用,请修改容器映射或程序连接端口并保持一致。
Description
Languages
C#
100%