这段内容是给你看的,有助于你更清晰的了解开发目的,不用把我说的话都写到程序中:
调用AI将文档内容整理成json格式,包括标题、简述和原文。
[{
"id":"",
"title":"",
"resume":"",
"content":""
}]
- 解析最好能有真实的进度条
[{
"id":"",
"title":"",
"resume":""
}]传给AI,让AI在编排阶段,确定每个子节点是否能应用到知识库中的内容,如果能用到,记录ID上传资料时,用AI分析成知识条目库,这是现在的方案。但是分析的条目不准确,且丢失了很多内容。 我希望在分析阶段做以下处理:
目前我能想到的困难点有两个:
结合你的方案我设计的流程如下:
筛后的文档按自然段/表格/列表块编号
例如:P000001、P000002、P000003。
提交给AI,先让AI输出知识条目数组,仅包含ID、标题和摘要
在页面中展示出AI返回的知识条目,总共多少条,用户录入一批分析多少条(因为我们现在不知道AI的能力上限,一次性提取所有段落,可能会有大量丢失,一次提取的太少又会有资源浪费,所以这是开发调试阶段的一个临时页面,让我们更好的测试出AI的能力)
按照用户输入的条数,将知识条目分批,循环询问AI,投入分好段的全文、提取的部分id、标题、摘要json数组。然AI给这些数组匹配段落,仅返回id+段落号就行
所有批次都执行完后,进行一次检查,判断是否有遗漏的段落,如果有,将完整知识条目id、标题、摘要和遗漏段落提交给AI,让AI再匹配一次,这次让AI返回匹配好的id+段落,再额外返回一个推荐舍弃段落和一个新增知识条目,即让AI分析这些遗漏短时是否有必要保留,被遗漏是否是因为没有合适的知识条目,如果是就新增条目,如果段落质量低没必要保留,就放到舍弃段落。这样所有遗漏段落就都有明确的标识了。
把第五步和第六步的结果合并,看是否还有遗漏段落,如果还有再重复执行一次第六步。最多重复执行一次,再有遗漏就直接标记为舍弃。
把前面执行返回的所有结果拼接成完整json
用程序根据json进行正文提取,形成最终结果
方案可以成立,我按你的取舍调整后,建议定版为下面这个流程。
定版流程
程序预处理
直接筛掉封面、目录、页码、空行、页眉页脚、签章页等明显无价值内容。
同时保存 filtered_blocks.json,只用于调试,不进入 AI 分析。
生成 block
对筛选后的正文生成 block 编号,例如 P000001。
block 类型包括 paragraph、table、list 等。
第一次 AI 抽取知识条目
输入编号后的全文 block。
AI 只返回候选知识条目:标题、摘要,不返回正文,不返回 ID。
程序生成 ID,例如 K000001。
第二次 AI 补充知识条目
输入全文 block + 第一次抽取出的条目标题摘要。
让 AI 判断是否有遗漏主题,并返回补充条目。
程序合并两次抽取结果,再统一编号。
页面展示调试入口
展示:总 block 数、候选知识条目数、用户输入“每批分析多少条”。
这是开发调试阶段非常有必要的,可以用来摸模型能力上限。
分批匹配段落
每批提交:全文 block + 当前批次知识条目。
AI 只做强相关匹配,不要求覆盖全部 block。
AI 返回 id + ranges。
检查遗漏 block
程序合并所有批次结果后,找出没有被任何知识条目引用的 block。
AI 兜底补漏
输入:完整知识条目列表 + 遗漏 block。
AI 必须把遗漏 block 分成三类:匹配已有条目、新增知识条目、推荐舍弃段落。
最多补漏两轮
第一次补漏后再检查遗漏。
如果仍有遗漏,再重复一次补漏。
第二次后仍遗漏的 block 放入 system_discarded_after_retry。
程序生成最终结果
程序合并所有 AI 返回结果,根据 block 编号回填正文,生成最终知识条目库。
AI 返回格式建议 分批匹配返回:
{
"matches": [
{
"id": "K000001",
"ranges": [["P000012", "P000018"], ["P000026", "P000030"]]
}
]
}
补漏返回:
{
"matches": [
{
"id": "K000001",
"ranges": [["P000080", "P000083"]]
}
],
"new_items": [
{
"title": "项目风险应对措施",
"summary": "描述风险识别、响应机制和应急处理流程",
"ranges": [["P000090", "P000095"]]
}
],
"discarded": [
{
"ranges": [["P000100", "P000102"]],
"reason": "内容为低价值格式文本"
}
]
}
我建议额外保留的处理报告
total_blocksfiltered_blocks_countcandidate_items_countmatched_blocks_countdiscarded_blocks_countsystem_discarded_after_retry_countnew_items_from_recovery_countcoverage_rate需要注意的一点 第 5 步“全文 block + 当前批次知识条目”会反复提交全文,成本和上下文压力较大,但开发调试阶段可以接受。等效果验证后,再优化成“全文摘要索引 + 相关 block 候选”也不迟。
我的结论 这个方案可以作为下一版知识库分析流程实施。关键点是:AI 只负责抽条目和匹配编号,程序负责编号、合并、补漏、回填、报告,避免正文丢失。