什么是向量数据库:RAG 背后的记忆原理与选型入门

AI 能'记住'你的文档,靠的不是大模型本身而是向量数据库。嵌入、相似度检索、Top-K 命中这套原理讲明白,个人和企业选型两条路径给结论。

直接回答:向量数据库是把文本、图片等非结构化数据转成一串数字(向量),然后按"语义相近"来检索的数据库。它是 RAG(检索增强生成)的核心部件——大模型本身没有记忆,你上传的文档能被 AI"记住"并精准引用,靠的就是先把内容切块、转成向量存进向量库,提问时检索出最相关的几段喂给模型。理解了这个原理,RAG 的所有玄学问题(为什么答非所问、为什么引用不准)都能找到解释。

一、核心原理:三步走

  1. 嵌入(Embedding):用嵌入模型把每个文本块变成一个几百到上千维的向量——语义相近的内容,向量在空间里的位置也相近。"如何报销差旅费"和"出差的费用怎么报"在字面上不同,向量却几乎重合,这就是语义检索比关键词检索强的地方。
  2. 存储与索引:向量存入数据库并建立索引(HNSW、IVF 等算法把"全量比较"优化成近似最近邻搜索,亿级数据毫秒级返回)。
  3. 相似度检索:提问同样转成向量,库里找距离最近的 Top-K 个文本块,作为上下文喂给大模型生成回答。检索质量决定回答上限——喂进去的段落不对,模型再强也是胡答。

二、为什么会"答错":从向量视角看 RAG 的坑

  • 切块不合理:一段话被切成两半,向量只代表半句话,检索自然不准——切块要按语义边界(段落、标题)而非固定字数;
  • Top-K 太少:答案跨了三个文档段,只召回两段,模型只能猜——关键问题适当调大 K;
  • 混合检索缺失:纯向量检索对"产品型号、合同编号"这类精确词不敏感——生产级方案普遍加回关键词检索(BM25)做混合,精确词走倒排、语义走向量,两头兼顾;
  • 元数据过滤:多租户、多部门知识库必须带权限/范围过滤,检索"范围不对"既是质量问题也是安全问题。

三、选型:个人和企业两条路

  • 个人/小团队:优先用带向量库的一体化工具——AnythingLLM、Dify、RAGFlow 这类开箱方案内置向量库(多数默认 SQLite+向量扩展或内嵌 Chroma/Qdrant),零运维起步;本地跑 Ollama 嵌入模型可完全离线。
  • 企业/生产环境:独立向量库按生态选——Qdrant、Milvus、Weaviate、pgvector(已有 PostgreSQL 团队的最低成本选项);选型看四点:数据规模与写入频率、是否需要混合检索与元数据过滤、与现有技术栈的耦合度、运维成本。
  • 云服务:不想自建就用云厂商的托管向量服务,按量付费,把运维外包出去。

四、一个务实的入门路径

先用一体化工具把 RAG 知识库跑通(问题→检索→回答的完整链路),观察哪里答错,再回头针对性调切块、K 值和检索策略;规模大了再考虑独立向量库。向量数据库不是越强越好——决定效果的先是检索策略,其次才是选哪个库。把"喂什么、怎么喂"想明白,比纠结向量库品牌有用得多。

常见问题

向量数据库和普通 MySQL 是替换关系吗?

不是替换是互补:业务数据(订单、用户)继续放关系库,非结构化内容(文档、图片、对话)的语义检索走向量库。常见组合是 pgvector——在 PostgreSQL 里同时管两种数据,小团队成本最低。

向量检索需要联网调用大模型接口吗?

嵌入和检索本身不需要大模型:嵌入模型可以本地跑(Ollama 等),向量库是独立服务。只有最后生成回答那步要调大模型——整个链路可以拆开部署,敏感数据场景也能做到本地闭环。

企业知识库用向量库,数据安全怎么保障?

三层做法:本地部署向量库与嵌入模型不外传;按部门/租户做元数据过滤,检索范围锁死在授权内;文档更新时同步增删向量,离职员工权限回收不残留历史内容。

切块大小多少合适、怎么验证效果?

没有万能值,按内容粒度定:文档按段落/标题切(200-500 字量级常见),表格和代码整块保留。验证方法最直接——拿真实问题测召回,答案所在段落没被召回就调大块或加关键词混合检索。


把"喂什么、怎么喂"想明白,是 RAG 做对的第一步;向量库只是执行它的仓库。