VeapAI 实战(八)政策问答:知识搜索、溯源与在线定位
摘要本文是 VeapAI 企业 AI 知识库全链路实战系列的第八篇聚焦政策问答场景下的知识搜索、溯源与在线定位。文章以「答案能否点回原文」为验收标准拆解问答的装配机制三张表各管一段、一次问答的完整执行路径、会话审计表设计、后端动作策略库以及基于命中知识点 ID 的页码级溯源定位最后给出源码走读与复现验收步骤。# 从零打通企业 AI 知识库全链路VeapAI 实战八政策问答知识搜索、溯源与在线定位 关键词AI 政策问答、知识库问答、知识溯源、RAG | 首发CSDN | 同步知乎 / 掘金![本系列 8 步流程总览当前⑧ 政策问答]## 验收标准只有一个能不能点回原文前面七步都是铺垫。问答环节的验收标准就一条用户问完问题看到答案的同时能不能点开命中知识点回到原文那一页、那一段。VeapAI 的问答基于 AiConsole 执行控制台策略叫知识搜索 大模型归纳 命中知识点列表 溯源定位。四个动作一条链。## 问答的装配三张表各管一段ai_app_topic应用主题如政策问答下挂 ai_app_service服务实例服务实例的 service_inst_conf 字段是界面装配的唯一事实来源layoutId、modIds、stages、qaConfig 都在这里。换布局、换阶段改配置不动代码。问答的检索范围由 ai_app_topic_knowledge_config 决定——第 3 篇配的召回条数、匹配度阈值、前置标题到这里生效。模型输出结构由 ai_prompt_info 约束biz_code 定位提示词问答主提示词 aiconsole.aiQuestion.stage.askprompt_variables 定义变量prompt_content 里约束返回 JSON 结构包括命中知识点和溯源字段。命名契约在 docs/AiQuestion/README.md 里写死modId aiconsole.aiQuestion布局 builtin.layout.aiQuestion.single阶段 stage.ask。这套装配为什么能这么自由因为 AiConsole 前端是一个注册中心式的插件架构。veap-ui/src/components/AiConsole/ 下有 registry/RegistryHub.js 注册中心和 mods/ 插件目录builtin、aiQuestion、kbBuild、pptDoc、quickDev 每个插件在 register(hub) 里显式注册自己的布局、阶段输出校验器、命令和上下文扩展。service_inst_conf 里的 modIds 就是决定启用哪些插件的开关——装配界面是配置装配底层是插件注册。加一个AI 应用不用动宿主代码写一个 mod 目录声明注册即可。## 一次问答的完整路径text用户提问→ AiConsole 执行 stage.ask→ 候选匹配按 topicId/standardId 选 enabled job→ POST /milvus/inner/knowledgeEntry/vectorQuery→ embedding → Milvus search → 返回 object_id 列表→ 按 object_id 回表 ai_knowledge_entry→ 大模型归纳生成答案→ 会话写入 ai_user_service_log候选匹配这步有个明确语义**topic 下没有启用的 job返回空列表不兜底**。这是设计文档里的硬规矩。没有向量就别硬聊宁可空结果也不让模型瞎编出处。![政策问答页]## 会话审计表ai_user_service_log 是问答审计的唯一事实来源关键字段| 字段 | 说明 || ---- | ---- || session_id | 会话唯一标识 || message_seq | 会话内消息顺序号从 1 严格递增 || info_type | userPrompt / llmAnswer || content_schema | plainText / aiconsole.aiQuestion.askResult.v1 || call_group_id | 同一问答的提问与回答必须同组 || replay_enabled | 是否允许历史回显默认 0 |两条索引值得看uk_ai_user_service_log_session_seq(session_id, message_seq) 锁死顺序idx_ai_user_service_log_call_group(call_group_id) 把一次调用的提问和回答栓在一起。历史回显只读 replay_enabled1 的记录其它 AI 模块写这张表默认不回显。这个默认不回显是个替用户想到的细节AI 模块多了以后不是所有会话都适合进历史列表。默认关、按需开比默认开、逐家去关安全得多。## 后端的动作策略库另一个插件化点问答前端是插件装配后端也有对应的设计。ai_app_exe_rule 动作策略库的字段就是一套动作插件契约表注释策略注册 / 编辑 / 删除管理- action_type动作类型大模型 / 搜索 / 文件 / agent 等- action_script动作实现脚本支持 JS / Python / DSL- remote_service_url / local_service_bean远程地址或本地 Spring bean双执行通道- action_param_schema动作参数结构定义- llm_id / prompt_id可绑定的模型与提示词。一个动作就是一个可注册、可配置的执行单元走本地 bean 还是远程服务、用什么脚本语言配置说了算。规则库里沉淀的策略是平台级 AI 能力的公共底座。## 溯源与在线定位答案里的命中知识点带 knowledgeEntryId。溯源详情走统一溯源组件读 ai_knowledge_entry_source拿到 locator_json 和页码前端在线预览直接跳到对应页、圈出片段anchor_text / quote_text 做回显核对。![溯源定位预览]这就是第一步定的验收标准答案的每一句都能回到原文那一页。不是参考了某份文件这种模糊声明是页码 片段级的定位。## 源码走读Milvus 侧候选匹配入口com.veap.milvus.controller.inner.InnerMilvusVectorQueryControllerInnerAuth 的内部接口 POST /milvus/inner/knowledgeEntry/vectorQuery实现是 com.veap.milvus.service.AiKnowledgeEntryVectorQueryAppService.queryTopObjectIds。会话日志写入com.veap.ai.service.impl.AiUserServiceLogServiceImpl接口 IAiUserServiceLogService。溯源读取com.veap.ai.controller.AiKnowledgeEntrySourceController。## 复现与收尾前七步都跑通后在 AiConsole 打开政策问答问一个确定在知识库里的问题。验收三件事答案内容准确命中知识点列表带前置标题和分数点开知识点跳转到预览页对应位置。到这8 步全链路完整跑通。这套系统对出处的执念来自实际业务政策问答答错了要担责没有页码级溯源AI 的答案没人敢用。整个系列对应的源码、表结构veap-cloud/DB/veap.sql和设计文档都在仓库里欢迎克隆、提 issue。Giteehttps://gitee.com/mindock/veap

相关新闻

最新新闻

日新闻

周新闻

月新闻