当前位置:首页>python>不用Python!用 Spring AI + DeepSeek 10分钟搭一个企业级 RAG 知识库(附源码)

不用Python!用 Spring AI + DeepSeek 10分钟搭一个企业级 RAG 知识库(附源码)

  • 2026-08-18 23:11:39
不用Python!用 Spring AI + DeepSeek 10分钟搭一个企业级 RAG 知识库(附源码)

上篇文章我们搞定了聊天记录的持久化,让 AI 重启之后还能记住你是谁。但有个新问题冒出来了:

AI 只能回答它“学过”的东西,你问它公司内部文档里的内容,它一脸懵。

翻了几千页内部文档,就为了找一个故障排查步骤?新员工入职还在靠老人口口相传?总不能把公司机密数据直接丢给公开模型吧——数据安全这一关就过不去……

这其实就是 RAG 要解决的事:让 AI 先“翻书”再回答,答案基于你的私有知识,而不是瞎编。(圈内黑话叫“给AI装个外挂脑子”,话糙理不糙)

网上聊 RAG 的基本都是 Python,Java 开发者看在眼里急在心里。今天咱们就用 Spring AI + DeepSeek + PGVector,用极简的步骤搭一个能跑的企业级知识库问答系统。这套组合的好处是:数据不出域、代码你熟、不用额外装复杂中间件。


一、先搞清楚:RAG 到底在解决什么?

RAG(检索增强生成)的核心思想很简单:让AI考试的时候可以翻书,答案有出处。

它的价值有多大?一个真实的案例是:企业内部5000+份文档,新员工入职查个报销规范平均要翻40分钟(40分钟都够摸好几次鱼了)。用RAG改造之后,3秒出结果,问答精度直接从40%提到92%。

白话总结只需三步:

  1. 1. 入库:把本地文档“切碎”——不对,是“按语义拆成小段落”,通过 Embedding 模型转成向量存入数据库。
  2. 2. 检索:用户提问时,把问题也转成向量,去数据库里检索最相关的文档切片。
  3. 3. 生成:把检索到的文档证据和问题一起打包发给大模型,生成基于证据的准确回答。

二、准备工作:搭建 PGVector 与配置 Spring AI

1. 启动带 PGVector 的 PostgreSQL

RAG 需要一个能按语义检索向量的数据库。PostgreSQL + PGVector 是最省心的选择。用 Docker 一条命令搞定:

docker run -it --rm --name postgres-pgvector \  -p 5432:5432 \  -e POSTGRES_USER=postgres \  -e POSTGRES_PASSWORD=postgres \  pgvector/pgvector:pg16

建表并开启扩展:

CREATE EXTENSION IF NOT EXISTS vector;CREATE EXTENSION IF NOT EXISTS "uuid-ossp";CREATE TABLE IF NOT EXISTS vector_store (    id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,    content text,    metadata json,    embedding vector(1536));CREATE INDEX ON vector_store USING HNSW (embedding vector_cosine_ops);

(第一次搞这个的时候,我漏掉了 uuid-ossp 扩展,表结构索引没整对,项目启动时直接给我刷了一屏幕红色的报错——当时我就盯着电脑懵了,还以为是自己JDK版本有问题。大家先在DB里顺手执行完,确认没报错再往后走。)

2. 添加依赖与配置

在 pom.xml 中引入向量库支持:

<dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-starter-vector-store-pgvector</artifactId></dependency><dependency>    <groupId>org.postgresql</groupId>    <artifactId>postgresql</artifactId>    <scope>runtime</scope></dependency>

在 application.yml 中配置数据库与 DeepSeek 模型:

spring:  datasource:    url: jdbc:postgresql://localhost:5432/postgres    username: postgres    password: postgres  ai:    dashscope:      api-key: ${DASHSCOPE_API_KEY}   #  API Key      embedding:        options:          model: text-embedding-ada-002    vectorstore:      pgvector:        index-type: HNSW        distance-type: COSINE_DISTANCE        dimensions: 1536        initialize-schema: false      # 已建表,不重复建

三、核心代码:从文档入库到智能路由接口

1. 知识入库接口

准备导入知识库文档(以考试大纲 exam.pdf 为例):

存到向量库中的文档

使用 ParagraphPdfDocumentReader 将文档切分并存入向量库:

@RestController@RequestMapping("/document/readers")public class DocumentReadersController {    private final VectorStore vectorStore;    public DocumentReadersController(VectorStore vectorStore) {        this.vectorStore = vectorStore;    }    @RequestMapping("/pdf")    public String readPdf() {        ParagraphPdfDocumentReader pdfReader = new ParagraphPdfDocumentReader("classpath:exam.pdf",                PdfDocumentReaderConfig.builder()                        .withPageTopMargin(0)                        .withPagesPerDocument(1)                        .build());        List<Document> documentList = pdfReader.read();        vectorStore.add(documentList);        return "success";    }}

(第一次跑测试的时候,我把上百页的运维手册直接怼进去,PGVector瞬间吐出了1000多条向量记录。当时我们几个后端围着屏幕看——说实话那速度确实比预想的快。写到这儿我又想起以前刚入职那会儿,为了找个部署配置文件问了三轮老员工,硬是没人说得清在哪个Wiki目录下……要早有这玩意儿我也不至于那么狼狈。)

2. 智能路由问答接口

与其硬编码使用 RAG,不如增加一层保命防翻车指南:先轻量探测知识库,有资料就用 RAG 回答,没资料就赶紧退回到普通对话模式。(这招属于典型的事后诸葛亮——我也是被测试坑了几次才想到的

后端控制层代码实现:

@RequestMapping(value = "/stream", produces = "text/html;charset=utf-8")public Flux<String> stream(String prompt, String chatId) {    // 1. 保存聊天历史    chatHistoryTitleRepository.save(chatId, prompt);    // 2. 【轻量向量探测】判断向量库里是否有匹配知识    SearchRequest probeRequest = SearchRequest.builder()            .query(prompt)            .similarityThreshold(0.8)    // 探测门槛            .topK(1)                     // 只查1条,省资源            .build();    List<Document> probeResults = vectorStore.similaritySearch(probeRequest);    boolean hasKnowledge = !probeResults.isEmpty();    // 3. 构建 ChatClient 请求    ChatClient.ChatClientRequestSpec requestSpec = chatClient.prompt()            .user(prompt)            .advisors(spec -> spec.param(ChatMemory.CONVERSATION_ID, chatId));    // 4. 智能路由:有知识挂载 RAG Advisor,无知识切回通用对话    if (hasKnowledge) {        SearchRequest ragRequest = SearchRequest.builder()                .query(prompt)                .similarityThreshold(0.7)                .topK(3)                .build();        QuestionAnswerAdvisor ragAdvisor = QuestionAnswerAdvisor.builder(vectorStore)                .searchRequest(ragRequest)                .build();        requestSpec.advisors(ragAdvisor);        logger.info("📚 知识库命中,启用 RAG 增强。");    } else {        logger.info("💬 知识库未命中,使用普通对话模式。");    }    // 5. 执行流式响应    return requestSpec.stream().content();}

当前端发起流式问答请求 GET/POST /stream?prompt=公共科目名称有哪些?&chatId=xxx 时,后端的完整执行流程如下:

  1. 1. 持久化会话记录:首先将本次提问 prompt 与 chatId 保存至历史会话记录中。
  2. 2. 轻量向量探测(探测性检索):构建一个高门槛、低耗费的探测请求 probeRequest(如 similarityThreshold = 0.8, topK = 1),快速去 vector_store 向量库搜索是否有匹配的私有知识,生成 hasKnowledge 标记。
  3. 3. 路由分发
    • • 知识库命中(hasKnowledge == true:构建正式的 RAG 顾问 QuestionAnswerAdvisor(设置更宽泛的 topK = 3),将其添加到 ChatClient 请求拦截器列表中,开启 RAG 检索增强
    • • 知识库未命中(hasKnowledge == false:不添加 RAG 顾问,请求直接透传,智能切回 普通对话模式
  4. 4. 顾问拦截与上下文拼接:若启用了 RAG 顾问,QuestionAnswerAdvisor 会在大模型调用前拦截请求,把从向量库检索到的最相关文档片段拼接到 Prompt 的 System 上下文中作为证据。
  5. 5. 流式生成响应:最终将带证据(或纯 Prompt)的请求发送给 DeepSeek 大模型,以 Flux<String> 响应流的形式将结果实时吐回前端。

搞个流程图说一下:

用户请求 /stream
1. 保存会话记录
2. 向量探测 (threshold=0.8)
3. 命中知识库?
挂载 RAG 顾问 (topK=3)
降级普通对话
4. DeepSeek 流式响应

四、效果实测:命中 RAG 与路由降级对比

在后端接口配置完成后,针对三种场景进行了对比验证:

1. 命中私有知识库(触发 RAG 增强)

当用户提问exam.pdf中包含的私有知识(如“公共科目名称有哪些?”)时,系统进行探测性检索,发现向量库包含匹配文档(hasKnowledge = true),成功触发 RAG 检索增强:

RAG检索成功

实测结果:探测命中知识库,RAG Advisor 成功抓取上下文并精确回答《职业能力倾向测验》与《综合应用能力》,出处明确。

2. 未命中知识库(智能降级通用对话)

当用户提问通用技术问题(如“Java 多线程示例”)时,向量探测未命中匹配记录(hasKnowledge = false),系统自动选择不挂载 RAG 顾问,降级至通用大模型对话模式:

通用搜索成功,未使用RAG

实测结果:探测未命中向量库,系统自动切回普通对话模式,由 DeepSeek 模型的通用能力顺畅输出 Java 多线程代码。

3. 反面对比(死板硬套 RAG 的尴尬)

如果对所有问题都强制死板地应用 RAG 检索:

只使用RAG检索-普通搜索因为不在RAG库导致回答失败

痛点分析:当用户询问通用问题“Java是什么”时,因向量库中仅有 exam.pdf,硬套 RAG 会向模型塞入空上下文,逼得 DeepSeek 只能委屈巴巴回复“抱歉,关于Java的信息我无法提供”——当时我看到这句直接笑喷了,这回答也太“呵呵”了吧。这就印证了“先探测再路由”的必要性。


五、踩过的两个坑与总结

1. 踩过的两个坑

  • • 分块策略不对:一开始贪省事用字符长度暴力切分,结果把技术步骤拦腰斩断,模型回答出来的东西简直四不像(我自己看答案都气笑了)。后来改用 TokenTextSplitter 按标题层级切分才算稳定。
  • • 检索窗口设太小:默认 topK=3 在面对复杂问题时上下文不足,后来调成 topK=5 并加了 similarityThreshold 过滤,召回质量显著提升。

2. 收工,下班

Spring AI 这套东西的逻辑其实一点都不复杂:VectorStore管存和查,QuestionAnswerAdvisor管拼上下文,ChatClient管跟模型说话。搞懂这三件套,RAG 就算彻底搞定了——至于后面搞什么多路召回、重排序(Rerank),那是项目跑顺之后老板加预算的事了。反正先把这三件套整明白,至少今晚能准时下班。

源码已更新,公众号回复「SpringAI」获取完整项目。


📍 关于我

我是麻雀,6年央国企实战派,专注 Java后端工程踩坑 + AI原生开发实战

🎁 粉丝专属开源代码与福利

  • • 关注公众号【麻雀聊技术】,回复【SpringAI】:获取搭建RAG的完整开箱即用工程源码!
  • • 回复【路线图】:免费获取《Java后端 + Spring 全景学习路线图 (α/β/γ高清图)》

👉 如果觉得本文对你有帮助,欢迎【点赞 + 收藏 + 转发】,有问题评论区随时交流!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-22 01:38:34 HTTP/2.0 GET : https://f.mffb.com.cn/a/508494.html
  2. 运行时间 : 0.423999s [ 吞吐率:2.36req/s ] 内存消耗:4,538.35kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=8242094df12070f5969b561f33399357
  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.000866s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001433s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.010275s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.008223s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001487s ]
  6. SELECT * FROM `set` [ RunTime:0.011139s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001886s ]
  8. SELECT * FROM `article` WHERE `id` = 508494 LIMIT 1 [ RunTime:0.010105s ]
  9. UPDATE `article` SET `lasttime` = 1787333914 WHERE `id` = 508494 [ RunTime:0.004919s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000729s ]
  11. SELECT * FROM `article` WHERE `id` < 508494 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002012s ]
  12. SELECT * FROM `article` WHERE `id` > 508494 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.032570s ]
  13. SELECT * FROM `article` WHERE `id` < 508494 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.108806s ]
  14. SELECT * FROM `article` WHERE `id` < 508494 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.094779s ]
  15. SELECT * FROM `article` WHERE `id` < 508494 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.024946s ]
0.427638s