什么是向量数据库?从原理、选型到 RAG 实战
如果你接触过 RAG检索增强生成一定见过这样一条流程文档切块 → 生成向量 → 写入向量数据库 → 根据问题检索相关内容 → 交给大模型回答。问题是为什么要专门使用向量数据库MySQL、PostgreSQL 不能存吗它和普通数据库到底有什么区别这篇文章不仅解释向量数据库的原理还会提供一个可以运行的中文语义检索示例。读完后你应该能够判断自己的项目是否需要向量数据库以及该如何选型。先说结论向量数据库解决什么问题向量数据库是一类针对高维向量存储、相似度检索和元数据过滤进行优化的数据系统。它最擅长的不是查询“编号等于 5 的记录”而是回答在几百万段文本、图片或音频中哪些内容与当前问题最相似这正是语义搜索、RAG、推荐系统、以图搜图和内容去重等 AI 应用的基础能力。需要先澄清一点普通数据库并非不能存、不能查向量。向量本质上是一组浮点数可以存进数组、JSON、BLOB 或专用向量字段。PostgreSQL 配合 pgvector、部分 MySQL 产品或版本以及 Elasticsearch、OpenSearch 等系统也可以提供向量索引和近邻检索能力。真正的区别在于你的数据系统是否具备成熟的向量索引、元数据过滤、扩缩容、持久化和运维能力能否在目标数据量与并发下满足延迟和召回率要求。目录先说结论向量数据库解决什么问题一、为什么传统索引不擅长语义检索二、向量数据库里存的是什么三、“相似”究竟是怎么算出来的四、向量数据库为什么能更快HNSW从高速公路逐级驶入目标街区五、向量数据库在 RAG 中怎么工作离线建库在线问答六、哪些场景需要向量数据库七、主流向量数据库怎么选更实用的选择顺序1. 先看现有技术栈2. 再看部署要求3. 最后用真实数据压测八、10 分钟完成一次中文语义检索第一步安装依赖第二步写入文本并执行检索第三步把检索结果接入 RAG九、上线前重点检查什么1. 检索质量2. 性能与成本3. 工程与安全十、五个常见误区误区一使用向量数据库后RAG 就会准确误区二相似度达到 0.8 就一定相关误区三top-k 越大越好误区四原文变化后数据库会自动理解误区五向量检索可以完全替代关键词检索总结一、为什么传统索引不擅长语义检索传统关系型数据库通常使用 B 树索引。它很适合两类查询精确匹配例如id 5范围查询例如age 18。但向量检索要解决的是另一个问题给定一个查询向量在高维空间中找出距离最近的 top-k 个向量。这类问题叫作最近邻搜索。如果没有向量索引最直接的方法是让查询向量和数据库中的每个向量逐一计算距离然后排序取出最相似的前 k 条。这种方式叫作精确搜索也常被称为暴力搜索。假设知识库中有 100 万个文本块每个向量是 1536 维仅逐维比较的规模就是1536 × 1,000,000 1,536,000,000也就是约 15.36 亿个维度参与计算。实际耗时还会受到距离算法、数据类型、硬件、并行方式和内存带宽影响因此不能简单断言“一定需要几秒”。但是随着数据量和并发继续增长每次查询都进行全量扫描通常会变得非常昂贵。向量数据库的核心价值就是借助专用索引减少每次查询需要比较的候选数量。二、向量数据库里存的是什么一条典型的向量数据库记录通常包含三部分{ id: doc-001-chunk-03, vector: [0.012, -0.083, 0.107], metadata: { document_id: doc-001, category: RAG, updated_at: 2026-07-29 } }其中id唯一标识用于更新和删除数据vectorEmbedding 模型生成的高维向量metadata文档来源、分类、权限、时间等可过滤字段。有些向量数据库也会保存原文有些项目则只在向量库中保存 ID 和元数据把完整正文放在对象存储、搜索引擎或者关系型数据库中。因此向量数据库不一定是业务数据的唯一数据源。三、“相似”究竟是怎么算出来的向量数据库需要通过距离或者相似度判断两个向量是否接近。常见的计算方式有三种度量方式直观含义常见场景余弦相似度比较两个向量的方向是否接近文本语义检索最常见点积同时受到方向和向量长度影响模型明确按点积训练或者向量已经归一化欧氏距离比较高维空间中的直线距离图像、聚类以及部分专用模型具体选择哪一种不能只凭经验应该优先参考 Embedding 模型的官方说明。还要特别注意写入和查询必须使用相同的模型、向量维度、归一化方式和距离度量。例如你不能使用模型 A 为文档生成向量却使用模型 B 为用户问题生成向量。即使两个模型的维度相同它们的向量空间通常也不兼容。四、向量数据库为什么能更快大规模向量检索通常会使用 ANN。ANN 的全称是 Approximate Nearest Neighbor也就是近似最近邻搜索。它不会遍历数据库中的全部向量而是快速找到一组最有希望的候选然后从候选中选出 top-k。这里的关键词是“近似”。向量数据库通常不保证每次都返回数学意义上绝对最近的结果而是在以下几个指标之间做取舍查询延迟检索召回率内存占用索引构建时间数据写入速度。HNSW从高速公路逐级驶入目标街区HNSW 是目前常见的 ANN 索引之一。它的全称是 Hierarchical Navigable Small World中文通常翻译为分层可导航小世界图。名字看起来复杂但可以把它理解为一张多层道路网络高层节点数量少、跨度大负责快速接近目标区域越往下节点越密搜索越精细最底层包含全部节点用于确定最终候选。查询时系统会从高层入口开始沿着“更接近查询向量”的邻居不断移动然后逐层向下搜索。它有点像先走高速公路到达目标城区再进入城市主干道最后进入具体街道寻找门牌号。整个过程不需要检查城市里的每一栋房子。HNSW 中常见的参数包括M每个节点大致保留多少连接efConstruction建立索引时搜索的候选规模efSearch执行查询时搜索的候选规模。通常来说参数越大召回率可能越高但也会占用更多内存、增加建库时间或者提高查询延迟。除了 HNSW还有 IVF、PQ、DiskANN 等索引或者量化方案分别适合不同的数据规模、硬件条件和精度要求。所以以下说法都不够严谨“向量数据库一定可以在几毫秒内完成查询”“HNSW 一定能够带来 100 倍性能提升”“某个数据库在所有场景下都比另一个数据库快”。真实性能必须结合自己的数据量、向量维度、过滤条件、并发量和硬件环境进行测试。五、向量数据库在 RAG 中怎么工作一个完整的 RAG 检索过程可以分为离线建库和在线问答两部分。离线建库读取 PDF、网页、Word 等原始文档按照语义或者长度切成若干文本块使用 Embedding 模型把每个文本块转成向量把向量、文本块 ID 和元数据写入向量数据库建立或者更新向量索引。最终形成的链路是原始文档 ↓ 文档解析 ↓ 文本切块 ↓ Embedding ↓ 向量 ID 元数据 ↓ 向量数据库在线问答使用同一个 Embedding 模型把用户问题转成查询向量在向量数据库中检索 top-k 个相似文本块根据用户权限、时间、分类等元数据进行过滤必要时使用 Reranker 对候选结果重新排序把筛选后的内容连同用户问题交给大语言模型大模型根据检索内容生成答案。在线链路可以表示为用户问题 ↓ Embedding ↓ 向量检索 ↓ 元数据过滤 ↓ Reranker可选 ↓ 相关文本 用户问题 ↓ 大语言模型生成答案需要注意向量数据库只负责找到候选资料并不会自动保证答案正确。切块策略、Embedding 模型、召回数量、过滤规则、重排模型和提示词都会影响最终效果。六、哪些场景需要向量数据库向量数据库适合以下场景企业知识库和 RAG 问答按语义而不是关键词搜索文章、商品或者代码相似商品、内容或者用户推荐以图搜图、音频检索等多模态搜索相似内容检测、聚类和去重AI Agent 的长期记忆检索。以下情况不一定需要单独引入向量数据库数据量很小精确扫描已经足够快只需要按照 ID、状态、时间等结构化字段查询团队已经使用 PostgreSQL、Elasticsearch 或 OpenSearch其向量能力能够满足需求项目仍处于功能验证阶段不值得过早增加新的基础设施。判断标准不应该是“项目使用了 AI”而应该是是否真的需要从大量非结构化内容中按照语义相似度检索候选七、主流向量数据库怎么选目前常见的向量数据库或者向量检索方案包括 Chroma、Pinecone、Milvus、Qdrant、Weaviate 和 pgvector。方案主要特点更适合的场景需要注意Chroma上手简单Python 生态友好可以本地持久化学习、原型、小型应用生产能力需要根据部署模式和实际规模验证Pinecone全托管服务基础设施负担较小希望快速上线、不想自建运维成本、数据驻留和供应商绑定Milvus开源、分布式、索引选择丰富大规模检索、私有化部署架构和运维复杂度相对较高QdrantRust 实现过滤能力和开发体验较好自托管或者云端生产应用仍需规划内存、磁盘和副本Weaviate支持混合检索和多种模型集成需要结合关键词与向量检索模块配置和资源规划需要评估pgvector直接复用 PostgreSQL 和 SQL 生态已经使用 PostgreSQL、规模和并发中等超大规模和高并发前需要认真压测更实用的选择顺序1. 先看现有技术栈如果项目已经使用 PostgreSQL、Elasticsearch 或 OpenSearch可以优先验证现有系统的向量能力。这样可以减少数据库数量也能降低运维成本和数据同步复杂度。2. 再看部署要求如果数据必须保存在内网可以考虑MilvusQdrantWeaviatepgvector。如果不希望维护服务器、扩容和备份可以考虑托管服务。3. 最后用真实数据压测不要只看官方发布的性能数字。应该使用自己的向量维度数据规模元数据过滤条件查询并发量top-k目标召回率。进行实际测试后再做决定。八、10 分钟完成一次中文语义检索下面使用 Chroma 和一个中文 Embedding 模型实现一个最小可运行的语义检索示例。第一步安装依赖pip install chromadb sentence-transformers首次运行时会下载模型需要能够访问对应的模型仓库。第二步写入文本并执行检索import chromadb from sentence_transformers import SentenceTransformer # 加载中文 Embedding 模型 model SentenceTransformer(BAAI/bge-small-zh-v1.5) # 数据保存在当前目录的 chroma_db 文件夹中 client chromadb.PersistentClient(path./chroma_db) collection client.get_or_create_collection( nameai_howto, metadata{hnsw:space: cosine}, ) # 准备演示数据 documents [ RAG 会先从外部知识库检索相关资料再让大模型生成回答。, 提示词工程通过角色、任务、约束和示例改善模型输出。, 向量数据库可以按照语义相似度检索文本、图片等非结构化数据。, ] ids [ rag-001, prompt-001, vector-001, ] metadatas [ {category: RAG}, {category: Prompt}, {category: RAG}, ] # 生成文档向量 document_vectors model.encode( documents, normalize_embeddingsTrue, ).tolist() # 写入向量数据库 collection.upsert( idsids, documentsdocuments, metadatasmetadatas, embeddingsdocument_vectors, ) # 用户问题 question 怎样根据意思找到知识库中相关的内容 # 查询时必须使用同一个模型和相同的归一化方式 query_vector model.encode( [question], normalize_embeddingsTrue, ).tolist() # 检索最相关的两条内容 result collection.query( query_embeddingsquery_vector, n_results2, include[documents, metadatas, distances], ) # 输出结果 for text, metadata, distance in zip( result[documents][0], result[metadatas][0], result[distances][0], ): print( fdistance{distance:.4f} | f{metadata[category]} | f{text} )虽然用户问题中没有出现“向量数据库”这个完整关键词检索结果仍然应该优先返回与“语义检索”“知识库”相关的内容。这就是向量搜索和单纯关键词匹配的区别。第三步把检索结果接入 RAG实际项目中可以把检索到的文本拼成上下文contexts result[documents][0] context_text \n\n.join(contexts) prompt f请只根据参考资料回答问题。 如果参考资料不足请明确说明无法回答。 参考资料 {context_text} 用户问题 {question} 接下来把这个prompt传给你所使用的大模型 API就完成了一个最小的 RAG 问答流程。生产环境还应该为检索结果附上来源链接并处理以下问题文档权限多租户数据隔离提示词注入敏感信息文档版本引用来源。九、上线前重点检查什么1. 检索质量建议建立一组真实问题和标准相关文档然后评估RecallkMRRnDCG最终问答准确率。同时比较不同 Embedding 模型不同切块大小不同 top-k是否加入关键词检索是否加入 Reranker。对于人名、产品编号、错误码等精确信息通常可以考虑混合检索而不是只依赖向量搜索。2. 性能与成本压测时应该使用真实的数据规模、向量维度、过滤比例和并发量。不要只观察平均延迟还要关注P50P95P99。同时评估向量占用的内存索引占用的内存和磁盘数据副本成本托管服务调用费用新增或者更新数据后的可见时间。3. 工程与安全生产环境至少应该做到记录 Embedding 模型名称和版本记录向量维度、归一化方式和距离度量更换模型后重新生成全部向量在服务端执行租户、部门和文档权限过滤保留原始文档来源和版本支持数据更新和删除做好备份、监控、容量规划和故障恢复。十、五个常见误区误区一使用向量数据库后RAG 就会准确向量数据库只负责候选召回。最终答案还取决于原始数据质量文档切块Embedding 模型检索策略Reranker提示词大语言模型。误区二相似度达到 0.8 就一定相关不同模型、归一化方式和距离度量产生的分数不可直接比较。阈值必须通过自己的业务数据和评测集确定。误区三top-k 越大越好召回更多内容可能提高覆盖率但也会增加模型调用成本占用更多上下文引入不相关信息干扰大模型生成答案。误区四原文变化后数据库会自动理解原始文档发生变化后通常需要找到受影响的文本块重新切块重新生成向量更新或者删除旧记录。误区五向量检索可以完全替代关键词检索对于产品编号、人名、专有名词、错误码和精确短语关键词检索往往更稳定。因此很多生产系统最终会采用关键词检索 向量检索 Reranker也就是混合检索方案。总结记住下面四句话就够了向量数据库的核心能力是在大量高维向量中进行相似度检索并结合元数据过滤普通数据库可以存向量部分传统数据系统也已经支持向量检索是否另建系统取决于规模和需求HNSW 等 ANN 索引通过近似搜索降低查询延迟但效果和速度必须使用真实数据验证在 RAG 中向量数据库只是检索环节Embedding、切块、混合检索、重排和权限控制同样重要。如果只是学习和制作原型可以从 Chroma 开始。如果项目已经使用 PostgreSQL可以先测试 pgvector。如果要面向生产环境再根据托管、私有化、团队运维能力和真实压测结果选择 Pinecone、Milvus、Qdrant 或 Weaviate。

相关新闻

VLAN间通信的三种实现方案与实战配置

VLAN间通信的三种实现方案与实战配置

1. VLAN通信基础与核心挑战当我们在企业网络中部署VLAN时,最常被问到的就是"不同VLAN之间如何通信"。这看似简单的问题背后,涉及二层交换与三层路由的协同工作。我管理过的多个园区网项目中,90%的初期故障都源于VLAN间通信配置不当…

2026/7/30 10:51:46阅读更多 →
Qt核心知识地图:从信号槽到多线程的实战指南

Qt核心知识地图:从信号槽到多线程的实战指南

1. 从零到一:为什么你需要一份自己的Qt核心知识地图如果你刚开始接触Qt,或者已经用它做过一两个项目,但总感觉对它的理解是“东一榔头,西一棒子”,那么这篇文章就是为你准备的。我见过太多开发者,包括早期的…

2026/7/30 10:51:46阅读更多 →
告别低效写作:AI论文写作工具测评与推荐

告别低效写作:AI论文写作工具测评与推荐

2026年真正好用的AI论文写作工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …

2026/7/30 10:51:46阅读更多 →
Azure VM Agent状态异常排查与修复指南

Azure VM Agent状态异常排查与修复指南

1. 问题引入:当Azure VM的“心脏”罢工时 如果你在Azure门户里管理虚拟机,突然在概览页看到“Azure virtual machine agent status is not ready”这个警告,心里多半会咯噔一下。这个Agent,你可以把它理解为虚拟机在Azure云平台里…

2026/7/30 12:12:10阅读更多 →
ISR优先级怎么设——三个原则

ISR优先级怎么设——三个原则

一句话: 通讯帧不能丢 最高优先级,显示帧可偶尔延迟 次高,时基抖动不影响通讯 最低。优先级不是随便设的——设反了通讯丢帧、定时不准。适合谁读:配 NVIC 优先级全写 0 的嵌入式开发者。三个原则 优先级外设原因最高(0/0)上位机串口协议帧…

2026/7/30 12:12:10阅读更多 →
ubuntu coredump 环境配置操作指南

ubuntu coredump 环境配置操作指南

ubuntu coredump 环境配置操作指南 1. 概述 本文档说明如何配置 Linux coredump 环境,用于捕获程序崩溃时的核心转储文件,便于使用 gdb 进行问题定位。 coredump 是程序崩溃时的内存快照,包含崩溃时的寄存器状态、堆栈信息等,对于…

2026/7/30 12:12:10阅读更多 →
【计算机毕业设计单片机案例】基于 STM32 的按键切换模式火灾监测控制系统设计 基于单片机传感采集的自动灭火声光报警系统设计(012601)

【计算机毕业设计单片机案例】基于 STM32 的按键切换模式火灾监测控制系统设计 基于单片机传感采集的自动灭火声光报警系统设计(012601)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/7/30 12:12:10阅读更多 →
软著公开信息批量采集:OpenClaw 抓取软件著作权公开数据,分析企业技术布局方向

软著公开信息批量采集:OpenClaw 抓取软件著作权公开数据,分析企业技术布局方向

一、引言在数字经济深入发展的今天,软件已经成为推动各行各业变革的核心驱动力。软件著作权作为软件产品的重要知识产权凭证,其登记信息中蕴含着大量的公开数据:软件名称、著作权人、开发完成日期、首次发表日期、权利范围、登记号等。这些信…

2026/7/30 12:12:10阅读更多 →
SpringCloud微服务架构在手机商城系统的实践与优化

SpringCloud微服务架构在手机商城系统的实践与优化

1. 项目概述:微服务架构下的手机商城管理系统 去年参与的一个电商平台重构项目让我深刻体会到,传统单体架构在应对手机商城这类业务场景时的力不从心。当促销活动带来流量激增时,整个系统就像被塞满的集装箱货轮——任何一个模块出问题都可能…

2026/7/30 12:10:06阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →