当前位置:首页>python>我用纯 Python 手搓了一个 RAG 知识库:不用 LangChain,也能让文档开口说话

我用纯 Python 手搓了一个 RAG 知识库:不用 LangChain,也能让文档开口说话

  • 2026-07-02 16:32:45
我用纯 Python 手搓了一个 RAG 知识库:不用 LangChain,也能让文档开口说话

我用纯 Python 手搓了一个 RAG 知识库:不用 LangChain,也能让文档开口说话

全文约 3000 字,阅读需要 6 分钟


起因

最近工作里有个很具体的痛点:文档太多,而且太杂。

合同扫描件、行业报告、内部资料、会议截图、Word、Markdown、PDF,格式五花八门。真正要用的时候,最麻烦的不是“有没有这份资料”,而是“我到底在哪份资料里见过这句话”。

我想要的东西其实很简单:

把这些文档丢进一个系统里,以后直接用自然语言提问,它能从资料里找依据、给答案、贴出处。

市面上当然有很多方案。但试了一圈,总觉得不完全合适:

  • 有的太重,依赖链很长,调一个小功能要理解一堆抽象;
  • 有的太贵,OCR、Embedding、LLM 全走 API,文档量一大成本就上来了;
  • 有的隐私边界不够清楚,公司资料直接传第三方服务器,这事很难放心。

于是我干脆自己写了一个。

项目名叫 RagLite:轻量、透明、尽量把重计算放在自己手里。


它能干什么?

一句话:把你的文档变成一个可对话的知识库。

比如扔进去 35 张截图,或者一本 459 页的扫描版 PDF,等它完成 OCR、分块、向量化和入库之后,就可以直接问:

“将军崖岩画是什么?”

它会先从知识库里检索相关片段,再调用大模型生成回答,并把来源一起贴出来。这样你既能快速得到结论,也能回到原文核对。

目前支持这些文件:

  • Markdown / 纯文本
  • Word(.docx
  • PDF,包括纯图片扫描件
  • 图片截图(PNG / JPG)

我最看重的是两点:

第一,原始文件不必交给第三方平台。OCR 和向量化默认都可以在本机完成。

第二,代码路径足够短。出了问题,你能直接打开对应文件看懂它在做什么。


为什么不用 LangChain?

不是 LangChain 不好。

它解决的是“快速搭建复杂 LLM 应用”的问题,生态、集成、抽象都很完整。但我的需求没有那么复杂:文档解析、OCR、分块、Embedding、检索、生成,链路清楚,能跑稳就行。

很多时候,框架的抽象层会在前期让你觉得省事,到了调试阶段又把问题藏起来。链条、Agent、Tool、Memory,每个概念都包了一层。检索结果不对时,你可能要一路穿过好几层封装,才能找到真正影响结果的那个参数。

RagLite 的思路更朴素:

每个模块自包含,能少一层就少一层。

项目结构大概是这样:

config.py          # 配置,一个 dataclass
ingest/
  ocr.py           # OCR,调用本地 Ollama
  chunker.py       # 文档分块
  embed.py         # 向量化,支持多种模式
  pipeline.py      # 入库流水线
serve/
  store.py         # ChromaDB 存储
  retriever.py     # 混合检索
  api.py           # FastAPI 接口
  mcp_server.py    # MCP 协议

没有太多魔法。哪一步出问题,就看哪一个文件。


架构怎么设计?

RagLite 采用的是“本地重计算 + 自管服务”的方式。

你的电脑(有 GPU)              自管 VPS 或本机服务
┌──────────────────┐           ┌──────────────────┐
│  Ollama          │           │  FastAPI          │
│  ├─ OCR 模型     │  向量推送  │  ├─ 查询接口      │
│  └─ 嵌入模型     │ ────────→ │  ├─ 入库接口      │
│                  │           │  └─ ChromaDB      │
│  文档入库流水线   │           │                  │
└──────────────────┘           │  MCP Server      │
                               └──────────────────┘

核心思路是:重活在本地干,服务端只负责存储和查询。

  • 本地:OCR 识别文字、文档分块、向量化、推送入库;
  • 服务端:运行 FastAPI 和 ChromaDB,提供查询、入库和 MCP 工具接口;
  • 网络:可以通过 EasyTier 这类虚拟组网工具走内网连接,避免暴露公网端口。

如果你更在意隐私,也可以把服务端直接放在同一台机器上。这样原始文档、向量库、检索服务都在本地。

我自己的使用方式是:本地机器负责 GPU 计算,自管 VPS 负责轻量服务。VPS 不需要 GPU,2GB 内存的小机器也能跑。


几个关键技术决策

1. OCR 双模型,按场景选择

RagLite 支持本地跑两个 OCR 模型:

  • glm-ocr:适合常规文本、表格、公式,速度较快;
  • deepseek-ocr 3.3B:适合复杂版面、多栏 PDF、扫描件。

通过 Ollama 统一调用,不需要额外部署 OCR 服务。

我用一本 459 页的扫描版 PDF 做过测试,完整处理约 21 分钟,过程中没有失败页。这个速度不算“秒开”,但对一次性入库来说完全能接受。

2. Embedding 支持多种模式

不同环境对向量化的要求不一样,所以这里没有把路堵死。

模式 适用场景 特点
Ollama 本地 日常入库 原始内容不出本机,配置简单
远程 API 云端查询 省本地算力,VPS 更轻
transformers 本地 离线环境 完全自包含,可控性最高

默认使用本地 bge-m3 做向量化。大批量文档入库时,这个选择比全部调用云端 API 更可控,成本也低很多。

3. 检索不用只押宝向量

纯向量检索有时会“看起来很聪明,实际没抓住关键词”。

比如“苏豪”和“苏豪弘业”,语义上接近,但在业务资料里可能是完全不同的实体。只靠向量相似度,容易把相近但不该混在一起的内容召回。

所以 RagLite 做了一层混合检索:

  • 向量相似度负责语义召回;
  • BM25 负责关键词匹配;
  • 中文分词用 jieba;
  • 最后把两路结果融合排序。

目前默认权重是向量 60%、BM25 40%。这个比例不是圣旨,后续可以根据具体资料类型调整。

4. 同时支持 HTTP 和 MCP

我希望它既能给普通脚本调用,也能给 AI Agent 调用,所以做了两套入口:

  • FastAPI(HTTP):标准 REST API,curl、Python、其他语言都能接;
  • MCP Server(stdio):可以接入 Claude、Hermes 等支持 MCP 的 Agent。

MCP 的好处是,Agent 可以像调用工具一样查询你的知识库。

你对 Agent 说“帮我查一下上周会议纪要里关于预算的内容”,它就可以自动调用 RagLite 的检索工具,而不是只凭上下文硬猜。


实际跑一下

入库

# 拉取模型,具体模型名按你的 Ollama 环境调整
ollama pull glm-ocr
ollama pull bge-m3

# 入库单个文档
EMBEDDING_PROVIDER=ollama uv run scripts/ingest_doc.py --file 报告.pdf

# 入库整个目录
EMBEDDING_PROVIDER=ollama uv run scripts/ingest_dir.py --dir ~/documents/ --pattern "*.md"

查询

uv run scripts/query_cli.py "将军崖岩画是什么"

也可以启动 API 服务,用 HTTP 查询:

curl -X POST http://localhost:8000/query \
  -H "X-API-Key: your-key" \
  -H "Content-Type: application/json" \
  -d '{"query": "将军崖岩画是什么", "top_k": 5}'

返回结果会包含两部分:

  • AI 生成的回答;
  • 命中的原始文档片段和来源。

这点很重要。RAG 系统不能只给“看起来像答案”的回答,还要让你能回到证据本身。


性能数据

下面是我在单 GPU 环境里的测试结果,显存约 8.6GB,Ollama 本地推理。

场景 数据量 耗时
35 张截图入库 72 个文本块 约 2 分钟
459 页扫描 PDF 882 个文本块 约 21 分钟
单次查询 检索 + 排序 + 生成 约 5 秒

主要瓶颈在 OCR。那本 459 页 PDF 平均每页约 2.7 秒,向量化反而很快,882 个文本块大约 39 秒完成。

这些数据不是实验室基准,只是我自己这台机器上的实测结果。不同显卡、模型、文档版面,差异会很大。


隐私边界

这是我写这个项目的核心原因之一,所以需要说清楚。

RagLite 默认尽量把敏感步骤放在本机:

  • OCR:本地 Ollama 推理,原始文件不需要上传第三方平台;
  • 向量化:默认走本地 bge-m3;
  • 存储:ChromaDB 可以部署在本机,也可以放在自管 VPS;
  • 生成:如果使用云端大模型,只发送检索后的片段和问题,不发送整份原始文档。

所以更准确的说法是:

原始文档不出你的可控环境。是否完全不出本机,取决于你把服务端部署在哪里,以及生成模型是否使用外部 API。

如果你对隐私要求更高,可以把 FastAPI、ChromaDB 和 LLM 全部放在本地。这样整条链路都不需要外部服务。


技术栈

选型尽量保持简单,都是 Python 生态里比较成熟的组件。

组件 选型
OCR Ollama(glm-ocr + deepseek-ocr)
Embedding bge-m3
向量数据库 ChromaDB
API FastAPI
检索 向量 + BM25 融合
生成 glm-5 或本地 LLM
分词 jieba
环境管理 uv

依赖不多,uv sync 基本就能把环境装起来。


适合谁?

我觉得 RagLite 适合这几类人:

  • 有大量文档需要检索的个人开发者;
  • 不想把原始资料交给第三方平台的小团队;
  • 想真正理解 RAG 流程、愿意自己动手改代码的学习者;
  • 手里有一台带 GPU 的电脑,想把算力用起来的技术用户。

它暂时不适合这些场景:

  • 企业级权限管理;
  • 百万级文档库;
  • 高并发在线查询;
  • 复杂多租户系统。

这些场景应该上更完整的工程方案,比如专门的权限系统、队列、监控、对象存储、Elasticsearch、Milvus 等基础设施。RagLite 的目标不是包打天下,而是把一个轻量 RAG 系统的主链路跑清楚。


下一步计划

  • 支持更多文件格式,比如 Excel、PPT;
  • 加入 reranker 精排模型,提升复杂问题的检索质量;
  • 做一个 Web UI 管理界面;
  • 提供 Docker 一键部署;
  • 增加更完整的评测脚本,方便比较不同分块和检索策略。

最后

RagLite 不是为了替代 LangChain,也不是想做一个大而全的平台。

它更像是一个可读、可改、可部署的参考实现:用尽量少的代码,把 RAG 里最核心的几个环节串起来。

你能看到文档怎么被 OCR,怎么被切块,怎么变成向量,怎么被检索出来,最后又怎么交给大模型生成答案。

对我来说,这种透明感很重要。

因为 RAG 系统最终不是“让 AI 看起来会回答问题”,而是让我们能在自己的资料里更快找到依据,并且知道答案从哪里来。

如果你也在折腾个人知识库、企业资料检索,或者只是想把 RAG 的主流程拆开看明白,可以试试这个思路。

有问题欢迎留言交流。


作者:Trevan
技术栈:Python + Ollama + ChromaDB + FastAPI

最新文章

随机文章

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