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)系统,最难搞定的是那部分工作? - 知乎

主流的文档预处理框架:

相关推荐
mubei-1235 分钟前
FiD:利用具有生成模型的段落检索进行开放域问答
人工智能·llm·rag·检索增强生成
沛沛老爹1 小时前
Web开发者实战AI Agent:基于Dify实现OpenAI Deep Research智能体
前端·人工智能·gpt·agent·rag·web转型
沛沛老爹1 小时前
Web开发者实战AI Agent:基于Dify的多模态文生图与文生视频智能体项目
前端·人工智能·llm·agent·rag·web转型
夏日白云3 小时前
《PDF解析工程实录》第 9 章|端到端多模态模型:不是接不住,而是要看业务能接受什么
pdf·llm·大语言模型·多模态·rag·文档解析
石去皿1 天前
高级 RAG 实战指南:从基础检索到智能推理的跃迁
人工智能·语言模型·agent·rag
沛沛老爹1 天前
Web开发者快速上手AI Agent:Dify本地化部署与提示词优化实战
前端·人工智能·rag·faq·文档细粒度
沛沛老爹1 天前
Web开发者玩转AI工作流:Dify工作流开发深度解析
人工智能·llm·多模态·rag·深度优化·web转型ai
mubei-1231 天前
Retrieval-Augmented Generation(RAG) 开山之作:知识密集型NLP任务的检索增强生成
人工智能·深度学习·llm·rag·检索增强生成
胡伯来了1 天前
08 - 数据收集 - 网页采集工具Selenium
爬虫·python·selenium·rag·网络采集
沛沛老爹2 天前
Web开发者实战RAG评估:从指标到工程化验证体系
前端·人工智能·llm·agent·rag·评估