news 2026/8/30 5:58:25

VeapAI 实战(七)Milvus 调试搜索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VeapAI 实战(七)Milvus 调试搜索

摘要:本文是 VeapAI 企业 AI 知识库实战系列的第七篇,聚焦 Milvus 调试搜索环节。文章通过检索模板与检索审计两张表,把 TopK、阈值、过滤表达式等检索参数固定为可调、可查的契约,让向量检索从"黑盒"变成"留痕"的透明过程。内容涵盖表设计、页面操作、源码走读、调参习惯与复现步骤,帮助读者把检索调参从玄学变成有据可查的工程实践。

# 从零打通企业 AI 知识库全链路:VeapAI 实战(七)Milvus 调试搜索

> 关键词:Milvus 检索、向量检索调参、TopK 阈值 | 首发:CSDN | 同步:知乎 / 掘金

![本系列 8 步流程总览(当前:⑦ Milvus 调试搜索)]

## 检索是个黑盒,直到你让它留痕

向量写进去了,问答上线前还有个环节:验证检索本身行不行。TopK 取多少、阈值卡多少、过滤表达式写得对不对,全靠猜的话,问答效果就是玄学。

VeapAI 的解法是两件事:检索模板把参数固定下来,检索审计把每次调用记下来。前者让你调参,后者让你知道每次调的效果。

## 表设计

`ai_vector_search_template`(检索模板):

| 字段 | 说明 |

| ---- | ---- |

| `template_code` | 租户内唯一 |

| `collection_id` | 目标集合 |

| `top_k` | 默认 10 |

| `score_threshold` | 分数阈值,decimal(10,6),可选 |

| `filter_expr` | Milvus 过滤表达式,varchar(1000) |

| `output_fields` | 输出字段列表(JSON) |

| `search_params` | 检索参数(JSON),rerank 配置单列 `rerank_config` |

| `status` | 0 停用 1 启用 |

模板这张表实际上是检索的"参数契约":TopK、阈值、过滤表达式、输出字段、检索参数都收口在这里,其中 rerank 配置单列 `rerank_config`。重排是检索质量的重要一截,配置单列意味着它是检索流程里的正式环节,而不是塞在某个 JSON 角落里的附带项。契约集中,扩展就集中——加新的检索参数,扩模板字段,不用散改问答代码。

`ai_vector_search_audit`(审计):

| 字段 | 说明 |

| ---- | ---- |

| `query_text` | 查询文本(来自调试台) |

| `query_vector_hash` | 向量 hash。**不落向量本体** |

| `top_k` / `filter_expr` / `search_params` | 本次检索的参数快照 |

| `result_count` / `latency_ms` | 结果数与耗时 |

| `status` / `error_msg` | success / fail 与错误信息 |

| `operator_ip` | 操作 IP |

索引 `idx_search_audit_collection(tenant_id, collection_id, created_time)`,按集合翻检索历史。审计表存 hash 不存向量,这个细节很关键:向量本体几百 KB 一条,落库既费空间又没必要,hash 足够对账。审计记录是为了"这次检索发生了什么",不是存档检索内容本身——知道自己要什么,是这类表设计的分寸。

![核心表关系 ER 图(简化版,只标关键属性与核心联动)]

## 页面操作

![检索模板]

「Milvus 管理 → 检索模板」建模板:选集合、定 TopK、填阈值、写过滤表达式(比如 `region_code == "440000"`)。

![调试搜索]

调试台输入查询文本直接搜,返回片段带分数;每次调试都写一条审计记录。调完一组参数,去审计页翻历史,哪次检索空结果、哪次延迟高,一眼能看出来。

第 3 篇提到应用知识配置里的 `min_score`,它和这里的 `score_threshold` 是两个层面的参数:前者是应用对知识主题的召回门槛,后者是模板层面的检索参数。调参顺序建议先在调试台把模板参数调到位,再把应用侧的召回门槛对齐。

## 源码走读

`com.veap.milvus.controller.AiVectorSearchTemplateController`、`AiVectorSearchAuditController`,服务实现在 `com.veap.milvus.service.impl.AiVectorSearchTemplateServiceImpl`。检索的底层走 `milvusops` 包的 facade,同第 2 篇的 collection 操作一样经过统一断言和审计。

## 一个提效的小习惯

`filter_expr` 是 Milvus 原生表达式语法,写错不会报 SQL 错,而是安静地返回空结果。调试时先不填 filter 确认向量召回正常,再加 filter,一次只变一个变量。这个顺序能让"为什么没结果"少一半。

顺带说,模板 + 审计的组合还解决了一个团队协作问题:检索参数是谁调的、调成了什么值,审计表里每次都有快照。接手的人不用问"上次效果好的那组参数是多少",翻审计记录就行。调参从玄学变成有据可查,靠的就是这两张表。

## 复现

用第 6 篇向量化后的集合建一个模板:TopK 从 5 起步,阈值先不设。在调试台搜一条确定存在的知识点原文,观察分数区间;再把阈值设到区间中位数,确认过滤生效。审计页确认每次调试都有记录。

下一篇收尾:政策问答。知识搜索、知识溯源、文档在线定位预览,这条链路在问答页里怎么串起来。

项目地址:https://gitee.com/mindock/veap

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 5:56:39

工业具身智能中间层:从量产到量销的桥梁

这次我们来看一个产业话题:机器人本体造出来并不难,难的是让用户愿意批量买、敢上线、用得住。传统工业机器人卖了十几年甚至几十年,靠的是示教器、PLC 固定程序、半天到几天的现场调试;而具身智能机器人想要从样机走向批量交付&a…

作者头像 李华
网站建设 2026/8/30 5:54:30

EBSD数据转Abaqus全流程:MTEX网格生成与取向映射实战指南

简介:本资源是一套面向材料科学与计算力学交叉领域研究者的MATLAB工具集,专为EBSD实验数据驱动的多晶材料有限元建模提供自动化支持,解决从电子背散射衍射数据到Abaqus晶体塑性仿真输入文件的转换难题。资源共5个文件,包含4个核心…

作者头像 李华
网站建设 2026/8/30 5:52:46

2018字节后端校招真题拆解:大厂后端能力模型与备战指南

校招后端方向(第三批),到现在还有人翻出来看,说实话我自己也没想到。但仔细想想也正常——2018年这批题几乎把字节后端笔试的“底牌”亮明白了:算法题比重高、题目风格偏向竞赛化、考点覆盖面广,而且和当年…

作者头像 李华
网站建设 2026/8/30 5:48:59

Java面试八股文PDF合集:知识体系整理思路与实操全记录

本来以为整理面试资料是件小事,结果一干就是半个月。 事情是这样的:前阵子好几个朋友陆续问我有没有Java面试资料,我想着掘金社区上其实有大量一线开发者写的面试总结,质量远比市面上那些堆砌概念的资料靠谱,但问题是…

作者头像 李华