Large-Language-Models
可解释AI知识图谱问答系统:爬取Wolfram MathWorld构建结构化知识库,替代RAG的哈希
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
可解释AI知识图谱问答系统:爬取Wolfram MathWorld构建结构化知识库,替代RAG的哈希
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Vincent Granville — xLLM & GenAI 先驱,MLTechniques.com 创始人
你问 GPT:「Poisson Binomial Process 是什么?它和普通泊松过程有什么不同?」
GPT 含糊其辞,给了你一个通识性答案。你不甘心,继续追问「它和 Binomial Process 的关系」,它开始编造细节——幻觉开始了。
但如果你有一个工具,能从 Wolfram MathWorld 的数学百科全书里,精确定位到「Probability & Statistics」分类下的每个词条,构建起词与词之间的语义关系网络,再把 GPT 的通用问答,转化为对这个结构化知识图谱的查询……
这就是 xLLM(Extreme Large Language Model)要做的事。
本项目的作者 Vincent Granville,不是 AI 圈的新人。
他的简历上写着:剑桥大学博士后、NISS(美国国家统计科学研究所)研究员,在 Journal of the Royal Statistical Society 和 IEEE TPAMI 等顶级期刊发表论文,被引 500+ 次。2010 年代,他创办了 Data Science Central,2020 年被 TechTarget 收购。2023 年底,他创立 MLTechniques.com,专注可解释 AI 和新型神经网络的研发。
Granville 同时是 NVIDIA GenAI 影响者(LinkedIn 18 万粉丝),也是初创公司 BondingAI 的联合创始人和首席 GenAI 科学家。
xLLM 项目,正是他在 GenAI 时代交出的一份技术答卷。
xLLM 的核心理念,可以用一句话概括:「不依赖黑箱 LLM 的内部知识,而是给它配备一个外部的、结构化的知识图谱。」
整个系统的数据来源是 Wolfram MathWorld 的「Probability & Statistics」分类。整个工作分为三个阶段:
阶段一:爬取与解析
crawl_directory.py 从 MathWorld 种子 URL 出发,按层级遍历目录节点,逐页抓取词条页面。它通过解析 HTML 结构(<ul class="breadcrumb"> 面包屑导航、<!-- Begin Content --> 内容区域、<h2>See also</h2> 相关词条区块),将原始 HTML 转换为结构化文本。brightdata.py 集成了 BrightData 的代理池,tor_crawling.py 则通过 Tor 网络实现匿名爬取,规避反爬限制。
爬取结果保存在 crawl_final_stats.txt 中,每行格式为「URL + 层级标签 + 内容摘要」,全量约 1.5 万条 URL。
阶段二:构建知识图谱(xLLM5)
xllm5.py 读取爬取数据,构建四个核心哈希表:
xllm5_util.py 提供文本处理工具库,包括 UTF-8 特殊字符映射( 、é 等 HTML 实体转义)、停用词过滤、autocorrect 拼写纠错、pattern.text.en.singularize 单数化等。
最终,用户查询(自然语言问题)通过哈希表匹配,返回相关词条列表,生成高质量的增强 prompt,输入 GPT 或本地 LLM。
阶段三:进化到 xLLM6——x-embeddings 与分类法发现
xLLM6 是当前最新稳定版本,相比 xLLM5 有两个关键升级:
xllm6/build-taxonomy/ 模块通过 taxonomy.py 和 reallocate.py,从词条共现关系中自动推断隐藏的分类结构(taxonomy),输出 xllm6_connectedTopWords.txt(高频连接词)和 xllm6_wordGroups.txt(词组聚类)企业级功能在 xllm6/enterprise/ 目录中,包括 PDF_Chunking_Nvidia.py(NVIDIA 文档分块处理)和 LLM-scores.pdf(模型评测报告)。
可以这样理解 xLLM 的价值:
GPT 等大模型,就像一个读遍了网上所有文章的人——知识面极广,但在特定领域(比如数学统计)的深度和精确度参差不齐,容易「一本正经地胡说八道」。
xLLM 做的事,相当于给这个「通才」配备了一套专属的数学坐标系。当你问「Poisson Binomial Process」时,系统先查 Wolfram MathWorld 的权威词条,找到它的精确定义、相关词、上下级分类,再生成一个有据可查的回答——而不是让 GPT 凭「感觉」发挥。
这本质上是 RAG(检索增强生成)的自定义版本,但数据源是精心抓取的结构化百科,数据组织是基于哈希表的知识图谱,而非向量数据库。
xLLM 的代码完全是 Python 原生实现,主要依赖:
| 依赖包 | 用途 |
|---|---|
numpy | 数值计算和向量操作 |
autocorrect | 查询拼写自动纠错 |
pattern | 英文单数化处理 |
requests | HTTP 爬取(crawl_directory.py) |
代码没有使用任何深度学习框架(Pytorch/TensorFlow),也没有 Docker 容器化。架构极为简洁:Python 脚本 + 文本数据表 + 哈希查询。
数据组织方面,llm5 目录使用「哈希的哈希」(嵌套结构),已被废弃;xllm5 采用统一的「哈希→哈希」扁平结构,查询效率更高;xllm6 在此基础上引入 x-embeddings 向量维度。
运行 xLLM 的门槛不高,但需要手动操作:
git clone https://github.com/VincentGranville/Large-Language-Modelspip install numpy autocorrect patterncrawl_final_stats.txt.gz(约 4GB),解压后放到仓库根目录python xllm5/xllm5.py(开发者版)或 python xllm5/xllm5_short.py(用户版)⚠️ 踩坑提示:xLLM5 和 xLLM6 的数据表格式互不兼容,混用会导致查询结果错误。项目作者在 README 中明确说明这一点。
xLLM 不是一个通用解决方案,它的局限性很明显:
crawl_final_stats.txt 托管在作者个人 Google Drive,不在 Git 仓库中,需要额外下载在 RAG(检索增强生成)几乎成为 LLM 应用标配的今天,xLLM 提供了一个有趣的对比视角:大多数 RAG 系统用 embedding 模型将文本转为向量,用余弦相似度检索;而 xLLM 走的是规则化知识图谱路线,用精确哈希表匹配。
前者灵活、通用,但有幻觉风险;后者精确、可解释,但扩展成本高。
Granville 在 xLLM6 中加入的 x-embeddings(多 token 词嵌入),是对两条路线融合的尝试——在保持精确匹配的同时,引入向量表示的语义维度。这一方向值得 AI 开发者关注。
图注:作者 Vincent Granville,MLTechniques.com 创始人,前 Cambridge 博士后,NVIDIA GenAI 影响者。