Files
VectorDBDemo/README.md
2025-10-17 02:46:25 +08:00

110 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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<User>, Func<User,bool>)`:按条件筛选用户(支持年龄阈值与姓名包含)
- `COUNTIF(double[], Func<double,bool>)`:按范围统计数量
### 运行
```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` 已被占用,请修改容器映射或程序连接端口并保持一致。