阿里新开源了 zvec,开个小仓库浅浅试一下。
这篇就是折腾记录,不作为任何指南、是为了给未来如果做 LLM桌面应用时,多一个 vector DB 的选择。
GitHub - alibaba/zvec
GitHub - Coco422/zvec-try
怎么测的
目标很简单:先把“建库 -> 入库 -> 向量查询 -> 命中评估”这条链路跑通。
我在 zvec-try 里做了这几件事:
- 用
datasets/*.json配 4 组中英混合语料 - 每条 query 写
expected_doc_ids,按 top-k 命中做 PASS/FAIL - embedding 走第三方 API(SiliconFlow / 阿里云/自部署)
- 每个语料单独创建一个本地 zvec collection,方便重复跑
配环境
我还是用 uv。
| |
.env 里填这几个值就能跑:
| |
代码里对 endpoint 处理了一下:
- 如果你已经写到
/v1,会自动补成/v1/embeddings - 如果你直接写域名,也会自动拼接 embeddings 路径
数据格式
每个语料是一个 JSON,结构大概这样:
[json] 显示已折叠代码(15 行)
| |
我这次放了 4 份语料:
consumer_tech.jsonhealth_sports.jsontravel_food.jsonwork_learning.json
跑起来
| |
也可以指定参数:
| |
脚本输出会按 query 打印:
PASS/FAIL- 期望文档 id
- 实际 topk 命中 id
- top1 文本截断内容
最后会汇总每个语料和整体命中率,后续换 embedding 模型时直接横向对比就行。
对 zvec 的第一印象
- API 比较直给,
schema -> insert -> query路线清楚。 - 本地落盘调试很方便,做小规模评估很顺手。
- 对我这种“先跑通再说”的场景,门槛不高。
下一步准备做啥
- 原本还想测试 image 或者 audio 的,暂时不支持,那就放入遥遥无期的 TODO 中
- 加 rerank(和纯向量召回分开看)
- 记录
recall@k、延迟、不同 batch size 的变化 - 再补一版偏业务文本的数据,不只测短句问答