milvus2026.08.27 · 8 分钟阅读
milvus简易增删改查
milvus增删改查
L
Leo
2026.08.27 · 更新于 2026.09.13
4 次浏览
insert.js 存储流程(Mermaid 图)
流程要点
- 前置准备:从
.env读配置 → 初始化嵌入模型 → 创建 Milvus 客户端。 - 建集合:定义 6 个字段,其中
vector必须是 1024 维,与嵌入模型输出一致。 - 建索引:对
vector字段建 IVF_FLAT + 余弦相似度索引,这是向量搜索能快的前提。 - 加载集合:Milvus 是「先加载后查询」模式,加载后才能搜索。
- 生成向量 + 插入:
Promise.all并发把每条content文本转成向量,然后insert批量写入。
Milvus 增删改查总结(src/ 下 4 个核心方法)
| 操作 | 对应文件 | SDK 方法 | SQL 类比 |
|---|---|---|---|
| 增 Create | insert.js | client.insert() | INSERT INTO |
| 删 Delete | delete.js | client.delete() | DELETE ... WHERE |
| 改 Update | update.js | client.upsert() | UPDATE ... SET(实际是"按主键覆盖") |
| 查 Read | query.js / rag.js | client.search() | SELECT ... ORDER BY 相似度 |
增 —— client.insert()(insert.js)
await client.insert({ collection_name: COLLECTION_NAME, data: diaryData });
前提:先 createCollection 建集合 → createIndex 建向量索引 → loadCollection 加载。插入前要把文本用 embedding 模型转成向量。
删 —— client.delete()(delete.js)
await client.delete({
collection_name: COLLECTION_NAME,
filter: `id == "diary_005"` // 删单条
// filter: `id in ["diary_002", "diary_003"]` // 批量删
// filter: `mood == "sad"` // 条件删
});
filter 是类 SQL 的布尔表达式,等价于 WHERE 子句,灵活度很高。
改 —— client.upsert()(update.js)
const vector = await getEmbedding(updatedContent.content); // 内容变了,向量必须重算
const updateData = { ...updatedContent, vector };
await client.upsert({ collection_name: COLLECTION_NAME, data: [updateData] });
Milvus 没有 update 方法,更新靠 upsert(按主键 id 判断:存在就覆盖、不存在就插入)。关键点:改了内容必须同步重算 embedding,否则向量检索仍按旧语义匹配。
查 —— client.search()(query.js / rag.js)
const queryVector = await getEmbedding(query); // 先给"问题文本"转向量
const searchResult = await client.search({
collection_name: COLLECTION_NAME,
vector: queryVector, // 用向量找向量
limit: 2, // 返回 top-2
metric_type: MetricType.COSINE, // 相似度度量
output_fields: ['id', 'content', 'date', 'mood', 'tags'] // 要返回的字段
});
查是 Milvus 的核心特色:把问题也转成向量,去库里找"最像的 top-k 条",每条带 score(相似度分数)。
rag.js 是"查"的进阶用法:search 检索出相关日记 → 拼成上下文 → 丢给 LLM 生成回答(RAG 全流程)。
一句话总结
增用
insert,删用delete(filter 过滤),改用upsert(没有 update),查用search(向量相似度)。前三个都像普通数据库,唯独查彻底不一样——永远在"找最相似的向量",所以增删改都绕不开向量这个字段。
标签 / TAGSmilvus
读者留言
COMMENTS · 0发表留言