本文介绍如何用 Python 搭建一套自动化的知识库流水线,支持从豆包、Kimi 等平台 AI 对话记录中自动提取实体/概念、生成双向链接 Wiki 页面,并内置完整的健康检查(Health Check)机制。项目开源实现参考:github.com/JuneDylan/L…
作为开发者,你是否也有这样的困扰?
和Kimi、豆包、Claude聊技术、调bug、查方案,累计攒了上百条AI对话,每一条都藏着解决问题的关键思路——可能是深夜调试async/await的细节,可能是大模型部署的踩坑经验,也可能是论文选题的多轮打磨。但这些对话导出后,要么扔进文件夹吃灰,要么杂乱无章,3个月后遇到同类问题,还是得重新打开AI重复提问,白白浪费时间。
AI降低了知识获取的成本,却没解决知识留存与复用的核心痛点。于是我参考Karpathy的LLM Wiki理念,做了本土化工程化落地,开发了这款本地LLM知识库编译器,目前已开源!
无需复杂部署,本地就能跑通,支持零代码/轻代码两种模式,能自动把零散的AI对话、公众号文章、论文,转化为结构化、可检索、可关联的知识体系,目前已处理300+条对话,生成325个知识页面、169个技术概念、144个实体对象,知识库健康评分87/100。
本文将从「项目核心价值→架构设计→源码解析→实操教程→开源地址」,手把手教你搭建属于自己的本地知识库,全程干货,建议收藏备用,文末附完整开源仓库链接~
一、项目核心定位:不是笔记软件,是「知识编译器」
很多人会把它和Obsidian、Notion这类笔记软件混淆,但核心差异很明显:笔记软件需要你手动整理、手动分类、手动建链接,而这款LLM知识库编译器,核心是「让AI替你做所有体力活」。
类比程序员写代码的流程:你负责定义「知识规则」(Schema),LLM负责「编译执行」(提取实体、建立关联、格式化输出),你的角色从「笔记搬运工」,变成「知识架构师」。
核心优势(开发者最关心的3点):
- ✅ 本地优先:所有数据存储在本地,Obsidian可视化管理,无需上传云端,隐私安全有保障(适配Obsidian本地存储特性,支持离线访问);
- ✅ 全自动化:脚本一键批量处理AI对话、论文、公众号文章,自动生成结构化知识页,无需手动整理;
- ✅ 可扩展:基于Python开发,源码简洁,支持自定义知识Schema、适配多平台AI对话格式(Kimi/豆包/Claude),可根据自身需求二次开发。
补充说明:项目核心依赖Obsidian实现知识可视化和双向链接,Obsidian作为免费开源的本地笔记工具,支持知识图谱、Canvas画布等功能,完美适配本地知识库的管理需求(官网:obsidian.md/,可直接下载安装,无需…
二、架构设计:3层架构,极简可落地
项目全程文件系统驱动,无复杂依赖,哪怕是新手也能快速看懂架构、跑通项目,核心分为3层,对应源码目录结构,看完就能上手改代码。
2.1 核心架构拆解
# 项目源码目录
llm-wiki/
├── raw/ # 原始素材层(只读,不修改)
│ ├── dialogs/ # AI对话素材(Markdown格式,支持多平台导出)
│ └── articles/ # 公众号/论文素材(Obsidian剪藏或手动导入)
├── wiki/ # 知识输出层(LLM自动生成,结构化存储)
│ ├── concepts/ # 技术概念页(如:液态神经网络.md)
│ ├── entities/ # 实体页(如:HighD数据集.md、LLM.md)
│ └── sources/ # 来源溯源页(对应原始对话/文章,便于回溯)
├── src/ # 核心脚本层(开源核心,可直接复用)
│ ├── __init__.py
│ ├── config.py # 配置文件(API密钥、路径等,可自定义)
│ ├── ingest_dialogue.py# 单对话处理脚本(核心:对话解析+知识蒸馏)
│ ├── batch_ingest.py # 批量处理脚本(核心:批量蒸馏+增量更新)
│ ├── healthcheck.py # 知识库健康检查脚本(断链、重复检测)
│ ├── fix_missing_pages.py # 断链修复脚本(自动创建占位页)
│ └── slugify.py # Slug统一工具(解决路径一致性问题)
├── template/ # 模板目录(零代码模式专用)
│ ├── raw/ # 零代码素材目录
│ └── wiki/ # 零代码知识输出目录
├── .env # API配置文件(存放LLM密钥,不提交Git)
├── requirements.txt # 依赖清单(一键安装)
└── README.md # 详细文档(新手必看)
2.2 各层核心作用(结合源码逻辑)
- 原始素材层(raw/) :所有原始数据的“仓库”,支持AI对话(Markdown格式)、公众号文章(Obsidian Web Clipper剪藏)、论文(PDF/Markdown),全程只读,避免误删原始上下文,确保知识可溯源。
- 知识输出层(wiki/) :LLM自动生成的结构化知识,每一个页面都遵循统一Schema,包含Frontmatter标签、双向链接、参考来源,可直接用Obsidian打开,支持搜索、知识图谱可视化。
- 核心脚本层(src/) :项目的“大脑”,所有自动化逻辑都在这里,也是开源代码的核心,下面会重点解析关键脚本的实现思路。
三、核心源码解析:4个关键脚本,读懂自动化逻辑
项目的核心价值的是“自动化”,而自动化的关键就在4个核心脚本。这里不贴完整代码(避免冗余),只解析核心逻辑、关键代码片段和使用场景,帮你快速理解原理,也方便你基于源码二次开发。
3.1 对话解析脚本:ingest_dialogue.py(单文件处理核心)
作用:处理单条AI对话,完成“对话解析→LLM结构化→知识页生成”,是整个项目的基础,新手可先从这个脚本入手,理解核心流程。
核心逻辑(3步走):
# 核心逻辑片段(简化版,完整代码见开源仓库)
def ingest_dialogue(file_path):
# 1. 解析对话:适配Kimi/豆包/Claude导出格式,提取核心信息
dialogue = parse_dialogue(file_path) # 自定义解析函数,提取问题、结论、代码块
questions = dialogue["questions"] # 对话中的核心问题
conclusions = dialogue["conclusions"]# 对话中的最终结论
code_blocks = dialogue["code_blocks"]# 对话中的代码片段(按语言分类)
# 2. 调用LLM,按预设Schema做结构化分析(核心Prompt设计)
llm_response = call_llm_api(
prompt=generate_distill_prompt(questions, conclusions, code_blocks),
model="qwen-max" # 支持豆包、Kimi、OpenAI,可在config.py中修改
)
# 解析LLM返回,提取实体、概念(按预设分类)
entities = llm_response["entities"] # 实体:algorithm/dataset/tool等
concepts = llm_response["concepts"] # 概念:method/principle/domain等
# 3. 自动生成知识页(Markdown格式)
generate_source_page(file_path, dialogue) # 生成来源溯源页
generate_concept_pages(concepts) # 生成概念页
generate_entity_pages(entities) # 生成实体页
return "处理完成,知识页已生成至wiki目录"
# 关键:预设Schema,确保LLM输出统一(避免自由发挥)
def generate_distill_prompt(questions, conclusions, code_blocks):
prompt = f"""请将以下AI对话中的内容,按以下Schema提取结构化信息:
实体分类(entities):person/organization/model/algorithm/dataset/venue/tool/project/hardware
概念分类(concepts):method/principle/paradigm/metric/phenomenon/domain
要求:1. 只提取对话中明确出现的内容;2. 每个实体/概念标注对应类型;3. 不添加无关信息。
对话问题:{questions}
对话结论:{conclusions}
代码片段:{code_blocks}"""
return prompt
使用场景:处理单条重要的AI对话(如复杂技术调试、论文思路探讨),执行命令即可生成对应的知识页:
python src/ingest_dialogue.py raw/dialogues/kimi-液态神经网络.md
3.2 批量处理脚本:batch_ingest.py(规模化核心)
作用:当AI对话积累到几十条、上百条时,单文件处理效率太低,这个脚本可批量扫描素材目录,增量处理新文件,避免重复生成,是规模化搭建知识库的关键。
核心逻辑(关键代码片段):
def batch_ingest():
# 配置素材目录路径(可在config.py中修改)
dialogs_dir = "raw/dialogues"
articles_dir = "raw/articles"
# 1. 获取所有素材文件,过滤已处理文件(增量处理)
processed_files = load_processed_files() # 记录已处理文件,避免重复
all_files = get_all_files(dialogs_dir, articles_dir) # 获取所有素材文件
new_files = [f for f in all_files if f not in processed_files]
# 2. 批量处理每一个新文件
for file in new_files:
try:
if file.endswith(".md") and "dialog" in file:
ingest_dialogue(file) # 处理AI对话
else:
ingest_article(file) # 处理公众号/论文(适配剪藏格式)
record_processed_file(file) # 记录已处理文件
print(f"✅ 处理完成:{file}")
except Exception as e:
print(f"❌ 处理失败{file}:{str(e)}")
print(f"批量处理完成,共处理{len(new_files)}个新文件")
使用场景:每天花1分钟,将新的AI对话、剪藏的文章放入对应目录,执行以下命令,一键完成批量知识蒸馏:
python src/batch_ingest.py
3.3 健康检查脚本:healthcheck.py(知识库维护核心)
作用:知识库用久了,难免出现断链、重复页面、标签不规范等问题,这个脚本可从9个维度校验知识库质量,相当于知识库的“Linter”,确保知识体系的一致性。
核心校验维度(对应源码逻辑):
def health_check():
check_results = {
"frontmatter_completeness": check_frontmatter(), # Frontmatter完整性
"broken_link": check_broken_links(), # 断链检测(核心)
"isolated_pages": check_isolated_pages(), # 孤立页面(无关联链接)
"source_validity": check_source_validity(), # 来源有效性(溯源是否正常)
"tag_normalization": check_tag_normalization(), # 标签规范化
"content_quality": check_content_quality(), # 内容质量(无空页面)
"index_completeness": check_index_completeness(),# 索引完整性
"graph_consistency": check_graph_consistency(), # 知识图谱一致性
"duplicate_pages": check_duplicate_pages() # 重复页面检测
}
# 计算健康评分(满分100)
score = calculate_health_score(check_results)
# 输出报告
generate_health_report(check_results, score)
return score
使用场景:每次批量处理后,执行以下命令,查看知识库健康状态,及时修复问题:
python src/healthcheck.py
检查项详解:
补充:如果检测出断链问题,可执行
python src/fix_missing_pages.py,自动批量创建缺失的占位页,快速修复断链,提升健康评分(亲测从74分涨到87分)。
3.4 Slug统一工具:slugify.py(避坑核心)
这是我踩过最深的坑!文件系统驱动的知识库,路径一致性就是生死线,不同脚本Slug生成逻辑不统一,会导致断链、文件名乱码(Windows下尤为明显)。
核心解决方案(统一Slug生成逻辑,源码片段):
import re
def slugify(text: str) -> str:
"""统一Slug生成逻辑,避免路径混乱"""
text = text.lower().strip()
text = re.sub(r'[\/]', '-', text) # 关键:将路径分隔符替换为横线,避免生成子目录
text = re.sub(r'[^\w\s-]', '', text) # 移除非字母/数字/横线/空格的字符
text = re.sub(r'[-\s]+', '-', text) # 多个横线/空格合并为一个横线
return text.strip('-') # 移除首尾横线
# 所有脚本调用该函数生成文件名,确保路径一致性
def generate_file_path(category, name):
slug = slugify(name)
return f"wiki/{category}/{slug}.md"
避坑提示:无论后续新增什么脚本,只要涉及文件名、路径生成,都调用这个slugify函数,可避免90%的路径相关问题,这也是开源项目中最关键的细节之一。
四、实操教程:5分钟跑通项目(零代码/轻代码任选)
项目已做极简适配,新手无需懂复杂代码,零代码模式可手动操作,有Python基础的可使用脚本自动化,
4.1 前期准备(必做)
- 下载安装Obsidian:访问官网obsidian.md/,根据自身系统(Win…
- 下载开源源码:克隆GitHub仓库(文末附链接),解压至本地,无需复杂配置;
- 准备AI助手:豆包、Kimi、ChatGPT均可(零代码模式用手动对话,轻代码模式需配置API密钥);
- (轻代码模式)配置Python环境:安装Python 3.8+,执行
pip install -r requirements.txt,一键安装所有依赖。
4.2 零代码模式(推荐新手,无需编程)
适合不懂Python的新手,全程手动操作,核心靠AI完成知识蒸馏,Obsidian管理知识:
-
导入素材:
- AI对话:复制与AI的完整对话,保存为Markdown文件(后缀.md),放入
template/raw/dialogs目录; - 公众号/论文:用Obsidian的Web Clipper插件(需在Obsidian社区插件中开启)剪藏文章,自动存入
template/raw/articles目录。
- AI对话:复制与AI的完整对话,保存为Markdown文件(后缀.md),放入
-
知识蒸馏:
- 复制素材内容,粘贴给AI,搭配仓库中
prompt.md的蒸馏提示词(可直接复制使用); - 复制AI生成的结构化内容,按“概念/实体/来源”分类,保存至
template/wiki对应目录。
- 复制素材内容,粘贴给AI,搭配仓库中
-
日常查阅:用Obsidian打开
template目录,搜索关键词即可快速定位知识,点击双向链接串联相关内容,借助Obsidian的知识图谱,直观查看知识关联。
4.3 轻代码模式(自动化批量处理,适合开发者)
适合有基础Python经验的开发者,一键批量处理,解放双手:
- 配置API:在项目根目录的
.env文件中,填写AI API密钥(支持豆包、Kimi、OpenAI),格式如下:LLM_PROVIDER=qwen # 可选:qwen/chatgpt/kimi `` LLM_API_KEY=你的API密钥 ``LLM_URL=对应API地址(可选,部分平台需填写) - 批量处理:执行
python src/batch_ingest.py,脚本自动扫描raw目录,批量处理所有素材,生成知识页; - 维护知识库:执行
python src/healthcheck.py检测问题,执行python src/fix_missing_pages.py修复断链; - 检索知识:执行
python src/query.py "关键词",一键调出所有关联的知识内容,快速复用。
4.4 核心注意事项(避坑必看)
- 原始素材只读:
raw和template/raw目录下的素材,仅用于存档,不修改,所有编辑操作在wiki目录下进行,便于溯源; - AI输出需核对:LLM可能出现分类错误、信息遗漏,处理后花1-2分钟核对,重点检查核心逻辑和术语准确性;
- 版本管理:建议用Git对项目目录做版本控制,避免误删内容,便于回溯历史版本;
- 插件适配:Obsidian可安装Dataview、Calendar等社区插件,提升知识库管理效率(开启社区插件需在Obsidian设置中关闭限制模式)。
五、项目开源与后续规划
目前项目已完整开源,所有脚本均保留详细注释,新手可快速上手,开发者可基于源码二次开发,适配自己的知识管理需求。
开源仓库地址(点击直达)
👉 **GitHub:github.com/JuneDylan/L… **
仓库包含:完整源码、详细README、Prompt模板、示例素材、Obsidian配置教程,新手克隆后可直接跑通。
后续规划(欢迎贡献代码)
- 适配更多AI平台对话格式(目前支持Kimi/豆包/Claude,后续新增GPT-4o、通义千问);
- 新增PDF批量处理功能,支持直接解析PDF论文,提取知识;
- 优化Obsidian插件适配,新增一键生成知识图谱功能;
- 完善中文文档,新增视频教程,降低新手上手门槛。
六、为什么做这个项目?
作为常年和AI打交道的开发者,我深刻体会到:技术人的核心竞争力,不是记住多少知识,而是能快速复用多少知识。
我们每天花大量时间和AI对话、查资料,本质上是在“生产知识”,但如果不做好留存和复用,这些时间就相当于白费——3个月后遇到同类问题,还是得重新提问、重新踩坑。
这款LLM知识库编译器,本质上是帮开发者“留住自己的思考”:把零散的AI对话、技术笔记,变成可检索、可关联、可复用的知识体系,让AI不仅是“问答工具”,更是“知识沉淀助手”。
最后,欢迎大家克隆源码、测试使用,遇到问题可在GitHub提交Issue,也欢迎贡献代码、提出优化建议~