RAG 复习

使用 Hugging Face smolagents 的 AI Agents

Adel Nehme

VP of AI Curriculum, DataCamp

示例:智能烹饪助手

  • 需要获取烹饪知识
  • 信息分散在食谱、指南和规划资源中
  • 需检索并提取最相关细节
使用 Hugging Face smolagents 的 AI Agents

什么是检索增强生成(RAG)?

RAG = 信息检索 + LLM 生成的结合

使用 Hugging Face smolagents 的 AI Agents

RAG 工作流

使用 Hugging Face smolagents 的 AI Agents

加载并切分文档

from langchain_community.document_loaders import PyPDFDirectoryLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter

# Load documentation from directory
loader = PyPDFDirectoryLoader("cooking_docs", mode="single")
documents = loader.load()

# Split into chunks
splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
chunks = splitter.split_documents(documents)
使用 Hugging Face smolagents 的 AI Agents

创建向量存储

from langchain_huggingface import HuggingFaceEndpointEmbeddings
from langchain_community.vectorstores import FAISS

# Create embeddings and vector store
embedder = HuggingFaceEndpointEmbeddings(
    model="BAAI/bge-base-en-v1.5",
    task="feature-extraction",
)
vector_store = FAISS.from_documents(chunks, embedder)
使用 Hugging Face smolagents 的 AI Agents

查询向量存储

query = "How do I cook salmon with herbs?"

# Similarity search
relevant_docs = vector_store.similarity_search(query, k=3)

# Create a context string
context = "\n\n".join(doc.page_content for doc in relevant_docs)
使用 Hugging Face smolagents 的 AI Agents

查询:如何用香草烹饪三文鱼?

检索到的前 2 个片段(语义匹配):

[1] 三文鱼准备基础(第 2 页) 把三文鱼拍干以利上色。用盐、黑胡椒和新鲜莳萝或欧芹充分调味。 静置鱼排 10 分钟以便入味。为均匀受热,回温至室温……

[2] 烤箱烤三文鱼(第 5 页) 预热烤箱至 200°C(392°F)。将鱼排放在铺了烘焙纸的烤盘上,铺柠檬片和 香草黄油(莳萝/欧芹)。烤 10–12 分钟至刚不透明、易剥落;出炉静置 2 分钟再上桌……

使用 Hugging Face smolagents 的 AI Agents

传统 RAG 流水线的局限

如何在 50 美元内规划一周餐食,同时满足全部营养需求?

答案分散在多份文档中(预算、营养、技巧、食谱)。

使用 Hugging Face smolagents 的 AI Agents

Vamos praticar!

使用 Hugging Face smolagents 的 AI Agents

Preparing Video For Download...