138 lines
3.3 KiB
Markdown
138 lines
3.3 KiB
Markdown
# VDB - Vector Database Service
|
||
|
||
基于 ahserver + pymilvus 的向量数据库 HTTP 服务,支持 Milvus Lite 和 Milvus Standalone 两种模式。
|
||
|
||
## 特性
|
||
|
||
- 支持 Milvus Lite(本地文件)和 Milvus Standalone(Docker 部署,千万级)
|
||
- COSINE / IP / L2 三种距离度量
|
||
- HNSW / IVF_FLAT / IVF_PQ 索引类型可配
|
||
- 批量插入(batch_insert)和批量搜索(batch_query)
|
||
- 向量搜索 + 标量过滤组合查询
|
||
- 集合管理(list/stats/drop)
|
||
|
||
## 部署
|
||
|
||
```bash
|
||
cd /data/ymq/vdb
|
||
bash build.sh deploy # 启动
|
||
bash build.sh stop # 停止
|
||
bash build.sh status # 状态
|
||
```
|
||
|
||
### 切换到 Milvus Standalone(千万级)
|
||
|
||
编辑 `conf/config.json`:
|
||
```json
|
||
{
|
||
"milvus_mode": "standalone",
|
||
"milvus_host": "127.0.0.1:19530"
|
||
}
|
||
```
|
||
|
||
部署 Milvus Standalone(Docker):
|
||
```yaml
|
||
# docker-compose.yml
|
||
services:
|
||
etcd:
|
||
image: quay.io/coreos/etcd:v3.5.18
|
||
environment:
|
||
- ETCD_AUTO_COMPACTION_MODE=revision
|
||
- ETCD_AUTO_COMPACTION_RETENTION=1000
|
||
volumes: ["etcd:/etcd"]
|
||
command: etcd --advertise-client-urls=http://127.0.0.1:2379 --listen-client-urls=http://0.0.0.0:2379 --data-dir=/etcd
|
||
|
||
minio:
|
||
image: minio/minio:latest
|
||
environment:
|
||
MINIO_ACCESS_KEY: minioadmin
|
||
MINIO_SECRET_KEY: minioadmin
|
||
volumes: ["minio:/minio_data"]
|
||
command: minio server /minio_data --console-address ":9001"
|
||
|
||
milvus:
|
||
image: milvusdb/milvus:v2.4-latest
|
||
depends_on: [etcd, minio]
|
||
ports: ["19530:19530", "9091:9091"]
|
||
volumes: ["milvus:/var/lib/milvus"]
|
||
environment:
|
||
ETCD_ENDPOINTS: etcd:2379
|
||
MINIO_ADDRESS: minio:9000
|
||
```
|
||
|
||
## API 接口
|
||
|
||
### GET /v1/listcollections
|
||
列出所有集合。
|
||
|
||
### POST /v1/createcollection
|
||
创建集合。
|
||
```json
|
||
{
|
||
"colname": "entities",
|
||
"fields": [
|
||
{"name": "id", "type": "str", "max_length": 32, "is_primary": true},
|
||
{"name": "embedding", "type": "fvector", "dim": 1024}
|
||
],
|
||
"metric": "COSINE",
|
||
"index_type": "HNSW"
|
||
}
|
||
```
|
||
|
||
### POST /v1/collectionstats
|
||
获取集合统计信息(行数、字段、索引)。
|
||
|
||
### POST /v1/upsert
|
||
插入或更新(自动删除旧记录再插入,适合少量)。
|
||
|
||
### POST /v1/batchinsert
|
||
批量插入(不逐条flush,适合大批量入库)。
|
||
```json
|
||
{"colname": "entities", "data": [...], "flush": true}
|
||
```
|
||
|
||
### POST /v1/query
|
||
向量搜索 + 标量过滤 + 分页。
|
||
```json
|
||
{
|
||
"colname": "entities",
|
||
"vector": [0.1, 0.2, ...],
|
||
"expr": "type == \"animal\"",
|
||
"pagerows": 20,
|
||
"page": 1,
|
||
"metric": "COSINE"
|
||
}
|
||
```
|
||
|
||
### POST /v1/batchquery
|
||
批量向量搜索(多个查询向量同时搜索)。
|
||
|
||
### POST /v1/delete
|
||
按主键删除。
|
||
|
||
### POST /v1/dropcollection
|
||
删除整个集合。
|
||
|
||
## 字段类型
|
||
|
||
| 类型 | 说明 | 备注 |
|
||
|------|------|------|
|
||
| str | 字符串 | 需要 max_length |
|
||
| int | 32位整数 | |
|
||
| int64 | 64位整数 | |
|
||
| bool | 布尔值 | |
|
||
| float | 浮点数 | |
|
||
| fvector | 浮点向量 | 需要 dim |
|
||
| bvector | 二进制向量 | 需要 dim |
|
||
| json | JSON | 灵活结构 |
|
||
|
||
## 配置 (conf/config.json)
|
||
|
||
| 字段 | 默认值 | 说明 |
|
||
|------|--------|------|
|
||
| milvus_mode | lite | lite 或 standalone |
|
||
| milvus_db | $[workdir]$/db/milvus.db | lite模式文件路径 |
|
||
| milvus_host | 127.0.0.1:19530 | standalone模式地址 |
|
||
| milvus_metric | COSINE | 默认距离度量 |
|
||
| client_max_size | 100MB | 请求体大小上限 |
|