Repository navigation
feat: 把知识库从「静态文档集」升级为可检索、可消费的知识引擎 - #4
Merged
Merged
Conversation
站点此前只有「浏览」一种能力:搜索是把 163 篇正文前 6000 字塞进一个 1.6 MB 的 JSON 全量串扫,也没有标签、相关推荐、RSS,产出物只能给人看。 这轮补的是「用什么方式都能用上」的那部分。 检索 - 新增 scripts/kb.py 作为公共引擎(解析/分词/倒排索引/相似度)。 - 搜索改为预生成倒排索引 + BM25(k1=1.5 b=0.75),标题命中加权。 - 中文用「单字 + bigram」切词:无分词器时召回与体积的最佳折中。 - 裁掉 df=1 的词与超高频词,索引 3.8 MB → 1.4 MB(gzip 0.5 MB), 实测检索质量零变化;首屏不再拉索引,第一次输入才加载。 新能力 - 相关文档:按 tf-idf 余弦相似度,每篇推荐 4 篇(同领域优先)。 - 标签体系:自动抽取术语,新增 tags.html / tags.json。 - 阅读体验:本页目录(TOC)、锚点、阅读时长、分类面包屑。 - 机器可读导出:docs.json / graph.json / tags.json / feed.xml / sitemap.xml / robots.txt —— 无需爬 HTML 即可二次开发。 - 浅色模式适配。 质量守门(新增两道 CI 检查) - check_docs.py:管「里面写的东西还成立吗」——必备内容槽位、来源数量、 日期格式、标题重复、正文过短、未来日期。 - check_site.py:管「构建成功但站点坏掉」——站内链接、索引 docId 越界、 docs.json 指向的页面、sitemap/canonical/RSS 同源。 - pages.yml 发布前先跑站点自检。 本地验证:gen_index/check_docs/build_site/check_site/check_links 全绿。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
让知识库除了「能看」之外,变得「能被检索、能被程序消费、能被自动守住质量」。
为什么要做
现有站点只有「浏览」一种能力:搜索是把 163 篇正文前 6000 字塞进一个 1.6 MB 的 JSON 做全量子串扫描;没有标签、没有相关推荐、没有 RSS;产出物只有 HTML,脚本/AI 想用只能先爬。
这轮补齐的就是缺口。
检索:从「全量串扫」到「倒排索引 + BM25」
scripts/kb.py作为公共引擎(解析 / 分词 / 倒排索引 / 相似度 / 标签)。抽出来是因为build_site.py、check_docs.py都要用同一套定义,散在多处必然漂。同一组查询在 Python 与浏览器端结果完全一致(已在 Node 里复跑验证)。
新增能力
tags.html/tags.jsondocs.json/graph.json/tags.json/feed.xml/sitemap.xml/robots.txtprefers-color-scheme适配docs.json让脚本、分析工具、AI 应用无需爬 HTML 就能消费整个库。质量守门:新增两道 CI 检查
这是本次最重要的部分——内容维度不可靠是这个库最大的风险,163 篇(还会继续加)靠人维护必然漂移。
check_docs.py—— 管「里面写的东西还成立吗」:必备内容槽位(概述/进展/技术/趋势/来源)、参考来源数量(≥5)、日期格式、标题重复/过长、正文过短、未来日期。按语义槽位 + 命名变体判断,不逼所有人用同一个标题(库里本来就有「核心脉络与关键里程碑」这类更贴切的写法)。check_site.py—— 管「构建成功但站点坏掉」:站内链接是否有效、检索索引 docId 是否越界、docs.json指向的页面是否存在、sitemap/canonical/RSS 是否同源。构建成功 ≠ 站点可用。pages.yml发布前先跑站点自检:宁可不上线,也不让坏产物出去。check_docs.py首次运行就发现了 9 篇的章节偏差,逐条核对后确认是命名变体而非缺陷,因此把校验改成语义槽位匹配,而不是硬性要求统一标题。本地验证
兼容性
docs/内容,Markdown 仍是唯一真相源。search.json被search-index.json取代;旧页面模板已同步更新,不存在半新半旧。