diffbot-llm-inference
首个超越 Gemini 和 ChatGPT 的开源 GraphRAG 系统,将 Llama 3.3
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
首个超越 Gemini 和 ChatGPT 的开源 GraphRAG 系统,将 Llama 3.3
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你问一个 AI 模型"特斯拉今天的股价是多少",它一本正经地给出一个数字——但那其实是它根据训练数据"猜"出来的,不是真实数据。这就是大模型时代最核心的困境:模型越大、知识越"重",反而越容易产生幻觉(hallucination)。有没有一种办法,让 AI 学会"查资料"而不是"背答案"?
Diffbot 给出了自己的答案:与其把知识塞进模型权重,不如把模型训练成"工具使用专家"。2024 年底,Diffbot 发布了一个轰动开源社区的项目——Diffbot GraphRAG LLM,将 Meta 的 Llama 3.3 70B 微调成一个精通 Diffbot 知识图谱 API 的推理引擎,成为首个超越 Google Gemini 和 ChatGPT 的开源 GraphRAG 实现。

图1:Diffbot LLM 官方 Demo 界面(diffy.chat)
大语言模型的本质是"概率预测机器"——它根据训练数据中的统计规律来生成文本。但这带来了一个根本矛盾:模型的参数越多、知识越丰富,就越倾向于依赖内部记忆做推理,而不是去实时查询外部知识。
举例来说,当被问到"9.11 和 9.9 哪个大"时,ChatGPT 可能会因为直觉上的数字大小感知而给出错误答案。但 Diffbot LLM 会这样做:识别这是一个需要精确计算的问题 → 调用 JavaScript 代码解释器执行 9.11 > 9.9 → 返回正确答案 false。
这种"先查再做"的思维方式,恰好击中了当前 LLM 的最大痛点——事实性幻觉(factual hallucination)。
传统 RAG(检索增强生成)的工作流程是:将用户问题转化为向量检索 query,从文档库中找相似片段,拼接到 prompt 中让模型生成答案。这种方式受限于文档库的质量和规模,且检索结果往往是离散的文本块,缺乏结构化的知识关联。
Diffbot 的 GraphRAG 则完全不同。Diffbot 维护着一个实时更新的万亿级知识图谱(Knowledge Graph),其中包含数十亿个实体、数万亿个关联事实,且每分钟持续抓取网页更新数据。该图谱提供了比任何静态文档库都更丰富、更结构化的知识来源。
Diffbot LLM 的核心创新在于:不是简单地把知识图谱当检索库,而是把模型训练成知识图谱查询语言的专家用户。模型学会了用 Diffbot Query Language(DQL)精准地从知识图谱中提取事实,而不是依赖模糊的向量相似度匹配。

图2:FreshQA 2024 实时问答基准测试,Diffbot LLM 超越 GPT-4o、Gemini 和 Perplexity
Diffbot LLM 并非单一的问答模型,而是一个配备了多种外部工具的Agent 系统。通过系统提示词(system prompt)注入工具调用能力,模型可以在一次对话中自主决定调用哪些工具。
模型能够实时抓取任意 URL 的网页内容,进行摘要并标注引用来源。在需要引用最新新闻、财报或技术文档的场景下,这个能力远超依赖训练数据的传统模型。
Diffbot LLM 是目前唯一一个开源的大模型 DQL 专家。用户可以用自然语言提问,模型自动转化为结构化查询,从万亿级知识图谱中获取精确事实。这在需要权威、交叉验证信息的场景下尤为强大。
模型支持图像理解,可以根据图像内容进行推理。例如,给定一张流程图或示意图,模型可以解释其中含义并回答相关问题。
当问题需要精确计算时(如数学问题、日期计算、统计分析),模型会调用内置的 Node.js 代码沙箱执行 JavaScript 代码。沙箱通过禁用 require、process、global 等危险函数来保障安全性,超时限制为 2 秒(可配置)。

图3:著名的"草莓问题"——模型通过 JavaScript 代码解释器精确计算字母"r"的数量,而非靠直觉猜测

图4:9.11 vs 9.9 精确比较——模型主动调用计算器工具,而非凭直觉回答
Diffbot 在多个业界标准基准上取得了令人印象深刻的结果:
| 基准 | 测试重点 | Diffbot-small-xl 成绩 | 基座模型 Llama 3.3 70B |
|---|---|---|---|
| FreshQA 2024 | 实时事实准确性 | 超越 GPT-4o、Gemini、Perplexity | — |
| SimpleQA | 短事实查询准确性 | 超越所有参评模型(包括联网模型) | — |
| MMLU-Pro | 57 个学术领域多选 | 72.89%(CoT 5-shot) | 65.92% |
MMLU-Pro 的 7 个百分点的提升尤其值得关注:基座模型 Llama 3.3 70B Instruct 的成绩是 65.92%,而 Diffbot 版本达到了 72.89%。这个提升完全来自工具调用能力,而非模型权重的知识本身——换句话说,是"查资料"能力的进步,而非"记忆"能力的进步。

图5:SimpleQA 基准测试,Diffbot 70B 在所有参评模型中排名第一
对于希望在本地运行 Diffbot LLM 的开发者,项目提供了 Docker 镜像,模型权重从 HuggingFace 自动下载。
硬件配置要求:
架构层面,项目基于 vLLM(高效的 LLM 推理引擎)提供服务。Docker 镜像基于 vllm/vllm-openai:latest,上层使用 FastAPI + uvicorn 构建 REST API,API 兼容 OpenAI Chat Completions 格式。
主要目录结构:
server/ — FastAPI 路由层(rag_router.py 处理 /rag/v1/chat/completions)llm/ — LLM 抽象层,包含工具调用逻辑(tool_call_llm.py)、Diffbot 专用实现(diffbot_tool_call_llm.py)services/ — 外部工具服务:知识图谱 RAG(kg_rag_service.py)、JavaScript 代码执行(execute_js.py)models/ — Pydantic 数据模型定义chunking/ 和 ranking/ — RAG 检索相关模块服务入口通过 Supervisor 管理(supervisord.conf),同时运行 vLLM 推理服务和 FastAPI API 服务。
如果不想本地部署,可以直接调用 Diffbot 的无服务器 API(Serverless API),遵循零数据保留政策,用户数据处理后即删除。
from openai import OpenAI
client = OpenAI(
base_url="https://llm.diffbot.com/rag/v1",
api_key="<diffbot_token>" # 免费申请:app.diffbot.com/get-started
)
completion = client.chat.completions.create(
model="diffbot-small-xl",
temperature=0,
messages=[{"role": "user", "content": "What is the Diffbot Knowledge Graph?"}]
)
print(completion)
这个 API 与 OpenAI SDK 完全兼容,迁移成本极低。Diffbot-small-xl 模型适合大多数生产场景,Diffbot-small 则适合资源受限环境。
诚实地看,Diffbot LLM 也存在明显的局限:
Diffbot GraphRAG LLM 的发布,在 AI 行业引发了一场关于"知识存储位置"的深层讨论。传统的 Scaling Law 路线认为:模型越大、知识越丰富,能力越强。但 Diffbot 用实验数据表明:让模型学会高效使用外部工具,比持续增大模型参数更有效。
这一思路与 AI 领域的"复合 AI 系统"(Compound AI Systems)趋势高度吻合。斯坦福 HAI 实验室等机构已经开始系统性地研究这一方向,Diffbot 是目前走得最远的工业级实现之一。
对于开发者而言,Diffbot 的开源 inference server 提供了难得的参考实现——不仅可以直接使用,还可以通过 add_tool_to_diffbot_llm_inference.md 的教程扩展自定义工具,实践工具调用 Agent 的开发范式。