首页/ 资讯/ 正文
技术博客 2026-07-07 · 5 分钟阅读

把文档做成「可问·可查·可视」:知识库背后的检索与图谱工程

工程团队

知识库常见的形态有两种:一种是能搜关键词的 wiki,一种是能问答的向量库。我们想把两者合一——让同一批 Markdown 文档,既能被语义检索、又能被 AI 问答、还能可视化成一张关系图。这就是知识库的定位:可问 · 可查 · 可视。本文拆解它背后的工程实现。

知识图谱

可查:从关键词到语义

文档以 Markdown 存储,检索侧做了三件事:

  • 分块 + 嵌入:正文按段落贪心打包成不超过设定长度的块,块间保留重叠(chunk + overlap),并给每块前置标题以带上主题上下文;逐块用 BAAI/bge-m3 生成向量,存进 PostgreSQL 的 pgvector 列并建 HNSW 索引。
  • 混合召回 + 重排:一次检索同时跑关键词(全文)与向量(语义)两路召回,合并去重后用 bge-reranker 精排取 topN,兼顾"字面命中"与"语义相近"。
  • 查询改写:查询先经一个轻量 LLM 改写(纠错 / 扩展同义),再进检索,提升召回率。
一个容易踩的坑:纯语义检索会把"语义相近但其实无关"的内容也召回。我们的做法是——只返回与问题有词面重叠的来源,杜绝问候语、元问题硬凑无关文章。

可视:双向链接自动长成关系图谱

文档之间用 [[标题]] 双向链接(wiki 风)。系统在此之上自动生成两类可视:

  • 关系图谱:抽取文档实体与链接,生成可拖拽的力导向图——拖拽移动、悬停高亮、点击进入文档(GraphRAG 思路)。
  • 被引用 / 未链接提及:自动聚合"哪些文档引用了本文",以及"提到了本文标题但还没建链接"的文档,方便补全知识网络。

正文渲染走 goldmark(GFM 扩展:表格 / 任务列表 / 删除线),并内建 Mermaid 图的拖拽可视编辑器——流程图、时序图不用手写语法也能画。

可问:检索增强的问答

AI 问答页基于 RAG:先检索与问题相关的块,拼进 prompt,交 LLM 作答,并把来源文档一并列出可溯源。为了成本与延迟可控,嵌入 / 重排 / 工具 / 画像四条模型通道各自独立配置——嵌入用 bge-m3、重排用 bge-reranker、工具类问答可挂更快的模型,后台按服务商随时切换。

几个工程取舍

  • 为什么用 PostgreSQL + pgvector,而不是独立向量库:文档元数据、全文、向量在同一套库里,事务一致、备份与运维只有一处,省掉跨库同步的复杂度,对企业私有化部署尤其友好。
  • 启动期回填:新增与存量文档的向量在服务启动时后台回填,不依赖"首个用户请求"触发,避免首查变慢。
  • Wiki 级体验:每篇文档有目录(TOC)、上一篇 / 下一篇、双向链接与反向链接,读起来像一本可导航的手册,而不是一堆孤立页面。

不止是"公开文档"

除了公开知识库,每个会员还有个人知识库(默认仅自己可见),可以"申请公开"经管理员审核后并入公共库;批量灌库有 Open API,方便把已有资料一键导入。前台访问控制按"前端访问权限组"逐层生效,受限内容不会出现在列表、详情或首页板块里。

知识库的价值不在于存了多少文档,而在于文档之间能不能被检索、被追问、被看见关系。可问、可查、可视——这三件事凑齐,静态文档才真正变成"活"的知识。

使用和体验

知识库产品页面:点击进入