微调模型成本太高?用 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 =
result = llm(prompt.(context=context, question=question))
(result)


