VeapAI 实战(三)知识主题与召回参数

摘要:本文是 VeapAI 企业 AI 知识库实战系列的第三篇,聚焦知识主题与召回参数。文章先厘清知识主题在链路中的三重职责(组织层级、绑定字段标准、承接问答召回参数),再拆解两张核心表的设计要点,随后演示页面操作流程,并走读前后端源码入口。最后指出「参数外置」这一最值得借鉴的设计思路,以及 enabled 字段类型等容易抄错的细节,并给出可复现的两级主题与召回参数配置步骤。

# 从零打通企业 AI 知识库全链路:VeapAI 实战(三)知识主题与召回参数

> 关键词:开源知识库、知识主题、RAG 召回参数 | 首发:CSDN | 同步:知乎 / 掘金

![本系列 8 步流程总览(当前:③ 创建知识主题)]

## 主题这层,到底管什么

知识主题在链路里是个"分类器",但只做分类就浅了。VeapAI 里主题同时干了三件事:组织层级(父子主题)、绑定字段标准(standard_code)、承接问答的召回参数(通过配置表)。第三件最容易被低估,放最后说。

## 表设计

`ai_knowledge_topic` 关键字段:

| 字段 | 说明 |

| ---- | ---- |

| `parent_id` | 上级主题,默认 0。预算评审项目 → 类别清单 → 费用明细项就是多级主题的用法 |

| `code` / `title` | 主题编码和标题 |

| `standard_code` | 绑定的元数据标准编码 |

| `status` / `approval_status` / `open_status` | 状态、审核状态、开放状态三件套 |

注意 `standard_code` 是编码不是主键。标准本身有版本概念,主题绑定编码比绑定 ID 稳,标准的版本演进不影响主题这一侧的引用语义。

主题和知识点是一对多(`ai_knowledge_entry.topic_id`),知识点留到第 5 篇讲。

第二张表是 `ai_app_topic_knowledge_config`,应用主题和知识主题之间的桥:

| 字段 | 说明 |

| ---- | ---- |

| `app_topic_id` / `knowledge_topic_id` | 两侧主键 |

| `query_limit` | 该知识主题最大召回条数,必须正整数 |

| `min_score` | 最低匹配度阈值,decimal(10,4),建议范围 0.0000–1.0000 |

| `prepend_title` | 命中知识点展示的前置标题 |

| `sort` | 同一应用主题下多个知识主题的追加顺序,越小越靠前 |

| `weight_factor` / `permission_factor` | 权重系数、权限系数 |

| `enabled` | 0 停用 1 启用 |

表上有条索引值得注意:`idx_app_topic_enabled_sort(app_topic_id, enabled, sort)`。问答选知识主题时就是按这个顺序取,索引和查询路径对上了。

顺带看两个容易被略过的字段:`weight_factor`(权重系数)和 `permission_factor`(权限系数)。这是两个方向的扩展位——权重管"多个知识主题谁更权威",召回后按系数调整排序;权限管"不同用户群看到的知识面",配合租户和行权限做过滤。V1 里这两个字段先留在表里,但"加一个检索维度不用改表结构"这件事,已经提前安排好了。检索参数外置的价值不止是改数不改代码,更是给未来的排序和权限维度留了座位。

## 页面操作

![知识主题列表]

「AI 知识库 → 知识主题」建主题,选上级主题、填编码标题、绑元数据标准编码。

![应用知识配置]

再到「AI 知识库 → 应用知识配置」把应用主题(比如"政策问答")和知识主题绑上,填召回条数、匹配度阈值、前置标题。一个应用挂多个知识主题时,用排序字段控制先后。

"政策问答"最后能答得好不好,一半在模型,一半就在这里这几个数。min_score 设高了召回空,设低了噪音多,下一篇解析完资料后,第 7 篇调试搜索就是用来现场调这几个值的。

## 源码走读

两个入口都在 `veap-ai` 模块:

- `com.veap.ai.controller.AiKnowledgeTopicController`,basePath `/knowledgeTopic`,标准 CRUD;

- `com.veap.ai.controller.AiAppTopicKnowledgeConfigController`,basePath `/appTopicKnowledgeConfig`。

前端封装在 `veap-ui/src/api/ai/knowledgeTopic.js` 和 `appTopicKnowledgeConfig.js`,页面在 `veap-ui/src/views/ai/knowledgeTopic/`、`appTopicKnowledgeConfig/`。

## 一个容易抄错的点

`query_limit`、`min_score` 这类召回参数,很多实现是直接写在问答代码里的,改一次发一次版。这里拆成配置表,一行记录改完立刻生效,而且每个知识主题各配各的,不用互相迁就。这套"参数外置"的思路,比参数本身更值得抄。

顺带说一句,`enabled` 是 char(1) 不是 tinyint,查代码时别按数字处理。字段类型不一致在这种混合设计里是常见的坑,SQL 里写清楚比注释管用。

还有一个人性化字段:`prepend_title`。它给命中的知识点加展示前置标题,问答结果列表里每个命中项前面先给一行标题。用户看结果时是先扫标题再点进去的,标题给对了,命中列表的可读性好一大截。这个字段小,但问答页的第一眼体验就在它身上。

## 复现

在第 2 篇的基础上建一个两级主题(父主题 + 子主题),再到应用知识配置里绑定一个应用主题,query_limit 填 5、min_score 填 0.6,后面第 6、7、8 篇会反复用到这组参数。

下一篇讲最重的一环:附件上传与文档解析,统一 PDF 预览和页级片段是怎么来的。

项目与源码:https://gitee.com/mindock/veap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值