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

微调模型成本太高?用 RAG 技术实现低成本 AI 升级

RAG 检索增强生成技术通过外挂知识库解决了大模型幻觉、知识滞后及数据安全问题。相比微调(SFT),RAG 无需重新训练模型即可更新知识,显著降低成本并提升准确性。 RAG 架构、核心流程、典型应用场景及局限性,提供基于 LangChain 的实战代码示例,帮助开发者快速落地低成本 AI 升级方案。

DevOpsTeam发布于 2026/4/10更新于 2026/9/1058 浏览
微调模型成本太高?用 RAG 技术实现低成本 AI 升级

微调模型成本太高?用 RAG 技术实现低成本 AI 升级

大语言模型(LLM)在落地应用时,企业往往面临一个两难选择:要么投入高昂成本进行全量微调(SFT),要么忍受通用模型的幻觉与知识滞后。检索增强生成(RAG, Retrieval-Augmented Generation)技术提供了一种折中且高效的解决方案。

一、大语言模型的三大痛点

在实际业务场景中,直接调用通用 LLM 常遇到以下问题:

1. 幻觉问题

LLM 基于概率预测下一个 token,并不真正理解语义。当遇到训练数据之外的知识时,它可能会一本正经地胡说八道。例如询问'太阳为什么从西边升起',模型可能编造地球自转改变的理由。

2. 时效性问题

模型训练成本高、周期长,导致其无法掌握实时信息。若训练数据截止于 2023 年,面对 2026 年的春节日期等最新问题,模型将无法回答。

3. 数据安全问题

通用模型通常运行在云端,企业敏感数据直接上传存在泄露风险。最佳实践是将数据留在本地,仅让在线模型处理脱敏后的归纳任务。

二、RAG 技术核心架构

RAG 的核心思想是'先检索,后生成'。就像学生考试时可以查阅课本一样,模型在回答问题前先检索外部知识库,再基于检索到的内容生成答案。

1. 检索器模块

检索器的作用是从海量文档中找到最相关的片段。这依赖于高质量的 Embedding 模型和向量数据库。构建时需解决语义表示准确性、查询与文档的语义空间对齐等问题。

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)

2. 生成器模块

生成器接收检索到的上下文和原始问题,组合成 Prompt 输入给 LLM。这使得生成的回答不仅流畅,而且有据可依。

from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate

llm = OpenAI(temperature=0)
prompt = PromptTemplate(
    input_variables=["context", "question"],
    template="基于以下上下文回答问题:\n{context}\n\n问题:{question}"
)

context = "Python 是一种高级编程语言,易于学习和使用。"
question = "Python 是什么?"
result = llm(prompt.format(context=context, question=question))
print(result)

三、RAG 的典型实现流程

落地 RAG 系统通常包含三个关键步骤:数据索引、数据检索、文本生成。

1. 数据索引

将私域数据向量化并建立索引。对于 PDF 等非结构化数据,需先提取文本,再进行分块(Chunking)和向量化。

import PyPDF2
from langchain.text_splitter import CharacterTextSplitter

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 = extract_text_from_pdf("example.pdf")
text_splitter = CharacterTextSplitter()
texts = text_splitter.split_text(text)

# 创建索引
db = FAISS.from_texts(texts, embeddings)
db.save_local("pdf_index")

2. 数据检索

根据用户 Query 在向量库中查找相似文档。支持元数据过滤、相似度检索等多种方式。

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. 文本生成

将检索结果与问题拼接,调用 LLM 生成最终回答。这是典型的 Prompt Engineering 过程。

from langchain.chains import RetrievalQA

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=db.as_retriever()
)

result = qa_chain.run("如何学习 Python?")
print(result)

四、RAG 与 SFT 对比

维度RAG (检索增强)SFT (监督微调)
数据类型动态数据,可实时更新静态数据,更新需重新训练
外部知识利用擅长利用外部资源,适合文档库依赖预训练或微调数据
模型定制侧重信息整合,风格定制弱可调整语气、术语及特定领域知识
减少幻觉基于检索证据,幻觉较少仍可能产生幻觉
透明度高,可追溯数据来源低,黑盒性质
技术要求需高效检索策略与数据库维护需高质量数据集与算力

五、拓展方案与局限性

1. 多模态 RAG

不仅能处理文本,还能结合图像、音频。例如通过 CLIP 模型检索图片,辅助生成描述。

2. 实时 RAG

集成新闻 API 等实时数据源,确保回答紧跟热点。但需注意 API 调用的稳定性与成本。

3. 个性化 RAG

根据用户历史偏好调整检索策略,提供定制化服务。例如推荐电影时优先匹配用户喜欢的类型。

4. 存在的问题

  • 检索效果依赖:Embedding 质量直接影响检索精度,若语义表示不准,会引入噪声。
  • 利用机制黑盒:模型如何融合检索信息仍是黑盒,有时会出现检索了却未引用的情况。
  • 效率问题:无差别检索所有任务会增加输入长度,降低生成速度。
  • 事实查证:若数据源本身不可靠,RAG 也会传播错误信息。

六、总结

RAG 技术通过外挂知识库的方式,有效解决了大模型的知识滞后、幻觉及数据安全难题。相比昂贵的微调方案,RAG 实施成本低、更新灵活,是企业级 AI 落地的首选路径。开发者在落地时,应重点关注向量检索的质量优化与 Prompt 设计的合理性,以平衡性能与成本。

目录

  1. 微调模型成本太高?用 RAG 技术实现低成本 AI 升级
  2. 一、大语言模型的三大痛点
  3. 1. 幻觉问题
  4. 2. 时效性问题
  5. 3. 数据安全问题
  6. 二、RAG 技术核心架构
  7. 1. 检索器模块
  8. 初始化嵌入模型
  9. 创建向量数据库
  10. 检索相关文档
  11. 2. 生成器模块
  12. 三、RAG 的典型实现流程
  13. 1. 数据索引
  14. 创建索引
  15. 2. 数据检索
  16. 3. 文本生成
  17. 四、RAG 与 SFT 对比
  18. 五、拓展方案与局限性
  19. 1. 多模态 RAG
  20. 2. 实时 RAG
  21. 3. 个性化 RAG
  22. 4. 存在的问题
  23. 六、总结

更多推荐文章

查看全部
  • GitHub Copilot Plan 模式核心价值与适用场景
  • AIRI 开源 AI 伴侣:支持游戏互动与本地部署
  • 不改一行代码定位线上 Java 性能问题
  • SpringBoot 整合 Spring Data JDBC
  • OpenClaw Java:基于 Spring Boot 的 AI Agent Gateway 全栈实践
  • Python 核心知识点速查:31 个基础要点
  • Django Web 框架实战:从零构建产品管理系统
  • 基于 MSO-VMD-CNN-BiLSTM 的故障诊断模型研究与 Matlab 实现
  • Eino 组件实战:Embedding 原理与落地用法
  • React K 线图组件 kline-charts-react 介绍与使用
  • AI 变现核心逻辑:为何掌握工具却难以盈利
  • STM32 HAL 库软件 IIC 驱动 AT24C02/AT24C32 时序与读写
  • SpringBoot 整合 Neo4j 图数据库项目实战详解
  • FPGA 图像处理加速:核心算法解析
  • Linux 文件系统架构、原理与实战操作指南
  • Spring Boot 微服务架构设计与实战
  • 多模态 Agent 图像识别技能开发:JavaScript+Python 全栈实战
  • 在 CentOS 7.9 上安装 KingbaseES V9:从 ISO 包到数据库启动
  • TinyWebServer 源码解析:HTTP 机制与高性能设计
  • Spring AI 接入 Agent Skill 实战教程

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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