乐于分享
好东西不私藏

S1-源码学习篇-04-当 RAG 遇上知识图谱:GraphRAG 到底强在哪?万悟拆解

S1-源码学习篇-04-当 RAG 遇上知识图谱:GraphRAG 到底强在哪?万悟拆解

当 RAG 遇上知识图谱:GraphRAG 到底强在哪?万悟 UniAI-GraphRAG 源码拆解

📌 本文是《从零吃透企业级 AI 平台:元景万悟源码学习手记》系列第一季·源码学习篇的第 4 篇
🎯 读完本文你将:① 理解 GraphRAG 与传统 RAG 的本质区别 ② 掌握知识图谱构建与图检索的核心原理 ③ 能在万悟中启用 GraphRAG 并对比效果
⏱️ 预计阅读时间:35 分钟 | 动手实践:70 分钟
💻 前置要求:已完成第 3 篇,对传统 RAG Pipeline 有实操经验


一、这篇文章要解决什么问题?

在第 3 篇中,我们用传统 RAG 解决了"单文档精准问答"的问题。但现实企业中,很多问题是跨文档、多跳推理的:

"A 公司的 CEO 和 B 公司的 CTO 是什么关系?他们共同参与过哪些项目?"

这个问题涉及 3 个实体(A公司CEO、B公司CTO、项目)和 2 层关系。传统 RAG 的向量检索只能找到"语义相似"的片段,但无法理解"关系链"。它可能召回了 A 公司 CEO 的介绍和 B 公司 CTO 的介绍,却找不到连接两者的那条关键信息。

GraphRAG = 知识图谱 + RAG。它先把文档中的实体和关系抽取出来,构建成一张"知识网络",检索时沿着网络的边"走"过去,而不是在平面上"搜"出来。

传统 RAG:  问题 → 向量相似度搜索 → 扁平文本块列表GraphRAG:  问题 → 实体识别 → 图上多跳遍历 → 结构化子图 + 文本块

万悟内置了UniAI-GraphRAG模块,这是联通研究院自研的 GraphRAG 引擎。今天我们就把它拆开看。


二、核心概念:用大白话讲清楚

2.1 知识图谱:把文字变成"关系网"

💡 类比:传统 RAG 像图书馆的书架——书按类别排列,你通过书名(关键词/语义)找书。知识图谱像社交网络——每个人是一个节点,"认识""合作""亲属"是连线。你想找"A 和 B 的关系",直接沿着连线走过去就行。

知识图谱的三个基本元素:

元素
说明
例子
实体(Entity)
人、组织、概念、产品等
"张三"、"报销制度"
关系(Relation)
实体之间的连接
"张三 → 属于 → 研发部"
属性(Property)
实体的特征
"张三.工号=EMP001"

2.2 GraphRAG 的三阶段 Pipeline

▲ UniAI-GraphRAG 三阶段流程(图片来源:GitHub 仓库 docs)

【阶段1:图谱构建(离线,一次性)】文档 → LLM 实体/关系抽取 → 三元组(S,P,O) → 写入图数据库(Neo4j/NebulaGraph)     → 同时保留原始文本块(用于最终生成)【阶段2:图检索(在线)】用户问题 → LLM 识别问题中的实体 → 在图上做 N-hop 遍历         → 获取相关子图(节点+边+关联文本块)【阶段3:增强生成(在线)】子图结构化信息 + 关联文本块 + 用户问题 → 组装 Prompt → LLM 生成回答

2.3 为什么 GraphRAG 不是万能药?

维度
传统 RAG
GraphRAG
适用问题
单文档事实查询、语义搜索
多跳推理、关系查询、全局摘要
构建成本
低(Embedding 即可)
高(LLM 抽取 + 图存储)
检索延迟
快(毫秒级 ANN)
较慢(图遍历 + LLM 实体识别)
维护难度
高(图谱需要持续更新)
最佳场景
FAQ、文档问答
合规审查、供应链分析、人物关系挖掘

💡 经验法则:如果你的问题能用 Ctrl+F 或向量搜索解决,别上 GraphRAG。只有当问题涉及"关系链""跨文档关联""全局统计"时,GraphRAG 才有明显优势。


三、万悟是怎么实现的?(源码篇)

3.1 定位源码

internal/rag-service/├── graphrag/│   ├── extractor.go# LLM 实体/关系抽取(核心!)│   ├── builder.go# 图谱构建编排│   ├── retriever.go# 图检索(多跳遍历)│   └── prompt/# 抽取和检索用的 Prompt 模板│       ├── extract.txt# 实体关系抽取 Prompt│       └── retrieve.txt# 问题实体识别 Prompt├── repository/│   └── graph.go# 图数据库操作封装└── service/    └── graphrag.go# GraphRAG 对外服务入口

3.2 实体关系抽取(extractor.go)

这是 GraphRAG 最核心的环节——用 LLM 从非结构化文本中提取结构化三元组。

// 文件:internal/rag-service/graphrag/extractor.go// ExtractTriplets 从一段文本中提取实体和关系// 输入:原始文本块// 输出:三元组列表 [(主体, 关系, 客体), ...]func (e *Extractor) ExtractTriplets(ctx context.Context, text string) ([]Triplet, error) {    // Step 1: 加载抽取 Prompt 模板    // 这个 Prompt 是关键工程,决定了抽取质量    promptTemplate := e.loadPrompt(”extract.txt”)    // Step 2: 填充模板    prompt := strings.Replace(promptTemplate, ”{{TEXT}}”, text, 1)    // Step 3: 调用 LLM(要求返回 JSON 格式)    resp, err := e.llm.Complete(ctx, []Message{        {Role: ”system”, Content: ”你是一个知识图谱抽取专家。严格按JSON格式输出。”},        {Role: ”user”, Content: prompt},    })    if err != nil {        return nil, fmt.Errorf(”llm extraction failed: %w”, err)    }    // Step 4: 解析 LLM 返回的 JSON    // 预期格式:{”triplets”: [{”subject”:”张三”,”relation”:”属于”,”object”:”研发部”}]}    var result ExtractionResult    if err := json.Unmarshal([]byte(resp.Content), &result); err != nil {        // LLM 有时返回格式不规范,这里做容错处理        return nil, fmt.Errorf(”parse extraction result failed: %w”, err)    }    // Step 5: 后处理(去重、实体对齐、置信度过滤)    triplets := e.postProcess(result.Triplets)    return triplets, nil}

📌 关键洞察:GraphRAG 的质量高度依赖抽取 Prompt 的质量。万悟的 extract.txt 经过大量调优,包含:① 明确的实体类型定义 ② Few-shot 示例 ③ 输出格式约束 ④ 负例说明。你在实际使用中可能需要根据自己的领域微调这个 Prompt。

3.3 图谱构建编排(builder.go)

// 文件:internal/rag-service/graphrag/builder.go// BuildGraph 构建知识图谱的主入口func (b *Builder) BuildGraph(ctx context.Context, kbID string) error {    // Step 1: 获取知识库下所有已解析的文本块    chunks, err := b.chunkRepo.ListByKB(ctx, kbID)    if err != nil {        return err    }    // Step 2: 批量抽取三元组(并发控制,避免 LLM API 限流)    var allTriplets []TripletWithSource    semaphore := make(chan struct{}, 5) // 最多5个并发    for _, chunk := range chunks {        semaphore <- struct{}{}        go func(c Chunk) {            defer func() { <-semaphore }()            triplets, err := b.extractor.ExtractTriplets(ctx, c.Text)            if err != nil {                log.Warnf(”extract failed for chunk %s: %v”, c.ID, err)                return            }            // 记录每个三元组来自哪个文本块(溯源用)            for _, t := range triplets {                allTriplets = append(allTriplets, TripletWithSource{                    Triplet: t,                    ChunkID: c.ID,                })            }        }(chunk)    }    // Step 3: 实体对齐(同一个实体可能有不同表述)    // 例如:”中国联通” 和 ”China Unicom” 应该是同一个节点    aligned := b.entityAligner.Align(allTriplets)    // Step 4: 写入图数据库    err = b.graphRepo.BulkUpsert(ctx, aligned)    if err != nil {        return fmt.Errorf(”write graph failed: %w”, err)    }    // Step 5: 更新知识库状态    b.kbRepo.UpdateGraphStatus(ctx, kbID, GraphReady)    return nil}

💡 工程细节:注意 semaphore 的使用。LLM API 通常有 RPM(每分钟请求数)限制,不加并发控制会导致大量 429 错误。万悟默认设为 5,你可以在配置中调整。

3.4 图检索(retriever.go)

// 文件:internal/rag-service/graphrag/retriever.go// Retrieve 根据用户问题在图上检索相关信息func (r *Retriever) Retrieve(ctx context.Context, query string, maxHops int) (*SubGraph, error) {    // Step 1: 用 LLM 识别问题中的实体    // ”A公司CEO和B公司CTO的关系” → [”A公司CEO”, ”B公司CTO”]    entities, err := r.identifyEntities(ctx, query)    if err != nil {        return nil, err    }    // Step 2: 在图上做多跳遍历    // 从识别出的实体出发,沿边走 maxHops 步    subGraph, err := r.graphRepo.MultiHopSearch(ctx, MultiHopParams{        StartEntities: entities,        MaxHops:       maxHops,     // 默认 2 跳        MaxNodes:      50,          // 限制子图大小,防止爆炸        EdgeTypes:     nil,         // nil 表示不限关系类型    })    if err != nil {        return nil, fmt.Errorf(”graph traversal failed: %w”, err)    }    // Step 3: 获取子图中每个节点/边关联的原始文本块    // 这一步让 LLM 生成时有”原文依据”    chunkIDs := subGraph.GetAssociatedChunkIDs()    chunks, _ := r.chunkRepo.BatchGet(ctx, chunkIDs)    subGraph.Chunks = chunks    return subGraph, nil}

📌 性能关键点MaxNodes: 50 这个限制非常重要。如果两个热门实体之间有上千条路径,不加限制会导致子图爆炸,检索超时且 Prompt 超长。万悟默认 50,可根据实际数据规模调整。

3.5 GraphRAG vs 传统 RAG 的融合

万悟并不是二选一,而是支持混合模式

// 文件:internal/rag-service/service/search.gofunc (s *Service) HybridSearch(ctx context.Context, req SearchRequest) (*SearchResponse, error) {    var results []ChunkScore    // 路线1:传统 RAG(始终执行)    ragResults, _ := s.ragSearch(ctx, req)    results = append(results, ragResults...)    // 路线2:GraphRAG(仅在知识库启用了图谱时执行)    if req.KnowledgeBase.GraphEnabled {        graphResults, err := s.graphRetriever.Retrieve(ctx, req.Query, 2)        if err == nil && len(graphResults.Chunks) > 0 {            // 将图检索结果也加入候选集            results = append(results, graphResults.Chunks...)        }    }    // 统一 RRF 融合排序(和第 3 篇的逻辑一致)    merged := rrfMerge(results, req.TopK)    return &SearchResponse{Chunks: merged}, nil}

💡 设计哲学:GraphRAG 是传统 RAG 的增强层,而非替代品。两者互补:传统 RAG 兜底语义搜索,GraphRAG 补充关系推理。


四、动手跑通(实践篇)

4.1 准备适合 GraphRAG 的测试数据

GraphRAG 需要富含实体关系的文档才能发挥价值。推荐:

文档类型
为什么适合
企业年报
大量公司、人物、投资关系
法律法规
条款之间有引用、废止、修订关系
技术架构文档
组件之间有依赖、调用、部署关系
人物传记/组织架构
天然的关系网络

⚠️ 不要用纯 FAQ 或操作手册测试 GraphRAG——这类文档关系稀疏,传统 RAG 反而更好。

4.2 启用 GraphRAG

  1. 进入「知识库」→ 选择目标知识库 → 「设置」
  2. 开启「知识图谱」开关
  3. 选择图谱构建模型(建议用 GPT-4o 或 Qwen-Max,小模型抽取质量差)
  4. 点击「构建图谱」
  5. 等待完成(比传统索引慢 3-5 倍,因为要逐块调 LLM)

▲ 知识图谱构建中,可查看实时进度和抽取统计

4.3 可视化知识图谱

构建完成后,进入「知识图谱」→「可视化」:

  • 节点大小 = 关联边数量(越重要越大)
  • 边的颜色 = 关系类型
  • 点击节点可查看关联文本块

📌 建议截图保存。图谱可视化是博客中最吸引读者的内容之一。

4.4 对比实验(核心价值!)

用同一个问题,分别测试三种模式:

模式
问题示例
预期差异
传统 RAG
"A公司和B公司有什么关系?"
可能只召回各自介绍,找不到关系
GraphRAG
同上
沿图遍历找到"投资""合作"等关系边
混合模式
同上
综合两者结果,回答最完整

再测一个传统 RAG 擅长的问题:

模式
问题示例
预期差异
传统 RAG
"报销流程第三步是什么?"
精准命中
GraphRAG
同上
可能过度检索,引入无关实体

📌 记录你的发现。比如:"对于'张三参与了哪些项目'这类关系查询,GraphRAG 召回了 5 个项目且全部正确;传统 RAG 只召回了 2 个,且混入了同名人的项目。但对于'如何填写报销单'这类操作问题,传统 RAG 响应快 3 倍且准确率相同。"

4.5 调优实验

参数
推荐值
影响
抽取模型
GPT-4o / Qwen-Max
小模型三元组错误率高
Max Hops
2
1跳太浅,3跳噪声大
Max Nodes
30~80
根据文档密度调整
实体对齐阈值
0.85
太低误合并,太高漏合并

五、自己造一个 Mini 版(Deep Dive)

🎯 目标:用 Python + NetworkX 实现一个最简 GraphRAG

# mini_graphrag.py# 依赖:pip install openai networkximport openai, json, networkx as nxclient = openai.OpenAI(api_key=”sk-your-key”)# ===== 1. 图谱构建 =====docs = [    ”张三是研发部总监,负责AI平台项目。”,    ”李四是研发部工程师,向张三汇报。”,    ”AI平台项目使用了元景大模型技术。”,    ”王五是市场部负责人,与张三共同推进AI营销方案。”,]EXTRACT_PROMPT = ”””从以下文本中提取实体和关系,返回JSON格式:{”triplets”: [{”subject”:”...”, ”relation”:”...”, ”object”:”...”}]}文本:{{TEXT}}”””G = nx.DiGraph()for doc in docs:    prompt = EXTRACT_PROMPT.replace(”{{TEXT}}”, doc)    resp = client.chat.completions.create(        model=”gpt-4o-mini”,        messages=[{”role”: ”user”, ”content”: prompt}],        response_format={”type”: ”json_object”}    )    data = json.loads(resp.choices[0].message.content)    for t in data.get(”triplets”, []):        G.add_edge(t[”subject”], t[”object”], relation=t[”relation”])# 存储原始文本作为节点属性(简化版)        G.nodes[t[”subject”]][”source”] = doc        G.nodes[t[”object”]][”source”] = docprint(f”图谱构建完成:{G.number_of_nodes()} 节点,{G.number_of_edges()} 边”)# ===== 2. 图检索 =====def graph_retrieve(entity, max_hops=2):    ”””从指定实体出发,做多跳遍历”””    visited = set()    queue =    subgraph_nodes = set()    while queue:        node, depth = queue.pop(0)        if depth > max_hops or node in visited:            continue        visited.add(node)        subgraph_nodes.add(node)        for neighbor in G.neighbors(node):            queue.append((neighbor, depth + 1))    return G.subgraph(subgraph_nodes)# ===== 3. 增强生成 =====def graph_answer(question, start_entity):    sub = graph_retrieve(start_entity)# 将子图转为文本描述    edges_desc = ”\n”.join(        f”- {u} --[{d['relation']}]--> {v}”        for u, v, d in sub.edges(data=True)    )    sources = ”\n”.join(set(        sub.nodes[n].get(”source”, ””) for n in sub.nodes    ))    prompt = f”””基于以下知识图谱信息和原始文档回答问题。## 知识图谱{edges_desc}## 原始文档{sources}## 问题{question}请标注信息来源。”””    resp = client.chat.completions.create(        model=”gpt-4o-mini”,        messages=[{”role”: ”user”, ”content”: prompt}]    )    return resp.choices[0].message.content# 测试print(graph_answer(”张三和李四是什么关系?他们共同参与了什么?”, ”张三”))# 预期:张三和李四是上下级关系(李四向张三汇报)。#       张三负责AI平台项目,李四作为研发部工程师可能参与该项目。

🎉 这 60 行代码就是 GraphRAG 的最小可行实现。万悟在此基础上加了:实体对齐、属性抽取、图数据库持久化、增量更新、检索缓存、Prompt 工程优化……但核心逻辑就是你看到的:抽取 → 建图 → 遍历 → 生成


六、总结 & 延伸阅读

本文要点回顾

  1. ✅ GraphRAG = 知识图谱 + RAG,解决多跳推理和跨文档关联问题
  2. ✅ 三阶段:LLM 抽取三元组 → 构建图数据库 → 图上多跳检索
  3. ✅ 抽取 Prompt 质量决定图谱质量,需针对领域调优
  4. ✅ 万悟采用混合模式:传统 RAG 兜底 + GraphRAG 增强
  5. ✅ GraphRAG 不是万能药,仅在关系密集型问题上优于传统 RAG

课后作业

  • 准备一份关系密集型文档,在万悟中构建知识图谱
  • 完成传统 RAG vs GraphRAG vs 混合模式的对比实验
  • 可视化知识图谱,截图保存
  • 跑通 Mini GraphRAG,理解三阶段核心流程
  • 尝试修改抽取 Prompt,观察图谱质量变化

下一篇预告

第 5 篇:Agent 是怎么"思考"的?万悟 ReAct 推理引擎源码拆解
我们将深入智能体模块,看看 Agent 如何实现"思考→行动→观察"的循环,以及工具调用是如何安全执行的。

参考资源

  • 元景万悟 GitHub:https://github.com/UnicomAI/wanwu
  • Microsoft GraphRAG 论文:From Local to Global: A Graph RAG Approach to Query-Focused Summarization
  • Neo4j 官方教程:https://neo4j.com/docs/
  • NetworkX 文档:https://networkx.org/documentation/stable/

📮 点赞 / 收藏 / 关注,不错过后续更新
🔔 下一篇:《Agent 是怎么"思考"的?万悟 ReAct 推理引擎源码拆解》

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-06 10:31:05 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/905768.html
  2. 运行时间 : 0.090324s [ 吞吐率:11.07req/s ] 内存消耗:4,834.67kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=aa0e6f54b7ad26ce9e89c6740145848e
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.11 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000553s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000918s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000525s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000328s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000493s ]
  6. SELECT * FROM `set` [ RunTime:0.000196s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000587s ]
  8. SELECT * FROM `article` WHERE `id` = 905768 LIMIT 1 [ RunTime:0.000469s ]
  9. UPDATE `article` SET `lasttime` = 1785983465 WHERE `id` = 905768 [ RunTime:0.009434s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000245s ]
  11. SELECT * FROM `article` WHERE `id` < 905768 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000470s ]
  12. SELECT * FROM `article` WHERE `id` > 905768 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000488s ]
  13. SELECT * FROM `article` WHERE `id` < 905768 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001642s ]
  14. SELECT * FROM `article` WHERE `id` < 905768 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001809s ]
  15. SELECT * FROM `article` WHERE `id` < 905768 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001747s ]
0.092074s