WeWorkBuddy

[分享创造] 用 380 行 Python 给公司做了个离线知识库(带出处、带权限)

公司制度文档散在网盘、群聊、个人电脑,新人问、老人答,答的不一定是现行版本。试过 SaaS 知识库,卡在「数据出内网」和「按人头收费」两点,就自己写了一个。 只做一件事:把 Markdown 丢进 docs/,就能提问,回答带《文档》/章节出处,能点开核对原文;文档带可见范围(普通员工查不到财务制度,财务角色能看到)。全程不联网,零第三方依赖,一个文件 380 行。 几个实现上的小设计: 分块:维护标题栈 + 段落,约 420 字一块,每块自带「《员工报销制度》/ 报销标准」这样的路径,回答时直接当引用 中文分词:二元组切分,不依赖分词库,英文数字按词切 召回:BM25 + TF-IDF 双路加权。第一版问「出差住宿报销上限」,第一条返回的是「差旅餐补」——加「查询词覆盖率」加权后才稳定命中住宿段落 回答默认抽取式,不生成。制度类问题最怕编造,返回原文让人自己核对 部署就两条命令: python3 kb.py ingest 建索引, python3 kb.py serve 起服务,目录拷到内网机器就能用。 演示( 89 秒纯录屏): https://youtu.be/cNloexteD

Read original source
Source page screenshot: [分享创造] 用 380 行 Python 给公司做了个离线知识库(带出处、带权限)
Source page screenshot · www.v2ex.com

Source record

Research analysis

What changed

Source account: 公司制度文档散在网盘、群聊、个人电脑,新人问、老人答,答的不一定是现行版本。试过 SaaS 知识库,卡在「数据出内网」和「按人头收费」两点,就自己写了一个。 只做一件事:把 Markdown 丢进 docs/,就能提问,回答带《文档》/章节出处,能点开核对原文;文档带可见范围(普通员工查不到财务制度,财务角色能看到)。全程不联网,零第三方依赖,一个文件 380 行。 几个实现上的小设计: 分块:维护标题栈 + 段落,约 420 字一块,每块自带「《员工报销制度》/ 报销标准」这样的路径,回答时直接当引用 中文分词:二元组切分,不依赖分词库,英文数字按词切 召回:BM25 + TF-IDF 双路加权。第一版问「出差住宿报销上限」,第一条返回的是「差旅餐补」——加「查询词覆盖率」加权后才稳定命中住宿段落 回答默认抽取式,不生成。制度类问题最怕编造,返回原文让人自己核对 部署就两条命令: python3 kb.py ingest 建索引, python3 kb.py serve 起服务,目录拷到内网机器就能用。 演示( 89 秒纯录屏): https://youtu.be/cNloexteD

Version & cost evidence

Recent records to compare: “Show HN: ActiveDNS, a free DNS search service” (Show HN, Nov 12, 2026); “Show HN: ThreeSweep – switch macOS windows with single trackpad swipe” (Show HN, Nov 12, 2026). Shared themes are navigation hints; they have not been verified as the same need or independent corroboration.

Who is affected

Identify the existing workflow this change affects before recommending an upgrade. Launch attention does not establish improvement; an API, pricing or availability change may instead create migration work.

Missing comparison points

Missing checks: old versus new behavior, affected plans and regions, availability date, compatibility, rollback path and cost under the same workload.

Migration check

Save the release or policy notice, run the same task on the old and new option, and compare outputs and the full bill. For retirement notices, verify the deadline before scheduling migration.