把好几份文档一起丢进知识库,然后问一句就想直接拿到答案,这是很多人踩坑的地方。经常答得含糊,甚至张冠李戴。多数时候不是模型笨,是问题太笼统,检索会连不相干的文档也一起抓片段,拼出来的答案自然就飘。
这篇只讲一件事:多个文档一起放知识库,怎么问才问得准。方法说穿了就一句——分清分文档提问和聚合提问两种问法,什么时候收窄、什么时候综合,心里有数。下面结合「软领DS一键本地部署大师」的本地知识库来说。
为什么多个文档一起问,答案容易飘
知识库的工作方式其实不神秘。它把每份文档切成一小块一小块,你问一句话,它按相似度找出几段最像的塞给模型,模型再照着这几段回答。文档少的时候还好;文档一多,你措辞又笼统,找回来的片段可能横跨好几份文档,有的内容还互相打架。
举个常见的场景。库里同时放着采购合同、操作手册、季度报告和会议纪要,你问一句“这个怎么弄”,它根本分不清你指的是哪一份。检索到的几段可能一段来自合同、一段来自报告,模型只能硬拼,答案看着通顺,细看却对不上。
分文档提问和聚合提问,是两种不同的问法
想问得准,先在心里把问题归个类:答案到底藏在哪一份文档里,还是要横跨好几份才拿得到。
如果答案就在某一份文档里,那就把范围收窄,这叫分文档提问。做法有两种,一是单独给这份文档建一个知识库,对话时只挂这个库;二是把文档都放一个库,但在问题里直接点名,比如问“在这份采购合同里,违约金是怎么规定的”。范围小了,检索更准,引用也好核对。
如果你要的是跨文档的对比或者汇总,比如把三份季度报告放一起看营收变化,那就用聚合提问,把相关文档放进同一个库让模型综合。这里有个坑:一定要在问题里把对比或汇总的维度写清楚,不然它还是会泛泛地答。你说“业绩怎么样”,它只能给你一段套话;你说“对比这三份报告的营收和净利润各有什么变化”,它才知道往哪儿使劲。
一句话判断用哪种
答案落在一份文档里,用分文档提问,问得越窄越准;答案要横跨多份文档,用聚合提问,并且在问题里说清要对比或汇总什么。
把这两种问法对上具体场景,就更好照着改了。同一个意思,换一种问法,检索找回来的东西完全不一样。
| 场景 | 容易问偏的问法 | 更准的问法 |
|---|---|---|
| 查某份合同条款 | 违约金怎么算 | 在这份采购合同里,违约金条款是怎么规定的(分文档) |
| 找操作步骤 | 怎么导出 | 按这份操作手册,导出报表的步骤是什么(点名文档) |
| 跨报告对比 | 业绩怎么样 | 对比这三份季度报告,营收和净利润各有什么变化(聚合,说清维度) |
| 汇总多份纪要 | 都聊了啥 | 把这几次会议纪要里定下的待办事项汇总成一份清单(聚合) |
在软件里建库导入文档,再按这两种问法提问
整个流程都在中文界面里点着走,不用打开命令行敲 ollama pull 这类命令。先把一个本地模型部署好,因为对话和知识库问答都要用到它,然后再来建库、导入文档。
建库与提问步骤
- 安装并打开「DS一键部署大师」,先按提示部署好一个本地模型。
- 进入知识库,新建一个库。想走分文档提问,就一份文档单独一个库,或者按主题分成几个库。
- 导入文档,等待分块和向量化完成。
- 回到对话页面,挂上这次要用的知识库。
- 分文档提问,就挂那个单独的库,或在问题里点名是哪份文档。
- 聚合提问,就挂含多份文档的库,并把要对比、汇总的维度写进问题里。

怎么组织知识库,其实就决定了你后面好不好问。库分得清楚,分文档提问几乎不用费劲;文档全堆一个库,那就得多在问题里点名。导入、分块和向量化这些是在本机进行的,知识库资料也保存在本地;不过部署模型、下载模型、软件更新这些环节仍然可能要联网,这点得说清楚。
大家常问
文档全放一个知识库里,行不行?
行,只是库里文档越杂,笼统问法越容易串味。想省事就多在问题里点名文档;关系不大的文档,最好还是拆到不同的库,问起来更干净。
什么时候该分文档问,什么时候该聚合问?
看答案在哪。答案就在一份文档里,用分文档提问,问得窄一点更准;要跨几份文档对比或汇总,用聚合提问,并在问题里写清对比的维度。判断标准就这一条。
我问跨文档对比,它怎么只答了其中一份?
多半是检索没把另外几份的相关片段一起找回来,或者你的问题没点明要对比。把对比对象和维度都写进问题;实在不行,就分开各问一遍,再自己合起来看。
导入的文档需要联网吗?资料存在哪里?
导入、分块和向量化在本机进行,知识库资料保存在本地。要提醒的是,部署模型、下载模型、软件更新这些仍然可能需要网络,不是从头到尾都不联网。
文档很多、电脑一般,会不会跑不动?
知识库检索本身不算重,真正吃配置的是你部署的那个模型。机器一般就选小一点的兼容模型,别硬上大模型;具体能不能流畅跑,还得看你自己电脑的实际情况。

提示