跳到主要内容

24 篇博文 含有标签「vector-search」

查看所有标签

GraphRAG vs. 向量 RAG:团队往往过晚才做的架构决策

· 阅读需 14 分钟
Tian Pan
Software Engineer

大多数团队发现自己需要 GraphRAG 时往往已经晚了六个月——在他们已经向用户解释了为什么 AI 搞错了关系、为什么它混淆了两个具有相似嵌入(embeddings)的实体,或者为什么它言之凿凿地引用了一份与实际答案相矛盾的文档之后。Vector RAG 在其擅长的领域确实表现出色。问题在于,团队把它当成了全能选手,并在底层架构已经达到数学上限时,仍不断堆砌检索补丁。

截至 2025 年,只有不到 15% 的企业在生产环境中部署了基于图的检索。这并不是因为技术不成熟。而是因为纯向量 RAG 的失败信号非常微妙:系统在运行,LLM 在响应,只有经过仔细检查才会发现,检索到的上下文虽然看似合理,但却是错误的。

检索单一化:为什么你的 RAG 系统存在系统性盲点

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 RAG 系统评估看起来还不错。NDCG 尚可接受,演示也能运行。但有一类故障是单一指标评估无法捕捉的:那些你的检索器从未接近过的查询——持续如此,因为你的整个嵌入空间从一开始就没有能力处理它们。

这就是检索单一化。一个嵌入模型、一种相似度度量、一条检索路径——因此也是一套系统性盲点,这些盲点看起来像模型错误、幻觉或用户困惑,直到你真正检查检索层才会发现真相。

解决方法不是更大的模型或更多数据,而是理解不同的查询结构需要不同的检索机制,并构建一个能够停止将一切都路由到同一漏斗中的系统。

检索债务:为何你的 RAG 流水线会悄然退化

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 RAG 流水线上线六个月后,某些东西悄然改变了。用户没有大声投诉,但对答案的信任度正在下降。反馈评分从 4.2 跌至 3.7,一些支持工单提到了"过时信息"。你的工程师检查日志,没有错误、没有超时、没有明显的回归。检索流水线在你配置的每一个指标上看起来都很健康。

但事实并非如此。它正在腐烂。

检索债务是向量索引中积累的技术性衰退:不再代表当前文档内容的过期嵌入、污染搜索结果的已删除记录产生的墓碑块,以及索引语料库时使用的编码器版本与当前计算查询嵌入的编码器版本之间的语义漂移。与代码腐烂不同,检索债务不会产生堆栈跟踪,它产生的是带有自信引用的微妙错误答案。

嵌入漂移问题:语义搜索的静默退化

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的语义搜索很可能正在悄然恶化,而你的监控面板对此毫无显示。

没有错误日志,没有 p99 毛刺,没有健康检查失败。查询依然返回结果,余弦相似度评分依然看起来正常。但相关性正在一点一点地悄然下滑——每一个被遗漏的新词,都在拉大用户语言与嵌入模型训练语言之间的距离。

这就是嵌入漂移问题。它之所以难以察觉,正是因为它不产生任何可见的失败信号——只有检索质量的缓慢侵蚀。用户会说产品"越来越没用了",然后悄悄离开。

数据库原生 AI:当你的 Postgres 学会了嵌入

· 阅读需 8 分钟
Tian Pan
Software Engineer

大多数 RAG 架构长得都一样:你的应用从 Postgres 读取数据,将文本发送到嵌入 API,将向量写入 Pinecone 或 Weaviate,并在读取时查询两个系统。你维护着两个数据存储、两套一致性模型、两套备份策略,以及一条同步管道——这条管道总是离让你的向量索引落后源数据数周只差一个边缘情况。

如果数据库自己就能搞定一切呢?这已经不再是假设。PostgreSQL 扩展如 pgvector、pgai 和 pgvectorscale——以及 AlloyDB AI 等托管服务——正在将整个嵌入与检索堆栈折叠进数据库本身。结果不仅仅是减少了活动部件,而是一种根本不同的运维模型:你的向量始终与其所代表的数据保持事务一致。

GraphRAG 落地实践:向量检索在多跳推理上的局限与突破

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的 RAG 流水线返回了措辞自信、格式规整的答案。Embedding 已经过调优,分块大小也经过优化,检索评分看起来很漂亮。然后,用户突然问道:"哪些受港口罢工影响的供应商,今季合同也即将到期?"系统却返回了关于港口物流和合同管理的零散片段——各自独立,从未将它们关联起来。这就是多跳推理的鸿沟,也是向量检索悄然失效之处。

这不是调参问题,而是架构层面的缺陷。向量相似度能找到看起来像查询的文档,却无法穿越散落在不同文档中的实体关系。GraphRAG——以知识图谱为后盾的检索增强生成——通过将实体关系提升为一等检索对象来解决这个问题。但将其真正推向生产环境,远比演示视频展示的更加复杂。

为什么分块问题尚未解决:原生 RAG 流水线如何在长文档上产生幻觉

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数 RAG 教程都将分块(chunking)视为一个注脚:将你的文档切分为 512 个 token 的块,对它们进行嵌入(embed),存储在向量数据库中,然后继续研究有趣的部分。这在演示示例(如维基百科文章、干净的 markdown 文档、短 PDF)中表现良好。但在生产环境中,它会分崩离析。

最近一项将 RAG 应用于临床决策支持的研究发现,在 30 个临床问题中,固定大小的基准方案仅实现了 13% 的完全准确率。在同一语料库上采用自适应分块方法:完全准确率为 50% (p=0.001)。文档是相同的。LLM 是相同的。只有分块方式改变了。这种差距不是微调问题,也不是提示词工程问题。它是大多数团队在切分文档方式上的结构性失败。

LLM 语义缓存:大多数团队都会忽略的成本控制层

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数构建 LLM 应用的团队都了解 Prompt caching —— 这是 API 提供商提供的一种前缀重用机制,旨在对重复的输入 Token 进行折扣。部署其上一层技术的团队则少之又少:语义缓存 (Semantic Caching),它能彻底消除那些语义相同但表述不同的查询所产生的 LLM 调用。这种差距并非源于怠惰,而是源于对语义缓存供应商文档中 “95% 准确率” 含义的普遍误解。

那 95% 的数字指的是缓存命中时的匹配正确性,而不是缓存实际被命中的频率。实际生产环境中的命中率从开放式聊天的 10% 到结构化 FAQ 系统的 70% 不等 —— 在你编写任何缓存代码之前,你应该先计算出你处于该范围的哪一侧。

生产环境中的嵌入模型:选择、版本管理与索引漂移问题

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 RAG 昨天回答得还很正确。今天它却自相矛盾了。看起来什么都没变 —— 除非你的嵌入模型(Embedding)提供商悄悄更新了模型,导致你的索引现在成了一个混合了不同向量空间的“科学怪人”(Frankenstein)。

嵌入模型是每个检索增强系统(RAG)中不起眼的基石,而且它们的失效方式通常极其难以诊断。与提示词(Prompt)更改或模型参数微调不同,嵌入模型的问题往往出现得非常缓慢,表现为一种无声的质量下降,在用户开始投诉之前,你的评估系统(Evals)甚至都察觉不到。本文涵盖三个方面:如何为你的领域选择合适的嵌入模型(MTEB 评分的误导性往往大于帮助)、升级模型时究竟会发生什么,以及无需从头重建即可更换模型的版本控制模式。

生产级检索技术栈:为什么纯向量搜索会失败以及应对策略

· 阅读需 15 分钟
Tian Pan
Software Engineer

大多数 RAG 系统在部署时都配备了向量数据库、几千个 embeddings,并假设语义相似度已经足够接近正确性。事实并非如此。这种“语义相似”与“实际正确”之间的差距,正是 73% 的 RAG 系统在生产环境中失败的原因,而且几乎所有这些失败都发生在检索阶段 —— 甚至在 LLM 生成任何文字之前。

“对文档进行嵌入、使用余弦相似度查询、将 top-k 传递给 LLM”的 standard playbook 在演示中有效,是因为演示查询是经过设计的。生产环境的查询则不然。用户搜索的是产品 ID、发票号码、监管代码、拼错的竞争对手名称,以及单个 embedding 向量在几何上无法满足的多重约束问题。稠密向量搜索并没有错 —— 只是它并不完整。构建一个在生产环境中真正起作用的检索栈,需要理解其中的原因,并层层加入能够弥补这些缺陷的组件。

生产级 AI Agent 的记忆架构

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队都是事后才给他们的智能体添加记忆功能——通常是在用户抱怨智能体忘记了三轮对话前明确告知的信息之后。那时,解决方案似乎显而易见:把对话存储起来,以后再检索。但这种直觉往往导致系统在演示中表现出色,而在生产环境中却一塌糊涂。一个仅仅存储信息的记忆系统,与一个能在正确的时间可靠地呈现正确信息的系统之间存在巨大鸿沟,大多数智能体项目正是悄然失败于此。

记忆架构并非次要问题。对于任何处理多轮交互的智能体——无论是客户支持、编码助手、研究工具还是语音界面——记忆都是区分有状态助手和昂贵自动补全的关键。如果处理不当,智能体不会崩溃;但它会让人感觉有些不对劲,自相矛盾,或者自信地重复着用户两周前纠正过的过时信息。

超越 RAG:混合搜索、智能体检索以及真正重要的数据库设计决策

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数团队将 RAG 上线并称之为检索策略。他们将文档分块、嵌入、存储向量,并在查询时运行最近邻搜索。这在演示中效果足够好。然而在生产环境中,用户开始报告系统找不到他们知道存在的文章、遗漏文档中字面意义上的错误代码,或者返回语义相似但事实错误的内容。

问题不在于 RAG。问题在于将检索视为一个一维问题,而它实际上一直都是多维的。