> ## Documentation Index
> Fetch the complete documentation index at: https://docs.textin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 本地 Milvus

> 配置本地 Milvus 向量数据库，适合单机部署和开发测试

## 本地 Milvus

本地 Milvus 将数据存储在本地文件中，适合单机部署和开发测试。

### 参数说明

| 参数                | 类型        | 必填 | 说明                              |
| ----------------- | --------- | -- | ------------------------------- |
| `type`            | `string`  | 是  | 固定为 `"milvus"`                  |
| `db_path`         | `string`  | 是  | 本地数据库文件路径                       |
| `collection_name` | `string`  | 是  | 集合（Collection）名称                |
| `dimension`       | `integer` | 是  | 向量维度，必须与 embed 模型维度一致（当前为 1024） |

### 如何获取连接参数

本地 Milvus 无需额外的鉴权参数，只需要：

1. **数据库文件路径**：指定本地文件路径，如果文件不存在会自动创建
2. **集合名称**：自定义集合名称，用于存储文档元素
3. **向量维度**：必须与使用的 embed 模型维度一致（当前 Pipeline 使用的模型均为 1024 维）

### 配置示例

```python theme={null}
from xparse_client import MilvusDestination

destination = MilvusDestination(
    db_path='./milvus_pipeline.db',      # 本地数据库文件路径
    collection_name='my_collection',      # 集合名称
    dimension=1024                        # 向量维度，必须与 embed 模型一致
)
```

### 使用示例

```python theme={null}
from xparse_client import MilvusDestination, Pipeline

destination = MilvusDestination(
    db_path='./milvus_pipeline.db',
    collection_name='documents',
    dimension=1024
)

# ... 其他配置

pipeline = Pipeline(
    source=source,
    destination=destination,
    # ...其他配置
)
pipeline.run()
```

### 数据 Schema

Pipeline 默认创建如下字段：

| 字段名          | 类型                  | 说明           |
| ------------ | ------------------- | ------------ |
| `element_id` | VARCHAR(128)        | 元素唯一标识符（主键）  |
| `embeddings` | FLOAT\_VECTOR(1024) | 向量嵌入（1024 维） |
| `text`       | VARCHAR(65535)      | 元素文本内容       |
| `record_id`  | VARCHAR(128)        | 记录 ID        |
| `metadata`   | JSON                | 元数据信息（动态字段）  |

### 向量检索示例

可以通过 `pymilvus` 在本地 Milvus 中执行相似度检索：

```python theme={null}
from pymilvus import MilvusClient

client = MilvusClient(uri='./milvus_pipeline.db')

# 将查询文本向量化（需调用相同的 embed API）
query_vector = [0.1, 0.2, 0.3, ...]  # 1024 维向量

results = client.search(
    collection_name='documents',
    data=[query_vector],
    limit=5,
    search_params={"metric_type": "COSINE", "params": {"nprobe": 10}},
    output_fields=['text', 'metadata']
)

for result in results[0]:
    print(f"相似度: {1 - result['distance']:.4f}")
    print(f"文本: {result['entity']['text'][:100]}...")
```

### 注意事项

* 本地 Milvus 将数据存储在单个文件中，适合开发和测试
* 如果文件不存在，Milvus 会自动创建
* 确保有足够的磁盘空间存储向量数据
* 本地 Milvus 不支持分布式部署，如需生产环境的高可用性，建议使用 Zilliz Cloud
