快速结论
先让检索层返回有权限、可定位的资料,再要求模型按片段编号回答。程序应检查引用编号与资料内容;格式正确不代表事实或来源正确。
- DeepSeek 工具调用需要应用执行检索函数并回传结果。
- 本文 source_id、chunk_id 等字段是应用层示例。
- JSON Output 约束输出格式,来源和事实仍需独立检查。
本次更新:10 月 14 日核验后新增,注明消息日期与适用范围。
企业知识库问答要能回答“依据是什么”。本篇以 DeepSeek API 为生成层,给出应用设计步骤;没有部署向量数据库或执行模型测试。
1. 检索结果保留定位信息
为每个片段保存文档 ID、片段 ID、标题、版本或更新时间、页码或章节,以及访问权限。片段进入模型之前先按当前用户权限过滤。下面是应用层示例,不是 DeepSeek 的原生检索协议:
{"chunk_id":"C17","source_id":"D8","title":"部署说明","version":"2026-10-14","section":"连接配置","text":"示例资料片段"}
如果资料已更新,应保留所用版本,避免答案链接指向另一版内容。短片段缺少上下文时,可补齐所属章节,而不是让模型猜测省略的条件。
2. 把检索接进工具闭环
官方 Tool Calls 文档说明:模型生成调用参数,应用负责执行函数并返回结果。应用可自定义只读检索工具,让它返回片段;工具 ID 和结果消息按所选协议关联。
提示词示例:“只根据给定片段回答;每个事实附片段编号;资料冲突时列出冲突版本;没有依据时返回信息不足。”文档中的指令文字应作为待分析资料处理,不能改变用户权限或工具授权。
3. 程序验证引用
建议输出 answer、citations 和 insufficient_evidence。这些是应用自定义字段。使用 JSON Output时,按官方要求设置格式并提供 JSON 示例,随后仍需检查空输出、截断及字段内容。
验证每个引用编号确实来自本轮检索结果,链接属于原资料,当前用户有权查看。对重要结论抽查原文是否真正支持;编号存在不等于引用关系正确。
4. 用几类样本评估
准备答案明确、资料缺失、版本冲突、权限不足和片段含无关指令等样本。分别记录检索覆盖、回答正确、引用对应和适当拒答情况。先定位检索失败还是生成失败,再调整召回范围或提示词。
5. 控制上下文与费用
只传任务所需资料,固定公共指令并记录每轮输入。DeepSeek 上下文缓存文档说明缓存按前缀单位匹配,命中以 best-effort 方式提供;可观察 prompt_cache_hit_tokens 与 prompt_cache_miss_tokens。不要因文档重复出现就预设全部命中。
先从少量、来源清楚的资料做可复核问答,再扩大知识库。检索、索引更新与权限检查由应用负责,本文不假设 DeepSeek 自动替你完成这些步骤。
参考资料
本文依据以下资料整理,版本与接口信息请以来源页面的现行说明为准。