跳转到内容

知识库与文档

知识库是文档的容器。一个知识库对应一组文档和分块,检索时不会跨库。

新建知识库后进详情页上传文档。上传是 multipart 请求:服务端先把文件落盘,再入队,请求立刻返回。

之后由 worker 做四件事:解析、切分、向量化、写索引。页面上的文档状态会跟着变:

  • queued:已入队,等 worker
  • processing:worker 正在处理
  • ready:可以检索
  • failed:处理失败,详情里有错误

单份文档的处理上限是 30 分钟,worker 同时处理 10 个任务。超过上限或 worker 没起,文档会停在队列里。

v5.0.2 只接受 .md、.markdown、.txt,大小写不敏感。服务端也按扩展名白名单拒绝其他类型。

PDF、Word、HTML 需要你先转成 Markdown 或纯文本。仓库里没有内置这些格式的解析器。

两种入口:

  • 单份文档:文档详情里的重新索引。
  • 整个知识库:知识库详情里的重新索引。

换过 embedding 模型、或者某份文档处理失败时用。重新索引会重新切分、重新向量化;旧分块会被替换。

整个知识库重跑可能很久,注意 worker 的并发和模型服务的限流。

POST /api/v1/knowledge-bases/{id}/search 直接返回命中的分块、相似度和文件名。它不经过对话,也不调用 chat 模型。

回答不对时先看这里:

  • 没有命中:文档没进库、切分不合适、或者 embedding 模型不对。
  • 命中了但排序不对:问题表述和文档用词差太远,或者 topK 太小。
  • 命中是对的,但回答没用上:问题在上下文组装或模型,不在检索。

这个接口是只读的,不会改数据。

删文档会删掉数据库记录和磁盘上的原始文件;删知识库会级联删掉它下面的文档和分块。操作不可撤销,删之前先确认备份。