RAG(Retriever-Augmented Generation)检索增强生成

(14 条消息) 大家觉得做一个大模型检索增强生成(RAG)系统,最难搞定的是那部分工作? - 知乎

一、RAG基本概念

定义:

**一种将检索与生成相结合的人工智能模型架构,**是目前大语言模型(LLM)落地应用中最主流的技术架构。

解决问题:
  • 幻觉问题 (Hallucinations): 模型会一本正经地胡说八道。

  • 知识时效性 (Outdated Knowledge): 模型的知识截止于训练结束的那一天(例如训练数据只到2023年)。

  • 回答无法追根溯源:无法知道模型生成回答的依据。

  • RAG 的作用: 通过外挂一个知识库,让模型基于检索到的事实来生成答案,从而"更诚实、更实时、更懂你的业务"。

二、RAG 的核心工作流程 (The Workflow)

RAG 的运作可以分为两个阶段:数据准备(Indexing)检索生成(Inference)

(一)数据准备阶段 (离线)

为了让机器读懂知识库文档:

  1. 加载 (Load): 读取 PDF, Word, Markdown, HTML 等格式的结构化知识库。

  2. 切分 (Chunk): 将长文本切分成小的段落(Chunk),因为 LLM 有上下文窗口限制,且小段落语义更集中。

  3. 嵌入 (Embed): 使用 Embedding 模型将文本转化为向量 (Vectors)(一串数字,代表语义)。

  4. **构建索引 (Build Index):**将上述向量输入 FAISS,FAISS 内部进行训练和添加,生成索引结构如倒排链表、HNSW 图等。

  5. 存储 (Store/Persist):将构建好的 Index 保存为文件或存入内存。

注释:

  • Chunk:用来做 embedding 和检索的小知识片段,是 RAG 的核心单位。

  • FAISS(Facebook AI Similarity Search):Meta (原 Facebook) AI Research 团队开源的一个库,它是目前世界上最流行、最强悍的向量搜索引擎

    FAISS vs. 向量数据库 (Vector DB):

    • **FAISS 是库 :**是一个底层工具包,需要写 Python/C++ 代码来调用它,数据存在内存或本地文件中,它不管数据的增删改查(CRUD)管理,只管算得快。

    • 向量数据库 (如 Milvus, Chroma, Weaviate) 是一个完整的系统 : 它们很多底层其实就是封装了 FAISS或者类似的算法,但外层提供了服务器、API、数据持久化、权限管理等功能,让你像用 MySQL 一样用它。

    • 总结关系: 如果你想自己造车,就用 FAISS; 如果你想直接开车,就用向量数据库。 但在做 RAG 实验或轻量级应用时,直接用 FAISS或 LangChain 里的 FAISS 包装器是最简单的。

(二) 检索生成阶段 (在线)

当用户提问时发生的动作:

  1. 提问编码(embedding): 将用户的问题也转化为向量。

  2. 语义检索 (Retrieve): 在向量库中寻找与"问题向量"距离最近的几个"文档片段向量"。

  3. 提示构建 (Augment): 将 <用户问题> + <检索到的相关片段> 拼装成一个新的 Prompt。

    Prompt 示例: "你是一个助手。 请仅根据以下背景信息回答用户的问题:[检索片段 1, 2, 3...]。 用户问题:[...]"

  4. 生成回答 (Generate): LLM 阅读 Prompt,根据提供的背景信息生成最终答案。

三、RAG vs. Fine-tuning

这是开发者最常纠结的选择。 可以用"考试"来打比方:

  • RAG = 开卷考试(带着教科书进考场,随时查阅)。

  • Fine-tuning = 长期补习(把知识通过大量练习内化到脑子里,但这很难改变,且容易遗忘旧知识)。

维度 RAG (检索增强) Fine-tuning (微调)
知识更新速度 极快 (直接更新数据库即可) (需要重新训练模型)
准确性/幻觉 较低 (基于事实检索) 依然可能产生幻觉
数据隐私 数据在本地/私有库,不需要发给模型训练 数据需用于训练模型 (若是闭源模型有风险)
成本 较低 (主要是检索和推理成本) 高 (算力成本 + 数据清洗成本)
适用场景 问答系统、客服、企业知识库 模仿特定说话风格、特定领域的复杂指令遵循

四、进阶 RAG (Advanced RAG)

基础 RAG 容易遇到检索不准的问题,目前业界正在向进阶架构演进:

  • 混合检索 (Hybrid Search): 结合关键词检索 (BM25) 和 向量检索(Embedding),兼顾精确匹配和语义理解。

  • 重排序 (Rerank): 在检索出前 50 个片段后,用一个高精度的 Rerank 模型(如 BGE-Reranker)对它们进行精细打分,只把最相关的 Top 5 给大模型。

  • GraphRAG: 利用知识图谱(Knowledge Graph)捕捉实体间的复杂关系,适合回答由于碎片化导致难以总结的全局性问题。

  • Self-RAG / Agentic RAG: 让模型自己判断"检索到的内容够不够回答问题",如果不够,自动重写查询词再次检索,甚至调用搜索引擎。

五、RAG应用开发最头疼两个问题:数据清洗和权限区分(企业)

"主流的数据清洗方式很难通吃多样的半结构化数据,很大情况下还是需要人工审核每一个文档,把一次性处理做不好的挑出来重新处理。"(14 条消息) 大家觉得做一个大模型检索增强生成(RAG)系统,最难搞定的是那部分工作? - 知乎

主流的文档预处理框架:

相关推荐
羞儿7 小时前
Agent设计模式与工程化
设计模式·知识图谱·agent·rag·mcp·指导开发
沛沛老爹2 天前
从Web到AI:多模态Agent Skills生态系统实战(Java+Vue构建跨模态智能体)
java·前端·vue.js·人工智能·rag·企业转型
MarsBighead2 天前
PostgreSQL全文检索中文分词器配置与优化实践
ai·postgresql·rag
laplace01232 天前
第八章 agent记忆与检索 下
数据库·人工智能·笔记·agent·rag
ThinkPet3 天前
【AI】大模型知识入门扫盲以及SpringAi快速入门
java·人工智能·ai·大模型·rag·springai·mcp
AI周红伟3 天前
周红伟《DeepSeek企业大模型的企业级部署及优化和RAG知识库和Agent智能体构建的案例交付实操》
大模型·微调·部署·rag·智能体·agent智能体
laplace01233 天前
第八章 agent记忆与检索上
人工智能·agent·rag
程序员:钧念3 天前
深度学习与强化学习的区别
人工智能·python·深度学习·算法·transformer·rag
云雾J视界4 天前
RAG 还是微调?用 Gemini API 打造企业私有知识库的落地路径
大数据·人工智能·api·知识库·rag·gemini
TGITCIC4 天前
langchain入门(五)- 用mongodb管理提示词以及以restful service暴露
langchain·ai大模型·rag·ai agent·ai智能体·agent开发·大模型产品