RAG 进阶之路7:REFRAG 机制应对长上下文挑战

之前的文章中,我们从基础设施(Milvus)、语义核心(BGE)、到代码落地(LangChain)以及应用层优化(Small-to-Big/HyDE),构建了一套完整的 RAG 知识体系。 然而,AI 领域的变化是指数级的。随着 Claude 3 支持 200k 上下文,Gemini 1.5 Pro 甚至支持到 1M token,一种论调开始流行:“RAG 已死,Long Context (长上下文) 才是未来。” 毕竟,如果能把整本《红楼梦》或整个公司的知识库直接塞进 Prompt 里,还需要费劲地做切片、建索引、搞检索吗? 但现实是骨感的。“能放进去”不代表“能跑得动”。 把海量文本直接喂给…

RAG 进阶之路6:优化策略Small-to-Big、HyDE 与上下文压缩

在前几篇文章中,我们搭建起了 RAG 的骨架:选好了向量数据库(Milvus),配置了强大的语义模型(BGE),甚至解决了时间衰减的问题。 现在,你的 RAG 系统已经能跑通了。但在实际测试中,你可能会撞上一堵无形的墙: * 场景 A: 你问“公司迟到怎么罚款?”,系统搜到了“罚款 50 元”的片段,但 LLM 答错了。因为那个片段太短,丢掉了前面关键的主语——“连续三次迟到者”。 * 场景 B: 用户问“怎么治那个一直在嗓子眼里的病?”,系统搜不到任何结果。因为数据库里的文档写的是专业的“慢性咽炎临床治疗方案”。 这标志着我们进入了 RAG 开发的深水区——检索质量优化(Retrieval Quality Optimization)。 不仅仅是“搜得快”,更要“搜得准”且“读得懂”…

RAG 进阶之路5:Milvus 中实现“时间衰减”

在构建 RAG系统时,我们经常会遇到这样一个尴尬的场景: 用户问:“最新的 iPhone 摄像头参数怎么样?” 你的 RAG 系统兴致勃勃地从数据库里找出了 iPhone 11 的评测文章,因为那篇文章写得非常详尽,和问题的语义相似度(Semantic Similarity)极高。而关于 iPhone 12 的介绍可能比较简短,导致向量距离稍远,被排在了后面。 这就是向量检索的“时效性盲区”。 在 HNSW 或 IVF 这样的向量索引眼里,只有空间距离,没有时间概念。数据一旦写入,它在向量空间的位置就是永恒的。但在新闻、金融或日志分析等场景中,“新”往往比“准”更重要。 那么,在使用 Milvus 或 Faiss 时,我们如何引入时间衰减(Time Decay)…

RAG 进阶之路4:LangChain + Milvus + BGE 全流程实战

在前两篇文章中,我们已经达成了共识:“Milvus + BGE-base + BGE-Reranker” 是目前构建中文 RAG 系统的高性价比黄金组合。今天,我们将使用 LangChain 框架将这三个组件串联起来,构建一个真正具备“漏斗式检索”能力的 RAG pipline。 准备工作 在开始之前,请确保你已经安装了 Docker 并启动了 Milvus 实例。同时,你需要安装以下 Python 库: pip install langchain langchain-community langchain-huggingface pymilvus sentence-transformers 注:我们将使用最新的 langchain-huggingface 库来加载模型,这是 LangChain 官方推荐的现代化方式。 核心架构设计 我们的代码将遵循以下数据流: 1. 加载与切分 (Load & Split): 将长文档切分成…

RAG 进阶之路3:从 BERT 到 BGE揭秘 RAG 系统的“语义引擎”

上一篇我们搞定了“身体”(Milvus 向量数据库),这一篇我们要赋予系统“灵魂”(语义理解)。 很多开发者有一个误区:认为 RAG 的效果主要取决于大模型(LLM)的智商。其实不然,RAG 的“生死线”在于检索(Retrieval)。 如果你喂给 LLM 的是垃圾文档,在好的LLM 也救不了你。而决定检索质量的核心,就是 Embedding(向量化) 和 Rerank(重排序) 模型。 在上一章中,我们搭建了 Milvus 向量数据库,它就像是一个巨大的、极其高效的图书馆书架。但是,把书放上去只是第一步,最难的是:当用户问“苹果怎么吃”时,你怎么知道要把关于“水果”的书给他,而不是关于“iPhone 手机”…

RAG 进阶之路2:Milvus 架构深度剖析与索引详解

为什么说 Milvus 2.0 是云原生的?它如何通过“存算分离”实现无限扩展?从 Kafka 的多路消费到 HNSW 的参数调优,本文配合详细架构图,深度拆解 Milvus 的内核机制。 在 RAG 系统中,向量数据库(Vector Database)是长时记忆的载体。许多开发者在初次接触时,往往会选择 Faiss 这样的轻量级库。但当数据量突破千万级,或者需要高并发、高可用(HA)支持时,架构完善的数据库系统就成为了必然选择。 Milvus 是目前最主流的云原生向量数据库之一。与传统数据库不同,它采用了存储与计算完全分离的设计。这意味着,如果你还没看懂它的架构,你可能正在浪费大量的服务器资源,或者在面对“为什么刚插的数据搜不到?”这种问题时束手无策。 今天,我们通过一张图,并结合日志流转和索引原理,彻底看懂 Milvus 是如何工作的。…

RAG 进阶之路1:大模型如何跨越“知识幻觉”的鸿沟

如果你曾问过 ChatGPT:“今天我公司的股价是多少?”或者“请总结一下刚才我上传的这篇 PDF 文档”,你其实就已经触碰到了 RAG (Retrieval-Augmented Generation,检索增强生成) 的边缘。 在人工智能的浪潮中,大语言模型(LLM)展现出了惊人的才华,它们像是一个博古通今的学者,读完了互联网上几乎所有的书。但这个学者有两个致命的缺陷:第一,他的记忆停留在了训练结束的那一天(知识截止);第二,他非常自信,即使不知道答案,也会一本正经地胡说八道(幻觉)。 RAG,就是为了治愈这两个“顽疾”而诞生的技术方案。 作为本系列文章的开篇,我们将带你回到原点,探讨 RAG 是什么,它为何成为 AI 应用的主流范式,以及在实际工程落地中,我们正在面临哪些棘手的挑战。 什么是 RAG?一场“开卷考试” 如果把大模型(如 GPT, Llama,…