一个可维护的知识库至少要区分文档身份与片段身份。只存正文和向量,更新时无法确定该删哪些旧片段,回答时也无法稳定显示出处或按权限过滤。
文档层保存什么
{
"document_id": "refund-policy",
"version": 3,
"title": "退款政策",
"source_url": "https://intranet.example/policy/123",
"effective_at": "2026-09-01",
"audience": ["support", "finance"],
"content_sha256": "..."
}
document_id 跨版本稳定,version 与哈希用于识别变化。原文下架时保留审计记录,但从当前可检索集合中移除。

片段层保存什么
{
"chunk_id": "refund-policy:v3:p12:c02",
"document_id": "refund-policy",
"version": 3,
"page": 12,
"section": "到账时间",
"text": "审核通过后……",
"audience": ["support", "finance"]
}
Qdrant 把向量、可选 ID 与 payload 组成 point,参见 Points 官方文档;Payload 文档说明 JSON payload 及过滤方式。其他向量库字段名不同,但设计目标相同。
权限必须在检索阶段生效
检索前必须把当前用户可见范围转成过滤条件。先检索所有片段再让模型“不要泄露”不构成权限控制,因为敏感文本已经进入模型上下文。文档层与片段层的权限字段必须一致,并由可信身份系统提供用户角色。
更新与引用流程
- 新版本用同一
document_id、新版本号写入。 - 验证新片段数量、权限和来源 URL。
- 切换当前版本过滤条件。
- 删除或停用旧版本向量,避免同时召回冲突政策。
- 回答返回
chunk_id,页面再查文档标题、URL 和页码。
验收
先选一份会更新的制度文件,按下列结构生成两个版本。分别用公开账号和内部账号查询同一问题;公开账号不得命中内部片段,内部账号只能命中当前版本。点击引用应回到正确页面或原文位置。
限制
以下结构是可执行的设计示例,没有接入读者的身份系统或生产向量库。ACL 字段不能替代数据库和应用层授权审计,具体权限模型需由系统负责人设计。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32272.html