乐于分享
好东西不私藏

向量引擎:AI 时代的“记忆中枢“,从原理到落地的完整认知框架

向量引擎:AI 时代的“记忆中枢“,从原理到落地的完整认知框架

写在前面:一个让我改变工作方式的技术拐点

2024 年底,我接手了一个企业知识库项目。客户的需求很朴素——公司内部沉淀了十几年的技术文档、客户工单、产品手册,加起来超过 200 万字,员工找资料全靠"老带新"和"群里吼一声"。客户问我:“能不能搞个智能问答,员工提问题,系统直接给答案?”

我当时的第一反应是:这不就是 ChatGPT 套个壳吗?后来才发现,事情远没有那么简单。

大语言模型确实能"聊天",但它有一个致命短板——它不认识你的数据。你把公司内部文档丢给它,它要么胡编乱造,要么说"我没有相关信息"。问题的根源在于,大模型的知识是训练时固化的,它没有办法实时检索外部数据。

为了解决这个问题,我第一次深入接触了 RAG(检索增强生成)架构,也第一次真正理解了"向量引擎"这个概念。

说实话,一开始我觉得"向量"这个词很唬人。但花了几个月时间把整条链路跑通之后,我的感受是:向量引擎是 AI 应用落地最关键的基础设施之一,而且它的门槛远没有想象中那么高。

这篇文章,我想把自己这大半年的认知过程完整梳理一遍。从最基础的"什么是向量"讲起,到向量引擎能解决什么问题,普通人(非算法工程师)怎么用它,以及工具选择上的实际考量。不讲玄学,不贩卖焦虑,只说我实际验证过的东西。


第一章:什么是向量?用最直觉的方式理解它

1.1 从一个生活场景说起

假设你走进一家图书馆,想找一本关于"创业初期如何控制现金流"的书。

传统的方式是什么?你走到检索电脑前,输入关键词"创业"“现金流”,系统返回所有标题或摘要里包含这两个词的书籍。但问题来了——有一本书叫《从零到一的财务生存指南》,内容完全匹配你的需求,但标题和摘要里既没有"创业"也没有"现金流"这两个词。传统关键词检索就漏掉了它。

向量搜索的逻辑完全不同。它不看"字面上写了什么",而是理解"内容实际在说什么"。它会把"创业初期如何控制现金流"这句话转化成一串数字(这就是向量),同时也把图书馆里每本书的内容转化成各自的数字串,然后计算哪些书的数字串和你的问题最"接近"。

所以,向量的本质就是:用一组数字来表示一段信息的"含义"。

1.2 技术上的精确定义

在数学层面,向量就是一个有方向和大小的数组。比如 [0.12, -0.34, 0.56, …, 0.78],一个典型的文本向量可能包含 768 个或 1536 个这样的数字(维度)。

在 AI 领域,向量更准确的名字叫 Embedding(嵌入)。它是通过专门的模型(Embedding 模型)生成的。这个模型的作用就是把人类能理解的信息——文字、图片、音频——翻译成机器能理解和计算的数字序列。

关键点在于:语义相近的内容,生成的向量在数学空间中距离也近。

举几个例子帮助理解:

  • “苹果手机电池不耐用” 和 “iPhone 续航太差了” → 这两句话字面上几乎没有重叠词,但语义高度相似,它们的向量在空间中非常接近。
  • “苹果手机” 和 “苹果好吃” → 虽然都有"苹果"这个词,但语义完全不同,向量距离很远。

传统的关键词搜索做不到这一点。向量搜索的核心能力,就是"语义匹配"。

1.3 为什么现在向量突然火了?

向量这个概念并不新,Word2Vec 在 2013 年就有了。但它在过去两年突然成为焦点,核心原因就是大语言模型(LLM)的爆发。

大模型能生成优质回答,但它需要"喂料"——你得把相关的上下文信息塞进 Prompt 里,它才能基于这些信息生成准确答案。问题是,用户的原始数据可能有几百万字,不可能全部塞进去(Token 有上限,成本也扛不住)。

所以需要一个环节:从海量数据中,快速找出和用户问题最相关的那几段内容,然后只把这几段塞给大模型。

这个"快速找出最相关内容"的环节,就是向量搜索干的事。而执行向量搜索的核心基础设施,就是向量引擎(向量数据库)。

如果把大模型比作一个很聪明但没有记忆的专家,向量引擎就是它的外挂记忆库。


第二章:向量引擎到底能干什么?

理解了向量的基本概念之后,我们来看向量引擎的实际能力。我把它归纳为三个层次:基础能力、核心应用场景、以及它在 AI 技术栈中的位置。

2.1 基础能力:存储 + 检索

向量引擎最底层的功能就两件事:

第一,存储向量。 你把文本、图片等数据通过 Embedding 模型转成向量后,存进向量引擎。它不只是存一堆数字,还会对这些向量建立高效的索引结构(比如 HNSW、IVF 等算法),方便后续快速查找。

第二,相似性检索。 给定一个查询向量(比如用户提出的问题转成的向量),在库里找出最相似的 Top-K 个结果。这个过程叫 ANN(Approximate Nearest Neighbor,近似最近邻搜索),速度极快,百万级数据量下通常在毫秒级返回。

用一个类比来说:传统数据库像是一个按字母排序的通讯录,你只能按姓名精确查找;向量引擎像是一个理解"关系亲疏"的社交图谱,你说"帮我找和张三关系最近的人",它能按亲疏程度排序返回。

2.2 核心应用场景

我按照实际落地频率,从高到低列出向量引擎最常见的使用场景:

场景一:RAG(检索增强生成)—— 目前最主流的应用

RAG 是当前 AI 应用中被提及频率最高的架构模式。完整流程是这样的:

  1. 数据预处理阶段
    :把企业文档、知识库、FAQ 等内容切分成小段(Chunk),通过 Embedding 模型转成向量,存入向量引擎。
  2. 用户提问阶段
    :用户输入问题 → 问题转成向量 → 在向量引擎中检索最相关的 Chunk → 把这些 Chunk 连同用户问题一起发给大模型 → 大模型基于这些上下文生成答案。

RAG 解决的核心问题是:让大模型能基于你的私有数据回答问题,而不是瞎编。

我在前面提到的那个企业知识库项目,用的就是这个架构。200 万字文档切了大概 15 万个 Chunk,员工提问后平均 2 秒返回答案,准确率从最初的 60% 优化到后来的 85% 以上(主要靠调整 Chunk 策略和优化 Prompt)。

场景二:语义搜索 —— 传统搜索的升级替代

这是向量引擎最直观的应用。电商平台的商品搜索、内容平台的文章检索、客服系统的工单匹配,都可以用向量搜索替代或增强传统的关键词搜索。

举个真实例子:一个做法律咨询的团队,用户经常输入"房东不退押金怎么办",传统搜索只能匹配包含"房东"“押金"的文档。用向量搜索后,系统还能匹配到"租赁合同纠纷处理流程”"租房保证金返还的法律依据"等语义相关但字面不同的内容。搜索结果的相关性提升了一个量级。

场景三:推荐系统

把用户的行为和偏好编码成向量,把商品或内容也编码成向量,通过向量距离计算,找出"这个用户最可能喜欢什么"。这在短视频推荐、电商推荐、新闻推荐中广泛使用。

场景四:图片 / 多模态搜索

向量不只能表示文字。通过多模态 Embedding 模型(比如 CLIP),图片也能转成向量。这意味着你可以用文字搜图片(“找一张日落下的海滩照片”),或者用图片搜相似图片。设计师素材库、电商以图搜图,都是典型应用。

场景五:异常检测与去重

在安全领域,可以把正常行为模式编码成向量,然后检测新行为和正常模式的距离——距离太远就可能是异常。内容平台也用类似方法做文章去重和洗稿检测。

2.3 向量引擎在 AI 技术栈中的位置

我画一个简化的 AI 应用技术栈,帮助理解向量引擎的角色:

用户界面(前端)    ↓应用逻辑层(后端 / Agent 框架)    ↓大语言模型(LLM)← 生成回答    ↑向量引擎 ← 提供检索到的相关上下文    ↑Embedding 模型 ← 把文本/图片转成向量    ↑原始数据(文档、网页、数据库等)

从这个架构可以看出:向量引擎不是独立工作的,它是连接"原始数据"和"大模型"之间的桥梁。 没有向量引擎,大模型就只能靠自己训练时记住的东西回答问题(容易过时、容易编造);有了向量引擎,大模型可以实时获取最新的、私有的、准确的信息。

这就是为什么我说向量引擎是 AI 应用落地的"记忆中枢"——它决定了你的 AI 应用能不能回答好问题、回答对问题。


第三章:普通人怎么用向量引擎?

说"普通人"可能不太准确,我更想面向的是这几类人:

  • 独立开发者,想给自己的产品加上 AI 能力
  • 内容创作者 / 运营人员,想搭建个人知识库或智能客服
  • 中小企业技术负责人,想快速验证 AI 应用的可行性
  • 对 AI 应用感兴趣、有一定编程基础的爱好者

你不需要是算法工程师,不需要懂 HNSW 索引的底层实现,但你需要理解整个链路的逻辑,并且能够调用 API。

3.1 第一步:理解完整的数据流

在动手之前,先把整个数据流在脑子里过一遍:

写入阶段(离线): 原始文本 → 切分成 Chunk → 调用 Embedding API 生成向量 → 存入向量引擎

查询阶段(在线): 用户问题 → 调用 Embedding API 生成查询向量 → 在向量引擎中搜索最相似 Chunk → 取 Top-K 结果 → 拼接成 Prompt → 调用 LLM API 生成回答 → 返回给用户

这个流程中涉及三个关键组件:

组件
作用
需要什么
Embedding 模型
把文本转成向量
API 调用(如 OpenAI text-embedding-3-small)
向量引擎
存储和检索向量
数据库服务(云端或本地)
LLM 大模型
基于上下文生成回答
API 调用(如 GPT-4o、Claude、DeepSeek)

3.2 第二步:数据预处理(Chunking 策略)

这一步经常被低估,但实际上它对最终效果的影响极大——甚至比选哪个大模型影响还大。

什么是 Chunking?

你的原始文档可能有几万字,不可能把整篇文档转成一个向量(信息太多,语义会被稀释)。所以需要把文档切成小段(Chunk),每段单独转成向量。

Chunk 大小怎么选?

这是我踩过坑最多的地方。经验总结:

  • 太小(比如 100 字以下)
    :每个 Chunk 的信息量不足,检索到了也没什么用
  • 太大(比如 2000 字以上)
    :语义被稀释,检索精度下降,而且消耗更多 Token
  • 推荐起步值:300-500 字/Chunk
    ,然后根据实际测试调整

Chunk 之间要不要重叠?

建议加 10%-15% 的重叠。比如每个 Chunk 500 字,相邻 Chunk 重叠 50-75 字。原因是切分边界处的信息可能被截断,重叠可以保留上下文连续性。

按什么维度切分?

  • 最简单的方式:按固定字数切分(适合结构不强的文本)
  • 更好的方式:按段落、章节、标题层级切分(保持语义完整性)
  • 特殊场景:FAQ 类内容按"一问一答"为一个 Chunk 效果最好

3.3 第三步:调用 Embedding 模型生成向量

Embedding 模型的选择和调用是整个流程中相对简单的部分。目前主流的选择:

国际方案:

  • OpenAI text-embedding-3-small(1536 维,性价比高)
  • OpenAI text-embedding-3-large(3072 维,精度更高)

国内方案:

  • 智谱 embedding-3(2048 维)
  • 通义千问 text-embedding-v3
  • DeepSeek 暂未公开独立 Embedding 模型,但可使用第三方替代

调用方式非常简单,以 OpenAI 为例,核心就是一个 API 调用:

import openairesponse = openai.embeddings.create(    model="text-embedding-3-small",    input="这是需要转成向量的文本")vector = response.data[0].embedding# vector 就是一个包含 1536 个浮点数的列表

一个实际问题:API 调用的成本和稳定性

如果你的数据量不大(比如几千个 Chunk),直接调用官方 API 就够了。但如果数据量较大,或者你需要频繁调用多种模型(Embedding + LLM),成本控制和接口稳定性就变得重要。

我在实际项目中的做法是通过统一的 API 中转服务来管理多个模型的调用,这样可以在一个入口下切换不同模型,同时获得更好的调用稳定性。这类服务目前市面上有不少选择,后面在工具选择部分我会展开讲。

3.4 第四步:选择并使用向量引擎

向量引擎的选择是整个链路中最关键的决策之一。这部分内容比较重要,我放在第四章单独展开。

3.5 第五步:组装 RAG Pipeline

把前面几步串起来,一个最简化的 RAG 实现大概是这样的(伪代码):

# 1. 用户提问user_question = "公司差旅报销的审批流程是什么?"# 2. 生成查询向量query_vector = embedding_model.encode(user_question)# 3. 在向量引擎中检索results = vector_db.search(    vector=query_vector,    top_k=5  # 取最相关的5个Chunk)# 4. 拼接Promptcontext = "\n".join([r.text for r in results])prompt = f"""请根据以下参考资料回答用户的问题。如果参考资料中没有相关信息,请如实告知。参考资料:{context}用户问题:{user_question}"""# 5. 调用大模型生成回答answer = llm.chat(prompt)

这 20 行代码就是 RAG 的核心逻辑。当然,生产环境下还需要处理很多细节(错误处理、缓存、限流、回答质量评估等),但核心骨架就是这些。

3.6 不写代码也能用的方案

如果你完全不想写代码,也有现成的 no-code / low-code 方案:

  • Dify
    :开源的 AI 应用开发平台,拖拽式搭建 RAG 应用,内置向量引擎
  • FastGPT
    :开源的知识库问答系统,上传文档即可使用
  • Coze(扣子)
    :字节跳动出品,可视化搭建 Bot,支持知识库功能

这些平台把 Embedding、向量存储、LLM 调用全部封装好了,你只需要上传文档、配置参数,就能得到一个可用的知识库问答系统。

但我个人建议,即便你用这些平台,也最好理解底层的向量引擎逻辑。因为当效果不好的时候(比如检索不准、回答偏题),你需要知道是 Chunk 策略的问题、Embedding 模型的问题,还是向量引擎配置的问题。不理解原理,就没法调优。


第四章:向量引擎的工具选择——从个人项目到生产环境

这一章是整篇文章的重头戏。我会把目前主流的向量引擎方案做一个完整的梳理和对比,基于我自己的实际使用经验。

4.1 先分清两个概念:专用向量数据库 vs 传统数据库的向量扩展

市面上的向量引擎方案分两大类:

第一类:专用向量数据库 从零设计,专门为向量存储和检索优化。代表产品:Milvus、Qdrant、Weaviate、Pinecone、Chroma。

第二类:传统数据库 + 向量扩展 在已有的关系型数据库或 NoSQL 数据库上加一个向量搜索插件。代表方案:PostgreSQL + pgvector、Elasticsearch 8.x、Redis Stack。

怎么选?简单来说:

场景
推荐方案
原因
新项目,向量检索是核心功能
专用向量数据库
性能和功能更强
已有项目,想加向量搜索能力
传统数据库 + 向量扩展
不用引入新的技术栈
数据量小(< 10 万条),快速验证
轻量级方案(Chroma、SQLite-VSS)
简单够用
数据量大(> 百万条),生产环境
Milvus 或 Qdrant
可扩展性和稳定性有保障

4.2 主流方案逐个分析

Milvus(开源,CNCF 毕业项目)

定位: 企业级向量数据库,功能最全面,生态最成熟。

优点:

  • 支持十亿级向量规模,分布式架构天然支持水平扩展
  • 支持多种索引类型(IVF、HNSW、DiskANN 等),可以根据场景选择
  • 混合搜索能力强(向量搜索 + 标量过滤可以同时进行)
  • 社区活跃,文档完善,国内团队维护,中文资料多

缺点:

  • 部署相对复杂(依赖 etcd、MinIO 等组件),单机版(Milvus Lite)虽然简化了,但生产环境仍需要一定运维能力
  • 对于小项目来说有点"大材小用"

适合: 数据量大、对性能和扩展性有要求的团队项目、企业级应用。

Qdrant(开源,Rust 编写)

定位: 轻量高性能的向量搜索引擎。

优点:

  • 用 Rust 写的,性能极高,内存管理高效
  • 部署简单,单个二进制文件即可运行
  • API 设计优雅,开发体验好
  • 支持丰富的过滤条件,元数据管理灵活

缺点:

  • 分布式能力不如 Milvus 成熟
  • 生态和社区规模比 Milvus 小一些

适合: 中小规模数据(百万级以内),追求开发效率和部署简便的团队。

Weaviate(开源,Go 编写)

定位: 带有 AI 原生能力的向量数据库。

优点:

  • 内置 Embedding 生成能力,可以直接把文本传进去,不需要自己先调 Embedding API
  • GraphQL API,对前端开发者友好
  • 多模态支持好(文本、图片、混合搜索)

缺点:

  • 内存消耗较高
  • 大规模数据下性能不如 Milvus 和 Qdrant

适合: 希望快速搭建、不想处理 Embedding 环节的小团队。

Pinecone(闭源 SaaS)

定位: 全托管的向量数据库服务。

优点:

  • 完全托管,零运维
  • Serverless 模式,按使用量计费,小规模使用成本低
  • 接入简单,几行代码就能用

缺点:

  • 闭源,数据存在别人的服务器上
  • 国内访问速度不稳定(服务器在海外)
  • 大规模使用成本上升快

适合: 海外项目、快速原型验证、不想管运维的独立开发者。

Chroma(开源,Python 原生)

定位: 为 AI 应用设计的轻量级 Embedding 数据库。

优点:

  • 极其轻量,pip install chromadb 就能用
  • Python 原生,和 LangChain、LlamaIndex 等框架无缝集成
  • 适合开发阶段快速验证

缺点:

  • 不适合生产环境大规模使用
  • 持久化和并发能力有限

适合: 本地开发、学习测试、小规模原型。

pgvector(PostgreSQL 扩展)

定位: 在 PostgreSQL 中增加向量搜索能力。

优点:

  • 如果你已经在用 PostgreSQL,不需要引入新的数据库
  • 向量数据和业务数据在同一个数据库里,JOIN 查询方便
  • 运维成本低,用现有的 PG 运维体系即可

缺点:

  • 大规模向量检索性能不如专用向量数据库
  • 索引类型和调优选项较少

适合: 已有 PostgreSQL 技术栈的项目,向量检索不是核心功能,数据量适中。

4.3 一张对比表做个总结

方案
开源/SaaS
语言
最大规模
部署难度
适合阶段
Milvus
开源
Go/C++
十亿级
中高
生产环境
Qdrant
开源
Rust
千万级
原型→生产
Weaviate
开源
Go
千万级
快速搭建
Pinecone
SaaS
-
亿级
极低
快速验证
Chroma
开源
Python
十万级
极低
学习/原型
pgvector
开源扩展
C
百万级
已有PG项目

4.4 我的实际选择路径

分享一下我自己项目中的选择经历:

阶段一:验证阶段

用 Chroma 在本地跑通整个 RAG 流程,测试 Chunk 策略和 Embedding 模型效果。这个阶段不需要考虑性能和规模,重点是验证逻辑和效果。Chroma 几行代码就能启动,非常适合。

阶段二:小规模上线

数据量到了 10 万条 Chunk 级别,Chroma 开始吃力了。切换到 Qdrant,用 Docker 单机部署,性能完全满足需求,API 也很好用。

阶段三:生产环境

客户数据量继续增长,同时要求高可用和数据持久化。评估后选择了 Milvus,部署在 Kubernetes 集群上。虽然部署复杂度高了不少,但稳定性和扩展性确实有保障。

核心建议:不要一上来就选最重的方案。从轻量级工具开始验证,确认可行后再逐步升级。


第五章:RAG 应用中的关键细节——很多人忽略的部分

很多教程只讲了 RAG 的基本流程,但实际落地时,效果好不好往往取决于几个容易被忽略的细节。

5.1 Embedding 模型的选择比大模型更重要

这是我踩过的最大的坑。很多人把精力花在选 GPT-4o 还是 Claude 上,但实际上,如果 Embedding 模型选得不好,检索出来的内容就不对,大模型再强也没用——垃圾进,垃圾出。

Embedding 模型的选择原则:

  • 语言匹配:
     如果你的数据是中文,一定要选中文表现好的模型。OpenAI 的 Embedding 模型虽然也支持中文,但在纯中文场景下,国内模型(比如智谱 embedding-3、BGE 系列)往往效果更好。
  • 维度和精度的平衡:
     维度越高,理论上精度越好,但存储和计算成本也越高。1536 维在大多数场景下够用。
  • 测试是唯一标准:
     不同模型在不同领域的表现差异很大。法律文本、医疗文本、技术文本各有其特点,一定要用你自己的数据做测试。

5.2 检索策略的优化

最基础的检索策略是:查询向量 → Top-K 相似结果 → 塞进 Prompt。但这在很多场景下效果不够好。几个进阶策略:

(1)混合检索(Hybrid Search)

同时使用向量搜索(语义匹配)和关键词搜索(BM25 等传统算法),然后用 Reciprocal Rank Fusion 等方法合并排序。

为什么需要混合检索?因为有些查询确实需要精确的关键词匹配。比如用户问"ISO 27001 认证流程",这里面的"ISO 27001"是一个精确的术语,向量搜索可能把它和其他 ISO 标准混淆,但关键词搜索可以精准匹配。

大多数成熟的向量引擎(Milvus、Qdrant、Weaviate)都支持混合检索。

(2)重排序(Reranking)

向量搜索返回的 Top-K 结果,再用一个 Reranker 模型(如 Cohere Rerank、BGE-Reranker)做二次排序。Reranker 的计算更精细,能过滤掉向量搜索中的"噪声"结果。

(3)查询改写(Query Rewriting)

用户的原始问题可能表述模糊或过于简短。在检索前,先用大模型对查询进行改写或扩展,生成更利于检索的表述。

比如用户输入"报销",改写后变成"公司员工差旅报销的申请流程和审批规则",检索效果会显著提升。

5.3 Chunk 的元数据管理

每个 Chunk 不只是存向量和原文,还应该附带元数据(Metadata):

  • 来源文档名称
  • 文档类型(FAQ、手册、通知等)
  • 创建/更新时间
  • 章节标题
  • 页码

元数据的作用很大:

  • 过滤:
     检索时可以限定"只从产品手册中搜索"“只搜索最近半年的文档”
  • 溯源:
     回答时可以告诉用户"这个答案来自《员工手册》第三章"
  • 调试:
     当回答不准确时,通过元数据快速定位问题 Chunk

5.4 API 调用的工程化考量

在实际项目中,你需要频繁调用两类 API:Embedding API 和 LLM API。当数据量上来之后,几个工程化问题会凸显:

成本控制: Embedding 生成是一次性成本(数据入库时),但 LLM 调用是持续性成本(每次用户提问都要调用)。如果调用量大,成本会很可观。

模型切换灵活性: 在项目初期,你可能用 GPT-4o-mini 来控制成本;效果验证后切换到 GPT-4o 提升质量;又或者某些场景用 DeepSeek 性价比更高。频繁切换模型意味着你需要改代码、改配置。

接口稳定性: 直接调用海外 API 在国内可能遇到网络波动问题。如果你的产品面向国内用户,接口的稳定性和响应速度直接影响用户体验。

这些问题催生了一类工具——API 中转/聚合服务。它们的核心价值是:一个统一的 API 入口,背后对接多个模型供应商,帮你处理路由、负载均衡、失败重试、费用统计等工程化问题。

我在项目中用过的一个方案是向量引擎提供的 API 聚合服务,它可以用统一的接口格式调用 OpenAI、Claude、DeepSeek 等多个模型的 Embedding 和 Chat 接口。这样在切换模型时只需要改一个参数,不需要动业务代码。对于同时需要 Embedding 和 LLM 能力的 RAG 项目来说,这种统一入口的方案确实省了不少工程量。

5.5 一个容易被忽略的问题:数据更新

知识库不是建完就完了。文档会更新、政策会变化、产品会迭代。如果向量引擎里的数据过时了,大模型会基于过时信息回答问题——这比不回答还糟糕。

建议建立定期更新机制:

  • 设定数据刷新周期(建议 1-3 个月)
  • 对更新的文档重新做 Chunking 和 Embedding
  • 删除已过期的 Chunk
  • 对关键问题定期做人工测试,验证回答的准确性

第六章:行业趋势——向量引擎的未来方向

作为从业者,我对向量引擎领域的几个趋势有比较强的感受:

6.1 从"纯向量"到"多模态向量"

早期的向量引擎主要处理文本。但随着多模态大模型(GPT-4o、Gemini 等)的成熟,图片、音频、视频都可以转成向量。未来的向量引擎需要同时支持多种模态的向量存储和跨模态检索。

比如你上传一段会议录音,系统自动转成向量存储;之后你输入"上次会议讨论的预算方案",系统能从录音向量中检索到相关片段。这在一年前还是概念,现在已经有团队在落地了。

6.2 向量引擎与知识图谱的融合

纯向量检索有一个局限:它擅长找"语义相似的内容",但不擅长处理"实体关系"和"逻辑推理"。

比如用户问"张三的直属领导是谁",这是一个关系查询,向量搜索可能返回一堆提到"张三"的文档,但不一定能准确找到"领导是谁"这个具体信息。知识图谱(Knowledge Graph)在处理这类结构化关系时更有优势。

目前的趋势是:向量检索 + 图谱查询混合使用。向量负责"模糊的语义搜索",图谱负责"精确的关系查询",两者互补。部分向量引擎(如 Weaviate)已经开始内置图谱能力。

6.3 端侧向量引擎

目前大部分向量引擎是云端部署的,但随着端侧 AI 的发展(手机、PC 本地运行模型),端侧的轻量级向量引擎也在兴起。

想象一下:你的手机本地有一个个人知识库,存储了你所有的笔记、聊天记录、浏览过的文章,用本地的小模型做 Embedding 和检索,完全不需要联网。这对隐私敏感场景非常有价值。

SQLite-VSS、LanceDB 等轻量级方案已经在往这个方向探索。

6.4 GEO 与向量引擎的交叉

这个趋势可能很多人没有注意到。随着 AI 搜索(如 Perplexity、Google AI Overviews、豆包搜索)逐渐替代传统搜索引擎,内容创作者需要理解一件事:AI 搜索的底层逻辑就是向量检索。

AI 搜索引擎把互联网上的内容向量化,当用户提问时,用向量检索找到最相关的内容,然后让大模型基于这些内容生成答案。这和 RAG 的架构完全一样,只是数据源从企业知识库变成了整个互联网。

这意味着:如果你想让自己的内容被 AI 搜索引用(GEO 优化),你本质上是在优化自己的内容在向量空间中的表现——让你的内容在语义上更准确、更完整、更容易被检索到。

具体的 GEO 策略(比如结构化写作、FAQ 格式、权威信号建设等)和向量引擎的检索逻辑是完全一致的。理解了向量引擎的工作原理,你反过来会更懂 GEO 该怎么做。


第七章:实战案例复盘——我是怎么一步步搭起来的

回到文章开头提到的那个企业知识库项目,我把完整的搭建过程复盘一下,供参考。

7.1 项目背景

  • 数据规模:
     200 万字技术文档,格式包括 Word、PDF、Markdown
  • 用户场景:
     员工通过聊天窗口提问,系统返回答案并标注来源
  • 性能要求:
     2 秒内返回回答,同时支持 50 人并发
  • 预算:
     有限(中小企业)

7.2 技术选型

经过评估,最终的技术栈:

组件
选择
原因
文档解析
Unstructured
支持多种格式,解析效果好
Chunking
自定义规则
按标题层级切分 + 400 字兜底
Embedding
text-embedding-3-small
中英文效果均衡,成本可控
向量引擎
Qdrant(Docker 部署)
轻量、性能好、部署简单
LLM
GPT-4o-mini(主)+ GPT-4o(复杂问题)
成本和效果的平衡
API 管理
统一中转服务
一个入口管理所有模型调用
前端
Next.js 聊天界面
快速开发

7.3 关键数据

  • 总 Chunk 数:
     约 15 万条
  • Embedding 生成耗时:
     约 4 小时(批量处理)
  • Embedding 生成成本:
     约 12 美元(text-embedding-3-small)
  • 平均检索耗时:
     23ms(Qdrant,Top-5)
  • 平均端到端响应时间:
     1.8 秒(含 LLM 生成)

7.4 效果优化过程

第一版(基础版):准确率约 60%

问题主要出在 Chunking 上。最初用的是固定 500 字切分,很多技术概念被截断了。比如一个配置参数的说明横跨两个 Chunk,导致检索到的单个 Chunk 信息不完整。

第二版(优化 Chunking):准确率提升到 72%

改成按标题层级切分,同时加了重叠。一级标题作为最大的切分边界,二级标题作为次级边界,没有标题的长段落按 400 字 + 50 字重叠切分。

第三版(加混合检索 + Reranking):准确率提升到 82%

对一些包含特定术语、型号、编号的查询,纯向量检索容易漏掉精确匹配。加了 BM25 关键词检索做混合搜索,再用 Reranker 做二次排序,效果明显提升。

第四版(优化 Prompt + 加元数据过滤):准确率提升到 88%

在 Prompt 中加了更明确的指令(“如果参考资料不足以回答问题,请明确告知而不是猜测”),减少了大模型的"幻觉"。同时允许用户指定搜索范围(“只搜索安装手册”),通过元数据过滤缩小检索范围,提高精度。

核心经验:RAG 的效果优化是一个持续迭代的过程,不要指望一步到位。Chunking 策略、Embedding 模型、检索策略、Prompt 设计,每个环节都有优化空间。

7.5 关于 API 调用的补充说明

在这个项目中,Embedding 调用和 LLM 调用加起来每天大概几千次。最初是直接调用 OpenAI 的 API,后来遇到了几次网络超时导致用户那边报错的情况。

后来切换到了一个 API 聚合服务,它在调用链路中加了自动重试和失败切换的机制,接口稳定性确实好了很多。另外它支持按 Token 用量统计费用,方便我做成本核算和向客户报价。

这类中间层服务的价值在于:你不需要自己去实现负载均衡、失败重试、多模型路由这些工程化逻辑,专注在业务层面就好。


第八章:给不同人群的行动建议

8.1 如果你是内容创作者 / 运营人员

你最该关注的是 GEO(生成式引擎优化)。

理解向量引擎的工作原理,能帮你写出更容易被 AI 搜索引用的内容。核心要点:

  • 用结构化格式写作(FAQ、表格、分层标题)
  • 开头直接给答案,不要铺垫
  • 引用具体数据和权威来源
  • 多平台分发(不同 AI 搜索引用不同平台的内容)

8.2 如果你是独立开发者

建议从一个最小 RAG demo 开始。

技术路线:Chroma(本地验证)→ Qdrant(小规模上线)→ 按需升级。Embedding 和 LLM 调用推荐用统一的 API 服务(如 https://178.nz/vx ),避免在工程化问题上花太多时间。

先跑通流程,再优化效果。不要在选型上纠结太久。

8.3 如果你是企业技术负责人

关注三件事:数据安全、可扩展性、成本控制。

  • 数据安全:如果数据敏感,选择可私有化部署的开源方案(Milvus、Qdrant),不要把数据放在第三方 SaaS 上
  • 可扩展性:评估未来 1-2 年的数据增长量,选择能承载目标规模的方案
  • 成本控制:Embedding 生成是一次性成本,LLM 调用是持续性成本。API 调用量大的话,一定要做好费用预算和监控

8.4 如果你是 AI 爱好者 / 学习者

建议的学习路径:

  1. 先理解向量和 Embedding 的概念(本文第一章)
  2. 用 Chroma + LangChain 跑一个本地 RAG demo
  3. 尝试不同的 Embedding 模型,对比检索效果
  4. 学习 Chunk 策略对效果的影响
  5. 了解主流向量引擎的区别和适用场景

整个学习周期,按每天 1-2 小时算,2-3 周可以建立完整的认知。


第九章:常见问题 FAQ

Q1:向量引擎和传统数据库有什么本质区别?

传统数据库(MySQL、PostgreSQL)基于精确匹配——你查 WHERE name = '张三',它返回精确匹配的记录。向量引擎基于相似度匹配——你给一个向量,它返回空间中距离最近的向量。两者解决的问题不同,不是替代关系,而是互补关系。

Q2:向量引擎需要 GPU 吗?

向量引擎本身不需要 GPU。GPU 主要用于 Embedding 模型的推理(把文本转成向量)。如果你用 API 调用 Embedding 服务,GPU 的事情由服务方处理,你这边只需要普通的 CPU 服务器即可运行向量引擎。

Q3:数据量小(比如几百篇文档),有必要用向量引擎吗?

看场景。如果只是个人笔记搜索,几百篇文档用全文检索可能就够了。但如果你需要语义搜索能力(比如用"怎么控制成本"搜到"预算管理方案"),向量引擎就有价值。而且 Chroma 这类轻量方案的使用成本极低,几行代码就能接入,不存在"大材小用"的问题。

Q4:Embedding 模型要和 LLM 用同一家的吗?

不需要。Embedding 模型和 LLM 是独立的两个组件。你完全可以用智谱的 Embedding 模型生成向量,然后用 GPT-4o 生成回答。选 Embedding 看检索效果,选 LLM 看生成质量,各选各的。

Q5:向量引擎会不会很贵?

开源方案(Milvus、Qdrant、Chroma)本身免费,只需要服务器成本。一台 4 核 8G 的云服务器就能跑 Qdrant,存储百万级向量。主要成本在 Embedding API 和 LLM API 的调用上。以 OpenAI text-embedding-3-small 为例,处理 100 万个 Chunk(每个 500 字)的 Embedding 成本大约在 20-30 美元,是一次性开销。

Q6:RAG 和微调(Fine-tuning)该选哪个?

简单原则:

  • 如果你的需求是"让 AI 能回答关于你的数据的问题"→ 用 RAG
  • 如果你的需求是"让 AI 改变说话风格或学会新的任务模式"→ 用微调
  • 大多数企业知识库、客服、问答场景,RAG 就够了,成本远低于微调

Q7:怎么评估检索效果好不好?

最实用的方法:人工构建一个测试集。准备 50-100 个真实的用户问题和对应的标准答案(ground truth),跑一遍检索,统计 Top-5 结果中有多少包含了正确的 Chunk。这个指标叫 Recall@K(召回率),是评估检索效果的核心指标。


结尾:回到本质

写到最后,我想说一点感受。

在 AI 行业待得越久,越觉得"基础设施"层面的东西才是真正有长期价值的。大模型会迭代、会降价、会被新模型替代,但你的数据不会过时,你的知识库不会贬值,你对向量检索、RAG 架构的理解不会失效。

向量引擎不是什么玄学。它就是一个工具——帮助你把非结构化的信息转化成机器可以理解和检索的格式。掌握它,你就掌握了 AI 应用落地最核心的环节之一。

不需要等到"准备好了"再开始。找一个你手头有数据的场景,装个 Chroma,调个 Embedding API,跑一遍 RAG 流程。半天时间就能建立最直观的体感。

这可能是你在 AI 时代最值得投入的半天。


本文所有技术方案和数据均基于作者实际项目经验,测试环境和结果可能因具体场景而异。文中提到的所有开源项目均可在其官方 GitHub 仓库获取。API 服务相关内容基于截至 2025 年中的信息,具体功能和定价请以各平台最新说明为准。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-07 15:53:18 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/724265.html
  2. 运行时间 : 0.261073s [ 吞吐率:3.83req/s ] 内存消耗:5,068.86kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a98f2f9153ec4f45f8dad07bd7feb184
  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.30 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.001047s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001659s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004044s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000693s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001333s ]
  6. SELECT * FROM `set` [ RunTime:0.000614s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001457s ]
  8. SELECT * FROM `article` WHERE `id` = 724265 LIMIT 1 [ RunTime:0.012257s ]
  9. UPDATE `article` SET `lasttime` = 1780818798 WHERE `id` = 724265 [ RunTime:0.018316s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.002082s ]
  11. SELECT * FROM `article` WHERE `id` < 724265 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001229s ]
  12. SELECT * FROM `article` WHERE `id` > 724265 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002795s ]
  13. SELECT * FROM `article` WHERE `id` < 724265 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003502s ]
  14. SELECT * FROM `article` WHERE `id` < 724265 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001590s ]
  15. SELECT * FROM `article` WHERE `id` < 724265 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.012180s ]
0.265511s