RAGの復習

Hugging Face smolagents で学ぶ AI エージェント

Adel Nehme

VP of AI Curriculum, DataCamp

例:スマートな料理アシスタント

  • 料理に関する知識へのアクセスが必要
  • 情報はレシピ・ガイド・献立リソースに分散している
  • 最も関連性の高い情報のみを検索・抽出する必要がある
Hugging Face smolagents で学ぶ AI エージェント

検索拡張生成(RAG)とは?

RAG = 情報検索とLLM生成の組み合わせ

Hugging Face smolagents で学ぶ AI エージェント

RAGのワークフロー

Hugging Face smolagents で学ぶ AI エージェント

ドキュメントの読み込みと分割

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 エージェント

ベクターストアの作成

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 エージェント

ベクターストアへのクエリ

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 エージェント

クエリ:ハーブを使ったサーモンの調理方法は?

上位2件の検索チャンク(意味的一致):

[1] サーモンの下処理の基本 (p. 2) 焼き色をつけるためにサーモンの水気を拭き取ります。塩、コショウ、ディルまたはパセリで十分に味付けします。 塩を浸透させるため10分休ませます。均一に火を通すため、室温に戻してから調理します...

[2] オーブンでのサーモン焼き (p. 5) オーブンを200°C(392°F)に予熱します。クッキングシートを敷いたトレイにフィレを並べ、レモンスライスと ハーブバター(ディル・パセリ)をのせます。10〜12分焼いて半透明になったら2分休ませて提供します...

Hugging Face smolagents で学ぶ AI エージェント

従来のRAGパイプラインの限界

50ドル以下で1週間の食事計画を立て、栄養要件をすべて満たすにはどうすればよいですか?

回答は複数のドキュメント(予算・栄養・技法・レシピ)に分散しています。

Hugging Face smolagents で学ぶ AI エージェント

練習しましょう!

Hugging Face smolagents で学ぶ AI エージェント

Preparing Video For Download...