跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

大模型低成本升级:RAG 检索增强生成技术详解

综述由AI生成针对大模型幻觉、时效性差及训练成本高的问题,检索增强生成(RAG)提供了一种低成本的知识增强方案。通过外挂知识库而非重新训练模型,RAG 能有效提升回答准确性与安全性。解析了 RAG 的核心架构、与 SFT 的对比、典型实现流程及多模态拓展方案,并结合 Python 代码示例展示了从数据索引到文本生成的完整链路,帮助开发者快速落地企业级 AI 应用。

Stephaine Walsh发布于 2026/4/5更新于 2026/6/1135 浏览
大模型低成本升级:RAG 检索增强生成技术详解

RAG 技术示意图

大语言模型的三大痛点

在落地大模型应用时,我们常遇到三个棘手问题。首先是幻觉,模型基于概率生成 Token,并不真正理解语义,容易一本正经地胡说八道。比如问它'太阳为什么从西边升起',它可能会编造地球自转改变的理由。

其次是时效性。训练成本高、周期长,导致模型无法掌握最新知识。如果训练数据截止到 2023 年,面对 2026 年的春节日期,它可能无法给出正确答案。

最后是数据安全。通用模型缺乏企业私有数据,直接输入敏感信息存在泄露风险。通常做法是将数据留在本地处理,仅让在线模型做归纳。

from transformers import pipeline

generator = pipeline('text-generation', model='gpt2')
result = generator("太阳为什么从西边升起?", max_length=100, num_return_sequences=1)
print(result[0]['generated_text'])

RAG 技术:检索增强生成

RAG(Retrieval-Augmented Generation)的核心思路是:LLM 在回答问题前,先从外部文档库检索相关信息,再基于这些资料生成回答。这就像学生考试时可以查阅课本,而不是仅凭记忆瞎蒙。

核心架构

RAG 包含两个关键模块:检索器和生成器。

检索器负责从知识库中找出最相关的 k 个文档。构建高质量检索器需解决语义表示、空间对齐等问题。生成器则将这些检索到的片段转化为自然流畅的文本。

from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings

embeddings = OpenAIEmbeddings()
documents = ["Python 学习资源 1...", "Python 学习资源 2..."]
db = FAISS.from_texts(documents, embeddings)

query = "如何学习 Python"
docs = db.similarity_search(query, k=2)
for doc in docs:
    print(doc.page_content)

RAG 的八大优势

相比传统微调,RAG 具备显著优势:

  1. 可扩展性:无需重新训练整个模型,外挂知识库即可提供额外信息。
  2. 准确性:引用信息来源增强信任,用户可核实答案。
  3. 可控性:更新知识库比重新训练模型更灵活。
  4. 可解释性:检索结果可作为预测依据,提升透明度。
  5. 及时性:能识别并整合最新信息。
  6. 定制性:为不同领域提供专业知识支持。
  7. 安全性:敏感数据存储在本地数据库,通过权限控制访问。
  8. 多功能性:适用于 QA、摘要、对话等多种任务。

例如,在处理企业内部政策查询时,我们可以加载本地知识库,避免将敏感数据直接发送给公共 LLM。

from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

embeddings = OpenAIEmbeddings()
db = FAISS.load_local("enterprise_knowledge_base", embeddings)
llm = OpenAI(temperature=0)
qa_chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=db.as_retriever())

result = qa_chain.run("公司的请假政策是什么?")
print(result)

RAG 与 SFT 的对比

特性RAGSFT
数据类型动态数据,持续查询外部源静态数据,易过时
外部知识利用擅长利用外部资源增强能力依赖预训练或微调数据
模型定制侧重信息检索,行为定制弱可调整语气、风格及领域知识
减少幻觉基于检索证据,幻觉较少可能产生幻觉
透明度高,可追溯数据来源低,黑盒性质

RAG 适合需要频繁更新知识的场景,而 SFT 更适合固定领域的风格对齐。

RAG 的典型实现方法

落地 RAG 通常分为三步:数据索引、数据检索、文本生成。

1. 数据索引

将私域数据向量化后存入数据库。包括提取、分割、Embedding 及建索引。

import PyPDF2
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings

def extract_text_from_pdf(pdf_path):
    text = ""
    with open(pdf_path, "rb") as f:
        reader = PyPDF2.PdfReader(f)
        for page in reader.pages:
            text += page.extract_text()
    return text

text_splitter = CharacterTextSplitter()
embeddings = OpenAIEmbeddings()

def create_index(pdf_path):
    text = extract_text_from_pdf(pdf_path)
    texts = text_splitter.split_text(text)
    db = FAISS.from_texts(texts, embeddings)
    db.save_local("pdf_index")

create_index("example.pdf")

2. 数据检索

获取有效信息的关键,支持元数据过滤、向量相似度检索等。

db = FAISS.load_local("pdf_index", embeddings)
query = "Python 学习教程"
docs = db.similarity_search(query, k=3)
for doc in docs:
    print(doc.page_content)

3. 文本生成

将 Query 和检索文本组合输入模型,本质是 Prompt Engineering。

from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

llm = OpenAI(temperature=0)
qa_chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=db.as_retriever())
result = qa_chain.run("如何学习 Python?")
print(result)

RAG 的典型案例

ChatPDF允许用户上传 PDF 并通过聊天提问,底层逻辑正是 RAG。Baichuan搜索增强系统融合了指令理解与智能搜索。多模态 RAG则能同时处理图文视频,如 RA-CM3 模型。

RAG 存在的问题

尽管优势明显,RAG 仍面临挑战:

  1. 检索效果依赖 Embedding:若语义表示不准,检索到无关信息会干扰输出。
  2. 信息利用黑盒:模型如何利用检索内容仍不透明,可能产生冲突。
  3. 效率问题:无差别检索所有任务会增加输入长度,降低生成速度。
  4. 事实查证难:若数据源不可靠,生成的回答也无法精准查证。

RAG 的拓展方案

为了应对上述问题,社区提出了多种拓展方向:

  • 多模态 RAG:处理图像、音频等非文本数据。
  • 实时 RAG:集成新闻 API 等实时源,确保信息时效性。
  • 个性化 RAG:根据用户历史偏好调整检索策略。

例如,在实时场景中,我们可以调用天气或新闻接口,动态更新向量库。

import requests
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings

def get_latest_tech_news():
    response = requests.get("https://newsapi.org/v2/top-headlines?country=us&category=technology")
    news = response.json()
    return news['articles'][0]['content'] if news.get('articles') else "No news"

embeddings = OpenAIEmbeddings()
db = FAISS.from_texts([get_latest_tech_news()], embeddings)
llm = OpenAI(temperature=0)
qa_chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=db.as_retriever())

result = qa_chain.run("最新的科技新闻是什么?")
print(result)

通过合理设计检索策略与生成流程,RAG 已成为大模型落地的首选方案之一。

目录

  1. 大语言模型的三大痛点
  2. RAG 技术:检索增强生成
  3. 核心架构
  4. RAG 的八大优势
  5. RAG 与 SFT 的对比
  6. RAG 的典型实现方法
  7. 1. 数据索引
  8. 2. 数据检索
  9. 3. 文本生成
  10. RAG 的典型案例
  11. RAG 存在的问题
  12. RAG 的拓展方案
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Spring Boot 2.x 进程内缓存实战与 Cache 注解详解
  • 自然语言处理在金融领域的应用与实战
  • 2020 年 CSP-S 提高组初赛阅读程序题解析(C++)
  • AI-Goofish-Monitor:基于 Playwright 与多模态模型的闲鱼商品监控工具
  • 自然语言处理在金融领域的应用与实战
  • OpenAI 发布 GPT-4o 模型,实现多模态实时交互
  • C++ 二叉搜索树简单实现:增删查改全攻略
  • 基于 DeepSeek 和 Cursor 构建智能代码审查工具实践
  • acge_text_embedding 文本向量化模型详解与 C-MTEB 评测分析
  • C++ 核心基础特性详解:重载、引用、内联、auto 与 nullptr
  • 飞牛 NAS 部署 Gitea 私有代码托管指南
  • RAG 系统检索指标详解:信息检索任务准确性评估指南
  • 医疗 AI 中的马尔科夫链深度应用与 Python 实现
  • VSCode 多 JDK 版本配置与切换指南
  • Spring Boot 整合 DL4J 实现自然语言处理智能写作助手
  • 无人机发展简史:从古代传说到现代飞行器设计
  • Java 集成 DeepFace 人脸识别微服务架构实践
  • C++17 标准库:std::any 类型擦除容器详解
  • 基于腾讯云 LKE 接入 DeepSeek 大模型应用开发教程
  • C++ 关联式容器详解:set、map 及其变体

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online