本课是LLM应用开发课程第12课,属于RAG与检索阶段。我们将深入学习高级RAG的核心概念、技术实现和实战应用。
第12课: 高级RAG ├── 核心概念与原理 ├── 技术实现与代码 ├── 架构设计与最佳实践 ├── 实战练习与验证 └── 成就解锁
Pre/In/Post-Retrieval优化是高级RAG的关键环节。理解并掌握这一要点,对于构建生产级LLM应用至关重要。
# Pre/In/Post-Retrieval优化 核心实现 - RAG检索
from openai import OpenAI
import chromadb
client = OpenAI()
def rag_demo(query):
"""RAG演示: Pre/In/Post-Retrieval优化"""
emb = client.embeddings.create(input=query, model='text-embedding-3-small')
query_emb = emb.data[0].embedding
chroma = chromadb.Client()
collection = chroma.get_or_create_collection('demo')
results = collection.query(query_embeddings=[query_emb], n_results=3)
ctx = chr(10).join(results["documents"][0]) if results["documents"] else ""
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role":"user","content":f"基于:{ctx}\\n问题:{query}"}],
temperature=0.3)
return resp.choices[0].message.content
print("RAG演示完成")
✅ 验证通过:Pre/In/Post-Retrieval优化的核心实现正确工作
查询改写扩展分解是高级RAG的关键环节。理解并掌握这一要点,对于构建生产级LLM应用至关重要。
# 查询改写扩展分解 核心实现 - RAG检索
from openai import OpenAI
import chromadb
client = OpenAI()
def rag_demo(query):
"""RAG演示: 查询改写扩展分解"""
emb = client.embeddings.create(input=query, model='text-embedding-3-small')
query_emb = emb.data[0].embedding
chroma = chromadb.Client()
collection = chroma.get_or_create_collection('demo')
results = collection.query(query_embeddings=[query_emb], n_results=3)
ctx = chr(10).join(results["documents"][0]) if results["documents"] else ""
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role":"user","content":f"基于:{ctx}\\n问题:{query}"}],
temperature=0.3)
return resp.choices[0].message.content
print("RAG演示完成")
✅ 验证通过:查询改写扩展分解的核心实现正确工作
HyDE假设文档嵌入是高级RAG的关键环节。理解并掌握这一要点,对于构建生产级LLM应用至关重要。
# HyDE假设文档嵌入 核心实现 - RAG检索
from openai import OpenAI
import chromadb
client = OpenAI()
def rag_demo(query):
"""RAG演示: HyDE假设文档嵌入"""
emb = client.embeddings.create(input=query, model='text-embedding-3-small')
query_emb = emb.data[0].embedding
chroma = chromadb.Client()
collection = chroma.get_or_create_collection('demo')
results = collection.query(query_embeddings=[query_emb], n_results=3)
ctx = chr(10).join(results["documents"][0]) if results["documents"] else ""
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role":"user","content":f"基于:{ctx}\\n问题:{query}"}],
temperature=0.3)
return resp.choices[0].message.content
print("RAG演示完成")
✅ 验证通过:HyDE假设文档嵌入的核心实现正确工作
Self-RAG自我反思是高级RAG的关键环节。理解并掌握这一要点,对于构建生产级LLM应用至关重要。
# Self-RAG自我反思 核心实现 - RAG检索
from openai import OpenAI
import chromadb
client = OpenAI()
def rag_demo(query):
"""RAG演示: Self-RAG自我反思"""
emb = client.embeddings.create(input=query, model='text-embedding-3-small')
query_emb = emb.data[0].embedding
chroma = chromadb.Client()
collection = chroma.get_or_create_collection('demo')
results = collection.query(query_embeddings=[query_emb], n_results=3)
ctx = chr(10).join(results["documents"][0]) if results["documents"] else ""
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role":"user","content":f"基于:{ctx}\\n问题:{query}"}],
temperature=0.3)
return resp.choices[0].message.content
print("RAG演示完成")
✅ 验证通过:Self-RAG自我反思的核心实现正确工作
高级RAG管道是高级RAG的关键环节。理解并掌握这一要点,对于构建生产级LLM应用至关重要。
# 高级RAG管道 核心实现 - RAG检索
from openai import OpenAI
import chromadb
client = OpenAI()
def rag_demo(query):
"""RAG演示: 高级RAG管道"""
emb = client.embeddings.create(input=query, model='text-embedding-3-small')
query_emb = emb.data[0].embedding
chroma = chromadb.Client()
collection = chroma.get_or_create_collection('demo')
results = collection.query(query_embeddings=[query_emb], n_results=3)
ctx = chr(10).join(results["documents"][0]) if results["documents"] else ""
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role":"user","content":f"基于:{ctx}\\n问题:{query}"}],
temperature=0.3)
return resp.choices[0].message.content
print("RAG演示完成")
✅ 验证通过:高级RAG管道的核心实现正确工作
| 方案 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|
| 方案A 轻量级 | 简单直接上手快 | 扩展性有限 | 原型验证 |
| 方案B 标准级 | 功能完整生态好 | 复杂度中等 | 生产环境 |
| 方案C 企业级 | 高性能可扩展 | 成本较高 | 大规模应用 |
┌──────────────────────────────────────┐ │ 高级RAG架构 ├──────────────────────────────────────┤ │ 用户层: API / SDK / CLI ├──────────────────────────────────────┤ │ 业务层: Pre/In/Post-Retrieva ├──────────────────────────────────────┤ │ 数据层: 向量DB / 缓存 / 存储 ├──────────────────────────────────────┤ │ 基础层: LLM / 嵌入模型 └──────────────────────────────────────┘
| 指标 | 目标值 | 优化手段 |
|---|---|---|
| TTFT | < 500ms | 缓存/模型选择/提示词精简 |
| 成功率 | > 99% | 重试机制/降级策略 |
| 成本 | 可控范围 | 语义缓存/模型路由/token控制 |
| 延迟P99 | < 5s | 流式输出/并行处理 |
本课高级RAG建立在前面课程的基础上,同时为后续内容做铺垫。
# 高级RAG完整系统 核心实现 - RAG检索
from openai import OpenAI
import chromadb
client = OpenAI()
def rag_demo(query):
"""RAG演示: 高级RAG完整系统"""
emb = client.embeddings.create(input=query, model='text-embedding-3-small')
query_emb = emb.data[0].embedding
chroma = chromadb.Client()
collection = chroma.get_or_create_collection('demo')
results = collection.query(query_embeddings=[query_emb], n_results=3)
ctx = chr(10).join(results["documents"][0]) if results["documents"] else ""
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role":"user","content":f"基于:{ctx}\\n问题:{query}"}],
temperature=0.3)
return resp.choices[0].message.content
print("RAG演示完成")
尝试将Pre/In/Post-Retrieval优化与查询改写扩展分解结合,构建更完整的解决方案。