0Pricing
AI Engineering Academy · 课时

RAG 解决的问题

研究 LLM 产生过时或错误信息幻觉的真实失败案例,并了解以检索到的文档为依据生成答案如何解决这些问题。

RAG 解决的问题 是 CoddyKit 上的免费 AI Engineering Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Engineering Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Engineering Academy 课程共包含 4 节课。

LLM 存在知识截止日期

每个大型语言模型都是基于截至某个特定日期的互联网快照训练的,这个日期称为知识截止日期。GPT-4o 的知识截止日期在 2024 年初。询问它截止日期之后发生的事件时,它要么承认自己不知道,要么更糟糕地自信地编造听起来合理却错误的信息。对于需要最新信息或专有知识的应用,这是一个根本性问题。

幻觉问题

当 LLM 生成听起来权威但事实错误的文本时,就会发生幻觉。模型经过训练,能够生成流畅、连贯的文本,但并没有专门训练成在不知道答案时拒绝回答。因此,它们会用看似合理的猜测填补知识空白。研究表明,在没有外部依据的情况下,即使是最优秀的模型,在知识密集型任务中也会有 10%–40% 的概率产生幻觉。

一个具体的幻觉示例

假设您向 LLM 提问:我们公司的 2025 年第三季度供应商合同条款是什么?模型从未见过您的内部文档。它可能不会直接说不知道,而是使用通用的法律语言,生成一份听起来合理的合同摘要。如果员工据此虚构的信息采取行动,后果可能十分严重。这正是 RAG 设计用来防止的故障模式。

# Without RAG — LLM guesses from parametric memory
response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {'role': 'user',
         'content': 'What are our Q3 2025 vendor contract terms?'}
    ]
)
# Model has no access to your documents — may hallucinate
print(response.choices[0].message.content)

通过提供依据解决幻觉

RAG 背后的理念很简单:如果您将相关信息放在提示词内部提供给模型,模型就不必依赖记忆中的知识。模型会从根据记忆生成转变为根据上下文阅读。人类也是这样工作的——需要准确细节时,您会查找资料,而不是依赖回忆。RAG 将同样的工作流程应用到了 LLM 上。

# With RAG — answer grounded in retrieved documents
context = retrieve_relevant_chunks(query='Q3 2025 vendor contract terms')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {'role': 'system', 'content': 'Answer using only the provided context.'},
        {'role': 'user', 'content': f'Context: {context}\n\nQuestion: What are our Q3 2025 vendor contract terms?'}
    ]
)

静态微调无法解决这个问题

一个常见的误解是,在您的文档上对模型进行微调就能解决幻觉问题。微调会更新模型的权重,以改善其风格、格式和任务遵循能力,但无法可靠地注入事实知识。研究表明,即使是在训练数据本身上,经过微调的模型仍然会产生幻觉。要让模型可靠地回忆知识,必须在推理时通过上下文窗口提供这些知识。

RAG 实现实时知识

由于 RAG 会从实时文档存储中检索内容,因此它能够自然地处理随时间变化的知识。当您的政策文档更新后,您只需重新建立其索引,之后的每次查询都会立即使用新版本,无需重新训练模型。与定期微调相比,这使 RAG 更适合内部知识库、客户支持系统和金融研究工具等应用。

RAG 适用于私有专有数据

由于隐私和合规要求,大多数企业数据都不能发送给 OpenAI 用于训练。RAG 可以规避这一问题:您的敏感文档保留在自己的向量数据库中,每次查询时只将相关文本块发送给 LLM。您甚至可以运行 Llama 3 这样的本地 LLM,让所有数据都保留在本地。RAG 是基于机密企业内容构建 AI的主要模式。

RAG 支持来源标注

当 LLM 根据记忆生成内容时,没有可供引用的来源。当它根据检索到的文档生成内容时,就可以引用确切的来源。您可以要求模型在回答中包含文档名称和页码,用户也可以点击这些信息来核验原始内容。来源标注能显著提升用户对 AI 生成答案的信任,这对于法律、医疗和金融应用至关重要。

system_prompt = '''You are a helpful assistant.
Answer questions using ONLY the provided context.
At the end of your answer, list the sources you used
in this format: [Source: document_name, page X]
If the context does not contain the answer, say:
"I don't have that information in the provided documents."'''

先检索后生成模式

RAG 在推理时遵循两个步骤的模式:检索——将用户问题转换为嵌入向量,在向量存储中搜索最相关的文档文本块,并收集排名靠前的 K 个结果。生成——构建一个包含检索文本块作为上下文的提示,并要求 LLM 仅基于该上下文回答问题。LLM 会阅读、综合并作出回答。

def answer_with_rag(user_question, vector_store, llm_client):
    # Step 1: Retrieve
    query_embedding = embed(user_question)
    chunks = vector_store.search(query_embedding, top_k=5)
    context = '\n\n'.join([c['text'] for c in chunks])

    # Step 2: Generate
    response = llm_client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': f'Answer using only:\n{context}'},
            {'role': 'user', 'content': user_question}
        ]
    )
    return response.choices[0].message.content

RAG 无法解决的问题

RAG 功能强大,但并非万能。当出现以下情况时,它仍然会失败:答案需要综合数百份文档(而检索只能返回少量文本块);问题本质上是多跳问题,模型需要经过中间步骤进行推理;或者检索到的文本块具有误导性或相互矛盾。了解这些限制有助于您设计将 RAG 与推理代理结合起来的混合系统。

RAG 与其他方案的比较

为 LLM 提供领域知识主要有三种方案:提示填充(将所有内容放入提示中——仅适用于非常小的语料库)、微调(能够很好地训练风格和格式,但不适合可靠地回忆事实)以及RAG(在推理时动态检索相关事实,可扩展到数百万份文档)。对于大多数需要最新、私有或大规模知识的生产应用,RAG 都是合适的选择。

快速检查

测试您对本课 AI 工程概念的理解。

课程回顾

本课中,您学习了:由于知识截止时间以及无法说“我不知道”,LLM 为什么会产生幻觉;为什么微调无法解决事实回忆中的幻觉问题;以及RAG 如何让答案以检索到的文档为依据,从而支持来源标注、实时知识和私有数据的安全使用。接下来,我们将探索完整的 RAG 架构,包括索引和检索阶段。

常见问题解答

「RAG 解决的问题」课时是免费的吗?

是的 — 「RAG 解决的问题」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Engineering Academy 课程的其余内容,请升级到 CoddyKit PRO。 AI Engineering Academy 课程共包含 4 节课。

「RAG 解决的问题」这节课中我会学到什么?

研究 LLM 产生过时或错误信息幻觉的真实失败案例,并了解以检索到的文档为依据生成答案如何解决这些问题。 你通过在浏览器中直接运行的动手代码来练习 AI Engineering Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Engineering Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Engineering Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「RAG 解决的问题」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Engineering Academy 课中编写并运行代码吗?

能。每节 AI Engineering Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. RAG 解决的问题
  2. RAG 架构:索引与检索
  3. 编写增强提示
  4. RAG 与微调:何时选择哪一种
← 返回 AI Engineering Academy