<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>向量检索 on 纪伟的个人博客</title><link>https://www.jiwei.space/tags/%E5%90%91%E9%87%8F%E6%A3%80%E7%B4%A2/</link><description>Recent content in 向量检索 on 纪伟的个人博客</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Sun, 05 Apr 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://www.jiwei.space/tags/%E5%90%91%E9%87%8F%E6%A3%80%E7%B4%A2/index.xml" rel="self" type="application/rss+xml"/><item><title>RAG 进阶：从 naive 到 Agentic（2026）</title><link>https://www.jiwei.space/posts/ai/advanced-rag/</link><pubDate>Sun, 05 Apr 2026 10:00:00 +0800</pubDate><guid>https://www.jiwei.space/posts/ai/advanced-rag/</guid><description>&lt;h2 id="写在前面"&gt;&lt;a href="#%e5%86%99%e5%9c%a8%e5%89%8d%e9%9d%a2" class="header-anchor"&gt;&lt;/a&gt;写在前面
&lt;/h2&gt;&lt;p&gt;2024 年的 RAG &amp;ldquo;Hello World&amp;rdquo; 是这样的：&lt;strong&gt;把 PDF 切一切塞进向量库，查询时检索 top-K 喂给 LLM&lt;/strong&gt;。当年够用，2026 年不够了——这套 naive 流程在生产里召回差、容易幻觉、答非所问。&lt;/p&gt;
&lt;p&gt;这篇讲 RAG 怎么从 naive 进化到 production-grade：chunking、混合检索、reranking、GraphRAG，再到 2026 的 SOTA——Adaptive / Agentic RAG。地基是上一篇《向量检索入门：embedding、ANN 与向量库选型》讲的向量检索；这篇讲怎么把它用对。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;这是 AI 分类的第二篇（第一篇是《Claude Code 使用指南》）。它和数据库分类的向量检索篇互为表里：那篇是&amp;quot;存储/检索原语&amp;quot;，这篇是&amp;quot;之上的应用范式&amp;quot;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一naive-rag-长什么样为什么不够"&gt;&lt;a href="#%e4%b8%80naive-rag-%e9%95%bf%e4%bb%80%e4%b9%88%e6%a0%b7%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%8d%e5%a4%9f" class="header-anchor"&gt;&lt;/a&gt;一、naive RAG 长什么样，为什么不够
&lt;/h2&gt;&lt;p&gt;经典三步：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;离线: 文档 → 切块 → embedding → 存向量库
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;在线: 查询 → embedding → 向量检索 top-K → 拼进 prompt → LLM 生成答案
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它的问题一针一线都在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;切得粗&lt;/strong&gt;：固定大小切块会截断语义、切碎表格和代码，检索到的块缺上下文；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;召回差&lt;/strong&gt;：纯向量检索对&lt;strong&gt;精确词、专有名词、代码、数字&lt;/strong&gt;反而不如关键词——&amp;ldquo;ERROR_0x80070005&amp;rdquo; 这种，向量相似没用，字面匹配才准；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;幻觉&lt;/strong&gt;：LLM 拿到不相关的上下文也硬编一通，没有&amp;quot;这个检索结果到底支不支持回答&amp;quot;的判断；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一律重型&lt;/strong&gt;：不管查询是&amp;quot;公司成立于哪年&amp;quot;还是&amp;quot;你好&amp;quot;，都跑同一套检索+生成，浪费。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面每一节都是在修其中一个洞。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二chunking第一道关"&gt;&lt;a href="#%e4%ba%8cchunking%e7%ac%ac%e4%b8%80%e9%81%93%e5%85%b3" class="header-anchor"&gt;&lt;/a&gt;二、chunking：第一道关
&lt;/h2&gt;&lt;p&gt;切块决定了&amp;quot;检索能召回什么&amp;quot;。固定大小（比如每 500 字符）是最朴素也最差的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;块太大 → 一个块塞了多个主题，检索时相似度被稀释，召回不准；&lt;/li&gt;
&lt;li&gt;块太小 → 上下文断裂，&amp;ldquo;它指代什么&amp;quot;丢了，LLM 拿到片段也看不懂。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;进阶做法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语义切块&lt;/strong&gt;：按句子/段落的语义边界切（用模型判断&amp;quot;这里是不是话题转折点&amp;rdquo;），而不是按字符数；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;层次切块（parent-child）&lt;/strong&gt;：检索用&lt;strong&gt;小子块&lt;/strong&gt;（精准命中），但喂给 LLM 时返回它所属的&lt;strong&gt;大父块&lt;/strong&gt;（保留完整上下文）。这是生产里最常用的一招；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;带元数据&lt;/strong&gt;：每个块附上标题、章节、来源、时间——检索时能按元数据过滤（&amp;ldquo;只在 2025 年的文档里找&amp;rdquo;）。&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;chunk 大小是 recall（怕漏）vs 噪声（怕混）的权衡，没有标准答案，要按你的文档和评估指标调。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="三混合检索hybrid-search向量--关键词"&gt;&lt;a href="#%e4%b8%89%e6%b7%b7%e5%90%88%e6%a3%80%e7%b4%a2hybrid-search%e5%90%91%e9%87%8f--%e5%85%b3%e9%94%ae%e8%af%8d" class="header-anchor"&gt;&lt;/a&gt;三、混合检索（Hybrid Search）：向量 + 关键词
&lt;/h2&gt;&lt;p&gt;纯向量检索有个盲区：&lt;strong&gt;它擅长&amp;quot;意思像&amp;quot;，不擅长&amp;quot;字面就是&amp;quot;&lt;/strong&gt;。代码、错误码、人名、型号、精确数字——这些你要的是字面匹配，向量相似反而会把&amp;quot;长得像的错误码&amp;quot;排前面。&lt;/p&gt;
&lt;p&gt;于是&lt;strong&gt;混合检索&lt;/strong&gt;：同时跑两路——&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;查询 ──┬── BM25 / 倒排（关键词路）──→ 召回 A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── 向量检索（语义路） ──→ 召回 B
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; RRF（Reciprocal Rank Fusion）融合排序
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;BM25 是《数据库系列（三）：索引原理》里倒排索引那套传统检索；向量检索是上一篇讲的语义检索。两路各自召回 top-K，再用 &lt;strong&gt;RRF（倒数排名融合）&lt;/strong&gt; 把两个排名合成一个——取两者之长。&lt;strong&gt;这是 production RAG 的标配&lt;/strong&gt;，纯向量检索在 2026 已经很少单独用了。&lt;/p&gt;
&lt;p&gt;pgvector + PG 的全文检索、或者 Elasticsearch，都能在一个库里同时跑这两路。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四reranking检索分两阶段"&gt;&lt;a href="#%e5%9b%9breranking%e6%a3%80%e7%b4%a2%e5%88%86%e4%b8%a4%e9%98%b6%e6%ae%b5" class="header-anchor"&gt;&lt;/a&gt;四、reranking：检索分两阶段
&lt;/h2&gt;&lt;p&gt;为什么检索要分两阶段？因为&amp;quot;快+全&amp;quot;和&amp;quot;准&amp;quot;没法用一个模型兼顾：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;召回阶段&lt;/strong&gt;（要快、要全）：用 &lt;strong&gt;bi-encoder&lt;/strong&gt;——查询和文档分别独立编码成向量，靠 ANN 飞速从百万文档里捞回 top-50。糙但快。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重排阶段&lt;/strong&gt;（要准）：用 &lt;strong&gt;cross-encoder&lt;/strong&gt;——把&amp;quot;查询 + 文档&amp;quot;作为一对一起喂进模型，输出一个精确的相关性分数。准但慢，所以只对召回的小集合（top-50）跑，重排出 top-5。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;百万文档 ──bi-encoder + ANN──→ top-50 ──cross-encoder rerank──→ top-5 ──→ LLM
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (快，召回) (慢，精排)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;典型 reranker：开源的 &lt;code&gt;bge-reranker&lt;/code&gt;、Cohere Rerank。这一步对最终答案质量提升极大——召回里混进的不相关块，rerank 基本能剔掉。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五graphrag知识图谱加持"&gt;&lt;a href="#%e4%ba%94graphrag%e7%9f%a5%e8%af%86%e5%9b%be%e8%b0%b1%e5%8a%a0%e6%8c%81" class="header-anchor"&gt;&lt;/a&gt;五、GraphRAG：知识图谱加持
&lt;/h2&gt;&lt;p&gt;向量检索本质是&amp;quot;&lt;strong&gt;片段相似&lt;/strong&gt;&amp;quot;。但有些问题是&lt;strong&gt;关系型&lt;/strong&gt;的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;A 公司的 CEO 之前在哪些公司任职？&amp;rdquo; —— 答案散在多份文档里，要靠&amp;quot;人→公司→职位&amp;quot;的关系串起来；&lt;/li&gt;
&lt;li&gt;&amp;ldquo;X 和 Y 的区别？&amp;rdquo; —— 要把两个实体的属性拉出来对比。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种&lt;strong&gt;多跳推理&lt;/strong&gt;，纯向量检索（找相似片段）做不好。&lt;strong&gt;GraphRAG&lt;/strong&gt; 的思路：离线时先把文档抽成&lt;strong&gt;知识图谱&lt;/strong&gt;（实体 + 关系），检索时结合&lt;strong&gt;图遍历 + 向量&lt;/strong&gt;——向量找入口实体，图遍历顺着关系找答案。&lt;/p&gt;
&lt;p&gt;Neo4j 是这块的代表（把图数据库和向量检索结合）。GraphRAG 适合&lt;strong&gt;关系密集、需要跨文档推理&lt;/strong&gt;的领域（医药、法律、尽调）；普通 FAQ 类 RAG 用不上，别为了用而用。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六adaptive--agentic-rag2026-的-sota"&gt;&lt;a href="#%e5%85%adadaptive--agentic-rag2026-%e7%9a%84-sota" class="header-anchor"&gt;&lt;/a&gt;六、Adaptive / Agentic RAG：2026 的 SOTA
&lt;/h2&gt;&lt;p&gt;前面四节都是&amp;quot;管线固定、查询来了无脑跑一遍&amp;quot;的 RAG。2026 的前沿是把 RAG 变&lt;strong&gt;聪明&lt;/strong&gt;——让系统自己决定怎么检索：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Adaptive RAG&lt;/strong&gt;（查询路由）：加一个分类器，先判断查询复杂度，再路由到不同管线——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;简单事实查询 → 直接向量检索一次就答；&lt;/li&gt;
&lt;li&gt;复杂推理查询 → 多步检索 / 上 GraphRAG；&lt;/li&gt;
&lt;li&gt;闲聊 / 不需要检索的 → 跳过检索直接答。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;别对所有查询都跑重型管线，省算力、降延迟。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Self-RAG&lt;/strong&gt;（自我反思）：LLM 在过程中自问三件事——&amp;ldquo;这个问题需要检索吗？&amp;ldquo;&amp;ldquo;检索回来的相关吗？&amp;ldquo;&amp;ldquo;我的回答有依据吗？&amp;quot;——不相关就重检索，没依据就拒答。自带质量门。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Agentic RAG&lt;/strong&gt;：把 RAG 包成一个 &lt;strong&gt;Agent&lt;/strong&gt;——能多次检索、能调工具（计算器、SQL、API）、能迭代优化答案，而不是一次性检索+生成。这是当前最前沿的形态，也是&amp;quot;让 agent 帮你干活&amp;quot;那个大方向里的具体一例。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;这一节的演进方向很清楚：从&lt;strong&gt;固定管线&lt;/strong&gt;到&lt;strong&gt;按需路由&lt;/strong&gt;到&lt;strong&gt;自我反思&lt;/strong&gt;到&lt;strong&gt;自主 Agent&lt;/strong&gt;。复杂度和能力都在涨，但不是每个应用都需要 Agentic——多数企业 RAG 到 chunking + 混合检索 + rerank 就够好了。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="七生产化评估与监控"&gt;&lt;a href="#%e4%b8%83%e7%94%9f%e4%ba%a7%e5%8c%96%e8%af%84%e4%bc%b0%e4%b8%8e%e7%9b%91%e6%8e%a7" class="header-anchor"&gt;&lt;/a&gt;七、生产化：评估与监控
&lt;/h2&gt;&lt;p&gt;RAG 上线后最头疼的是&amp;rdquo;&lt;strong&gt;怎么知道它好不好&lt;/strong&gt;&amp;quot;。靠人肉看答案不靠谱，要有指标：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;评估&lt;/strong&gt;（离线）：用 &lt;strong&gt;RAGAS&lt;/strong&gt; 这类框架打分——&lt;code&gt;faithfulness&lt;/code&gt;（回答有没有依据，不幻觉）、&lt;code&gt;answer relevance&lt;/code&gt;（答没答到点上）、&lt;code&gt;context precision/recall&lt;/code&gt;（检索回来的东西有没有用）。改一处 chunking 或换一个 reranker，跑评估看分数升降。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;监控&lt;/strong&gt;（在线）：检索召回率、端到端延迟、幻觉率、用户反馈（👍👎）。出问题能定位是检索层还是生成层——这和《后端架构实战（七）：可观测性》的链路追踪是同一思路：给每次 RAG 调用一个 traceId，把检索、rerank、生成分段打 span。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;增量更新&lt;/strong&gt;：文档变了，别全量重建索引——按文档版本增量 re-embedding。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="小结"&gt;&lt;a href="#%e5%b0%8f%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;小结
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;naive RAG&lt;/strong&gt;（切块→向量→生成）是起点，生产里召回差、易幻觉。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;进阶三件套&lt;/strong&gt;：&lt;strong&gt;chunking&lt;/strong&gt;（语义/层次切块）+ &lt;strong&gt;混合检索&lt;/strong&gt;（BM25 + 向量 + RRF）+ &lt;strong&gt;reranking&lt;/strong&gt;（bi-encoder 召回、cross-encoder 精排）。这是 production RAG 的标配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GraphRAG&lt;/strong&gt;：补&amp;quot;关系型/多跳推理&amp;quot;的洞，关系密集领域才用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026 SOTA&lt;/strong&gt;：&lt;strong&gt;Adaptive RAG&lt;/strong&gt;（查询路由）→ &lt;strong&gt;Self-RAG&lt;/strong&gt;（自我反思）→ &lt;strong&gt;Agentic RAG&lt;/strong&gt;（自主 Agent）。方向是让 RAG 从固定管线变聪明。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生产化&lt;/strong&gt;：评估（RAGAS）+ 监控（traceId 贯穿检索/rerank/生成）+ 增量更新。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话：&lt;strong&gt;2026 的 RAG，&amp;ldquo;塞进向量库&amp;quot;只是地基；真正的功夫在 chunking、混合检索、rerank 和评估上。&lt;/strong&gt; 地基（向量检索）上一篇讲过了，这篇是盖在上面的楼。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://aishwaryasrinivasan.substack.com/p/all-you-need-to-know-about-rag-in" target="_blank" rel="noopener"
 &gt;All You Need to Know About RAG (in 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.turingpost.com/p/ragtypes" target="_blank" rel="noopener"
 &gt;20 Advanced RAG Types to Know in 2026 — Turing Post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.stackai.com/blog/advanced-rag-techniques" target="_blank" rel="noopener"
 &gt;Advanced RAG Techniques — StackAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://neo4j.com/blog/genai/advanced-rag-techniques/" target="_blank" rel="noopener"
 &gt;Advanced RAG Techniques — Neo4j（GraphRAG）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://codelabs.developers.google.com/codelabs/production-ready-ai-with-gc/8-advanced-rag-methods/advanced-rag-methods" target="_blank" rel="noopener"
 &gt;Advanced RAG Methods — Google Codelabs（chunking / reranking）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;配套地基篇：《向量检索入门：embedding、ANN 与向量库选型（2026）》（本博客）&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>向量检索入门：embedding、ANN 与向量库选型（2026）</title><link>https://www.jiwei.space/posts/database/vector-search/</link><pubDate>Sat, 28 Mar 2026 10:00:00 +0800</pubDate><guid>https://www.jiwei.space/posts/database/vector-search/</guid><description>&lt;h2 id="写在前面"&gt;&lt;a href="#%e5%86%99%e5%9c%a8%e5%89%8d%e9%9d%a2" class="header-anchor"&gt;&lt;/a&gt;写在前面
&lt;/h2&gt;&lt;p&gt;传统搜索靠关键词（BM25 / 倒排索引），找的是&lt;strong&gt;字面匹配&lt;/strong&gt;。但&amp;quot;怎么提高查询速度&amp;quot;这篇和&amp;quot;如何让 SQL 跑得更快&amp;quot;意思一样、用词不同——关键词检索抓不到这层关系。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;语义检索&lt;/strong&gt;要的是&amp;quot;意思匹配&amp;quot;，向量检索就是它的地基。这篇讲三件事：向量检索的原理（embedding / 相似度 / ANN）、2026 主流向量库怎么选、以及为什么大多数项目 &lt;strong&gt;pgvector 就够了&lt;/strong&gt;。RAG 应用是下一篇的事。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;这是数据库系列之外的一篇独立稿。它把&amp;quot;向量库&amp;quot;当作数据库的一个新分支——接在《数据库系列（十）：数据存储全景》里提到的 NoSQL 之后，向量库是这个时代最新的存储类型。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一为什么需要向量检索"&gt;&lt;a href="#%e4%b8%80%e4%b8%ba%e4%bb%80%e4%b9%88%e9%9c%80%e8%a6%81%e5%90%91%e9%87%8f%e6%a3%80%e7%b4%a2" class="header-anchor"&gt;&lt;/a&gt;一、为什么需要向量检索
&lt;/h2&gt;&lt;p&gt;回顾一下传统检索：《数据库系列（三）：索引原理》讲过&lt;strong&gt;倒排索引&lt;/strong&gt;——把文档分词，建&amp;quot;词 → 文档列表&amp;quot;的映射，搜的时候按词查。它快、它准，但它是&lt;strong&gt;词面匹配&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;词面匹配的盲区：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;查询: &amp;#34;怎么让接口更快&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 关键词检索: 找含&amp;#34;接口&amp;#34;&amp;#34;更快&amp;#34;的文档
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 找不到标题是&amp;#34;性能优化实战&amp;#34;&amp;#34;降低延迟&amp;#34;的文档（虽然讲的是同一件事）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 语义检索: 找&amp;#34;意思相近&amp;#34;的文档
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 能匹配上，因为它们在语义空间里离得近
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;向量检索补的就是这一块——&lt;strong&gt;按意思找，不是按字面找&lt;/strong&gt;。它是搜索、推荐、RAG、去重、聚类这一整类应用的底座。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二embedding把内容变成向量"&gt;&lt;a href="#%e4%ba%8cembedding%e6%8a%8a%e5%86%85%e5%ae%b9%e5%8f%98%e6%88%90%e5%90%91%e9%87%8f" class="header-anchor"&gt;&lt;/a&gt;二、embedding：把内容变成向量
&lt;/h2&gt;&lt;p&gt;用 embedding 模型把文本（或图片、音频）映射成一个&lt;strong&gt;高维稠密向量&lt;/strong&gt;，常见维度 768 / 1024 / 1536。关键是：&lt;strong&gt;语义相近的内容，向量在空间里离得近&lt;/strong&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;如何提升性能&amp;#34; → [0.12, -0.45, 0.88, ..., 0.03] (1536 维)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;怎样让程序更快&amp;#34; → [0.11, -0.43, 0.85, ..., 0.05] ← 和上面很近
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;今天的午餐&amp;#34; → [-0.67, 0.21, -0.10, ..., -0.92] ← 和上面很远
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这一步把&amp;quot;语义&amp;quot;这种没法直接算的东西，变成了&amp;quot;向量距离&amp;quot;这种可以算的东西。模型是预训练好的（OpenAI 的 text-embedding、开源的 BGE / e5 系列），你只管把文本喂进去拿向量。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;维度越高表达力越强，但存储和计算也越贵。1536 维 × 1000 万条 = 几十 GB，量级感先有。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="三相似度怎么算有多近"&gt;&lt;a href="#%e4%b8%89%e7%9b%b8%e4%bc%bc%e5%ba%a6%e6%80%8e%e4%b9%88%e7%ae%97%e6%9c%89%e5%a4%9a%e8%bf%91" class="header-anchor"&gt;&lt;/a&gt;三、相似度：怎么算&amp;quot;有多近&amp;quot;
&lt;/h2&gt;&lt;p&gt;把&amp;quot;两段内容有多像&amp;quot;变成&amp;quot;两个向量有多近&amp;quot;，常用三种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;余弦相似度&lt;/strong&gt;：看两个向量的&lt;strong&gt;夹角&lt;/strong&gt;，忽略长度。最常用于语义检索（只关心方向像不像）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;点积&lt;/strong&gt;：夹角 × 长度。当向量都归一化后，点积 = 余弦。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L2 距离&lt;/strong&gt;（欧氏）：直线距离。对绝对位置敏感。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;语义检索绝大多数用&lt;strong&gt;余弦或点积&lt;/strong&gt;。道理很简单：归一化后，&amp;ldquo;方向相近&amp;quot;就是&amp;quot;语义相近&amp;rdquo;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四为什么精确-knn-不行ann-登场"&gt;&lt;a href="#%e5%9b%9b%e4%b8%ba%e4%bb%80%e4%b9%88%e7%b2%be%e7%a1%ae-knn-%e4%b8%8d%e8%a1%8cann-%e7%99%bb%e5%9c%ba" class="header-anchor"&gt;&lt;/a&gt;四、为什么精确 KNN 不行，ANN 登场
&lt;/h2&gt;&lt;p&gt;最朴素的找最近邻：和库里&lt;strong&gt;每个向量&lt;/strong&gt;算距离，排序取前 K。这叫精确 KNN，复杂度 &lt;code&gt;O(N × d)&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;1000 万条 × 1536 维 = 每次查询 150 亿次乘加。&lt;strong&gt;完全不可行。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;于是有了 &lt;strong&gt;ANN（Approximate Nearest Neighbor，近似最近邻）&lt;/strong&gt;——用空间索引结构，&lt;strong&gt;牺牲一点 recall（召回率）换几个数量级的加速&lt;/strong&gt;。主流两种：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HNSW（分层小世界图）—— 当前主流首选
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; · 把向量建成分层导航图
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; · 查询：从顶层粗筛 → 逐层下沉到底层精修
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; · 优点：查询快、recall 高
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; · 代价：内存大（要存整张图），构建慢
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IVF（倒排文件）+ PQ（乘积量化）—— 超大规模用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; · 先把向量空间聚成 N 个簇（质心），查询只扫最近的几个簇
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; · 配合 PQ 把向量压缩省内存
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; · 优点：省内存、扛超大规模（亿级）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; · 代价：recall 调参更麻烦
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;核心 tradeoff 就三个旋钮：&lt;strong&gt;recall（准不准）× latency（快不快）× memory（省不省内存）&lt;/strong&gt;。没有银弹，按规模和精度要求选。绝大多数项目 HNSW 就够了，所以下面选型里基本都在比&amp;quot;谁把 HNSW 跑得又快又省&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五2026-向量库选型"&gt;&lt;a href="#%e4%ba%942026-%e5%90%91%e9%87%8f%e5%ba%93%e9%80%89%e5%9e%8b" class="header-anchor"&gt;&lt;/a&gt;五、2026 向量库选型
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;库&lt;/th&gt;
 &lt;th&gt;形态&lt;/th&gt;
 &lt;th&gt;最适合&lt;/th&gt;
 &lt;th&gt;一句话特点&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;pgvector&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Postgres 扩展（内嵌）&lt;/td&gt;
 &lt;td&gt;中小规模 + 已有 Postgres&lt;/td&gt;
 &lt;td&gt;默认首选；零额外运维；和关系数据能 JOIN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Pinecone&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;全托管 SaaS（serverless）&lt;/td&gt;
 &lt;td&gt;大规模 + 不想运维&lt;/td&gt;
 &lt;td&gt;企业级、开箱即用、按量付费&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Milvus&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;开源（自建）&lt;/td&gt;
 &lt;td&gt;超大规模、高吞吐&lt;/td&gt;
 &lt;td&gt;能力最全、索引类型最多、运维最重&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Qdrant&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;开源（Rust，自建/托管）&lt;/td&gt;
 &lt;td&gt;性能 + 简洁的平衡&lt;/td&gt;
 &lt;td&gt;Rust 写的，快且省资源，API 干净&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Chroma&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;轻量嵌入式&lt;/td&gt;
 &lt;td&gt;原型 / 小型 AI 应用&lt;/td&gt;
 &lt;td&gt;上手最快，几行代码跑起来&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;一句话选型&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;规模没到千万级 + 已经跑着 Postgres → &lt;strong&gt;pgvector&lt;/strong&gt;（大多数项目停在这里）；&lt;/li&gt;
&lt;li&gt;要托管省心、规模大 → &lt;strong&gt;Pinecone&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;超大规模、有自建能力 → &lt;strong&gt;Milvus&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;追性能和简洁的平衡、自建 → &lt;strong&gt;Qdrant&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;做原型、几万条以内 → &lt;strong&gt;Chroma&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="六pgvector-为什么是默认首选重点"&gt;&lt;a href="#%e5%85%adpgvector-%e4%b8%ba%e4%bb%80%e4%b9%88%e6%98%af%e9%bb%98%e8%ae%a4%e9%a6%96%e9%80%89%e9%87%8d%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;六、pgvector 为什么是默认首选（重点）
&lt;/h2&gt;&lt;p&gt;单独拎出来讲，因为这是 2026 业界共识里最该记住的一条：&lt;strong&gt;start with pgvector&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;理由很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;你大概率已经有 Postgres&lt;/strong&gt;。pgvector 是它的扩展，装上就能用，&lt;code&gt;CREATE EXTENSION vector&lt;/code&gt;，然后像普通列一样存向量、建 HNSW 索引、用 &lt;code&gt;&amp;lt;=&amp;gt;&lt;/code&gt; 算余弦——&lt;strong&gt;零额外组件、零额外运维&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;向量数据和关系数据在一个库里&lt;/strong&gt;。你能 &lt;code&gt;JOIN&lt;/code&gt; 用户表、能走事务、能用现有备份/监控/权限体系。专用向量库往往要把数据同步两份，一致性是麻烦。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;规模天花板对多数项目够用&lt;/strong&gt;。HNSW 索引下，几十万到千万级向量、中等 QPS，pgvector 都扛得住。真撑不住（通常是亿级 + 高 QPS）再迁不迟。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-- pgvector 大概长这样
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CREATE EXTENSION vector;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CREATE TABLE docs (id int, content text, emb vector(1536));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CREATE INDEX ON docs USING hnsw (emb vector_cosine_ops);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-- 语义检索 + 关系过滤一条 SQL 搞定
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT content
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM docs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WHERE user_id = 42 -- 关系过滤
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ORDER BY emb &amp;lt;=&amp;gt; $1 -- 余弦距离排序
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;LIMIT 10;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最后那个&amp;quot;&lt;code&gt;向量相似度排序 + 关系 WHERE 过滤&lt;/code&gt;一条 SQL&amp;quot;是 pgvector 最香的地方——专用向量库做这个要绕一圈（先向量检索再回 DB 过滤，或者搞混合检索）。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="小结"&gt;&lt;a href="#%e5%b0%8f%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;小结
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;向量检索 = embedding 把语义变成向量 + ANN 高效找近邻&lt;/strong&gt;。它补的是关键词检索&amp;quot;按意思找&amp;quot;这块盲区。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ANN 的核心是 recall × latency × memory 的三角 tradeoff&lt;/strong&gt;，HNSW 是当前主流首选，IVF+PQ 适合超大规模。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026 选型&lt;/strong&gt;：pgvector 默认够用、Pinecone 托管省心、Milvus 超大规模自建、Qdrant 性能简洁、Chroma 原型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最重要的一条&lt;/strong&gt;：&lt;strong&gt;start with pgvector&lt;/strong&gt;——大多数项目不需要专用向量库，Postgres + pgvector 一套搞定，撑不住再迁。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下一篇《RAG 进阶》在这块地基上，讲怎么用向量检索搭一个真正好用的 RAG 系统——为什么&amp;quot;把 PDF 塞进向量库&amp;quot;的 naive RAG 已经不够了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/pgvector/pgvector" target="_blank" rel="noopener"
 &gt;pgvector — PostgreSQL 向量扩展（GitHub）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.pinecone.io/" target="_blank" rel="noopener"
 &gt;Pinecone — 向量数据库（官网）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://milvus.io/" target="_blank" rel="noopener"
 &gt;Milvus — 开源向量数据库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://qdrant.tech/" target="_blank" rel="noopener"
 &gt;Qdrant — Rust 向量搜索引擎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.kalviumlabs.ai/blog/vector-databases-compared-pgvector-pinecone-qdrant-weaviate/" target="_blank" rel="noopener"
 &gt;pgvector vs Pinecone vs Qdrant vs Weaviate（2026 对比）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://encore.dev/articles/best-vector-databases" target="_blank" rel="noopener"
 &gt;Best Vector Databases in 2026（Encore.dev 对比）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>