AI大模型|RAG实战
变电风电光伏储能设计
2026年04月05日 17:00

📊 RAG的核心流程

一个完整的RAG系统主要包含两个阶段:索引构建(离线)检索生成(在线)

图表

代码

下载

全屏

检索与生成

索引构建

提供知识库

加载文档

文本切分

向量化

存储索引

用户提问

问题向量化

相似度检索

Prompt增强

LLM生成回答

索引构建(让机器理解你的文档):

  1. 文档加载:读取PDF、Word、TXT等各种格式的文件-1-9

  2. 文本切分:将长文档切成有意义的短块,比如按段落切分,确保每个小块语义完整,这是提升检索质量的关键-1-9

  3. 向量化:用嵌入模型将每个文本块转换成数字向量,相当于给文本内容建立一个"语义坐标"-1

  4. 存储:将向量存入专门的数据库,如开源的FAISS、Chroma或企业级的Milvus,以便后续快速查找-1-2-9

检索与生成(回答用户问题):

  1. 问题向量化:把你提的问题也转换成向量-1

  2. 相似检索:在向量数据库中快速找到与问题向量最相似的N个文本块-1

  3. 增强提示:将检索到的文本块和你的原始问题,一起放入精心设计的提示词中-1-9

  4. 生成答案:大模型根据提示词中的参考资料来生成最终答案,回答会更准确、更有依据-1

🚀 快速上手:搭建一个简易的RAG问答助手

下面用LangChain框架和Chroma向量数据库,演示一个极简的RAG实现-1。只需替换你的OpenAI API Key和文档路径即可运行。

python

复制

下载

代码块
PlainText
自动换行
复制代码
# 1. 安装依赖库
# pip install langchain langchain-community langchain-openai chromadb

import os
from langchain_community.document_loaders import TextLoader
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA

# 设置你的OpenAI API Key
# os.environ["OPENAI_API_KEY"] = "sk-..."

# --- 阶段一:索引构建(离线)---
# 1. 加载文档
loader = TextLoader("./my_document.txt") # 请替换为你的文件路径
documents = loader.load()

# 2. 切分文档
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_documents(documents)

# 3. 向量化并存储到Chroma
embeddings = OpenAIEmbeddings()
vector_store = Chroma.from_documents(chunks, embeddings)

# --- 阶段二:检索生成(在线)---
# 4. 创建检索器
retriever = vector_store.as_retriever()

# 5. 创建大模型
llm = ChatOpenAI(model_name="gpt-3.5-turbo")

# 6. 创建RAG链,自动完成检索->增强->生成
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff", 
    retriever=retriever
)

# 7. 提问!
query = "RAG的核心思想是什么?"
response = qa_chain.invoke(query)

print(response['result'])
复制成功

💡 进阶优化:如何让RAG效果更好?

基础的RAG能跑通,但想让它在实际业务中更精准、更稳定,可以从下面几个方面优化:

  • 索引阶段

    • 优化切分策略:不要机械地按固定长度切分,可以按Markdown标题层级或语义边界(如段落)进行切分,保证语义完整性-1

    • 选对嵌入模型:针对中文或垂直领域(如金融、医疗),可以选择BGE-M3等专门优化的模型,能显著提升检索准确率-4

  • 检索阶段

    • 混合检索:将向量检索(理解语义)和关键词检索(如BM25算法,用于精准匹配)结合,可以大幅提升召回率,尤其适用于专业术语多的场景-2-4-9

    • 重排序:初次检索可以多召回一些结果(比如20个),然后用一个更强大的重排序模型(Reranker)对这20个结果进行精细排序,最后只把最相关的Top-K(比如5个)送给大模型,能有效提升最终答案质量-2

  • 生成阶段

    • 提示词工程:明确要求模型"仅根据以下内容回答",如果找不到答案就说"不知道",不要自己编造,这能有效减少幻觉-9

🧪 实战案例:不同行业的RAG应用

RAG在各行各业都有落地方案,这里有几个典型案例供你参考:

行业应用场景核心痛点与方案效果政务政策咨询智能助手痛点:政策文件多、更新快,市民咨询量大。 方案:构建本地知识库,用RAGFlow等工具结合大模型API,实现精准问答-8-10。准确回答政策问题,减轻人工压力-8。金融智能投研分析痛点:研报、公告海量,分析师检索耗时。 方案:采用“关键词+向量”的混合检索架构,高效召回相关信息-2-4。资料检索时间从45分钟缩短至8分钟-4。医疗临床辅助诊断痛点:医学文献日新月异,关系复杂。 方案:采用“图谱增强RAG”,用知识图谱关联症状、药物、病史等信息,进行多跳推理-7。辅助基层医生,提升诊断符合率-7。IT代码风险识别痛点:人工审核代码效率低,难以覆盖所有风险。 方案:将历史资损代码向量化存入数据库,自动检索新提交代码的相似风险-2。自动化拦截风险代码,有效规避潜在损失-2。