上传文档后提问,系统提示“找不到相关内容”,通常要先分清两件事:文档有没有完成解析和向量化入库,以及检索请求有没有真正打到绑定的向量库上。分段没完成,常见表现是文档列表状态停在中途,或分段数量为 0;向量库没生效,常见表现是文档显示已完成,但检索接口直接返回空数组。判断顺序建议从文档状态查到向量库配置,再用最小检索请求验证,最后才怀疑提问方式。这三步能帮你把“没入库”和“没召回”分开。
处理方向是三步分叉:先看文档列表的处理状态与分段数量,再核对知识库绑定的向量库地址与集合名,最后用带原文关键词的最小检索请求直查向量库。直查返回空,偏向入库或配置问题;直查有结果而问答仍说找不到,偏向问答层过滤、相似度阈值或提问改写。所有结论都要结合自己的部署环境和版本确认,不要照搬字段名。
在文档列表看处理状态与分段数量
这一步的目的是确认文档到底有没有走到“向量化完成”。在知识库的文档列表里,一般能看到每个文档的处理状态和分段数量两个字段。状态字段的取值通常是待处理、解析中、向量化中、已完成、失败这几种,不同版本措辞可能不同,但含义接近:只有走到已完成,才说明切分和向量写入这一步跑完了。
分段数量为 0 时,页面通常会有几种提示方式:状态停在解析中不动、状态显示失败并给出错误摘要、或者状态已完成但分段数显示 0。第一种多半是解析任务卡住或文件格式不被支持;第二种要点开错误详情看是解析异常还是向量库写入异常;第三种比较隐蔽,说明解析出了内容但切分或写入环节被跳过,需要重点怀疑向量库连接。
- 操作动作:找到刚上传的文档,看状态字段和分段数量两个值。
- 验证方式:分段数量大于 0,才继续往下查;等于 0 或状态失败,先解决入库这一步。
- 风险边界:文档列表刷新有延迟,刚上传就判断容易误判,可以先等一个处理周期再看。
检查知识库绑定的向量库配置项
如果文档状态显示已完成、分段数量也正常,但检索仍然空,就要排除向量库地址或集合名写错。这类配置一般在知识库(数据集)的设置页,或者环境变量、配置文件里,位置随部署方式不同:界面化部署通常在知识库设置里选向量库类型并填连接信息,自部署则更多写在环境变量中。
需要核对的字段通常包括:向量库类型是否和你实际部署的一致、服务地址和端口、集合名或索引名、以及 embedding 模型对应的向量维度。账号密码这类字段只核对其是否已配置、是否指向正确实例,不要把真实密钥粘贴到任何排查记录或工单里,用占位符代替即可。
# 需要核对的配置项(字段名以你实际版本为准,下面是通用占位)
向量库类型: <例如某一种向量库实现>
服务地址/端口: host:port
集合名/索引名: <知识库对应的 collection / index>
向量维度: <必须与 embedding 模型输出维度一致>
账号/密钥: <已配置即可,不要外泄明文>
集合名写错是很容易被忽略的一种:文档实际写进了 A 集合,知识库配置里读的是 B 集合,两边都“正常”,但检索永远查不到。核对方式是把知识库配置里的集合名,和文档入库时使用的集合名对一遍,确认是同一个。
用最小检索请求直接查向量库返回
这一步的目的是判断是检索层无结果,还是问答层把结果过滤掉了。绕过问答流程,直接向检索接口发一个最小请求,看它返回什么。字段名和路径随版本不同,下面是通用骨架,路径和参数名要替换成你环境里实际可用的。
POST /<你的检索接口路径>
Content-Type: application/json
Authorization: Bearer <你的调用凭证>
{
"datasetId": "<知识库ID>",
"text": "<原文中明确出现的词>",
"limit": 5,
"similarity": 0.2,
"searchMode": "embedding"
}
返回空结果时,按下面几点排查:datasetId 或集合名是否与文档入库时一致;embedding 模型和向量维度是否和建库时一致;similarity 阈值是否设得太高,先用较低阈值试;searchMode 是否用了全文或混合模式,而索引只建了向量;调用凭证是否对得上,有些实现权限不足时返回空数组而不是报错,容易误判成“没数据”。如果这个请求能返回片段,说明入库和检索链路是通的,问题更可能在问答层的过滤或提问改写上。
换一个原文中明确出现的词做检索测试
目的是区分是提问方式问题,还是入库本身失败。测试词的选择方法很简单:回到你上传的文档里,挑一个在原文中连续、完整出现的词或短句,比如某个专有名词、某个编号,避免用同义改写或口语化提问。这样能排除向量相似度带来的偏差。
预期命中片段是:检索结果里出现包含该测试词的那一段原文,最好能对上你上传文档里的原句。结果记录建议保留三项:测试词、返回是否为空、命中的片段内容。如果换词后能命中,说明入库成功,之前的空结果偏向提问改写或阈值;如果换词后仍然为空,说明问题更可能在入库或配置环节,回到前两节再看一遍。
- 测试词要短、要连续出现,不要用整段句子。
- 一次只改一个变量:先换词,不要同时改阈值和模式。
- 记录时保留原始返回,便于和修复后对比。
重新上传一份小文档走完整流程
用一个最小样本复现,能确认修复是否真的生效。文档内容可以只有几行,但要包含一个容易检索的独特词组,例如“测试知识库编号 ABC-001 用于流程核对”,确保这个词在别处不会出现。
测试知识库编号 ABC-001 用于流程核对
本文档仅用于验证上传、分段与检索链路是否完整。
上传后观察处理状态变化:从待处理到解析中、向量化中,再到已完成,分段数量应大于 0。然后用刚才那个独特词组发一次最小检索请求,预期能返回包含这句话的片段。如果状态能走到已完成、最小检索也能命中,说明分段和向量库这一步是通的,之后再回到真实文档和真实提问验证。如果小文档也检索不到,优先怀疑向量库配置和维度,而不是文档本身大小或格式。