0Pricing
AI Agents · レッスン

ローダー、スプリッター、ベクトルストア

PDF/HTMLにはDocumentLoaders、チャンク分割にはTextSplitters、検索にはVectorStoresを使います。

「ローダー、スプリッター、ベクトルストア」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

LangChainにおけるRAGの3本柱

  1. ドキュメントローダー — 生データをDocumentsとして読み込む
  2. テキストスプリッター — Documentsをチャンクに分割する
  3. ベクトルストア — チャンクを埋め込み、インデックス化する

ドキュメントローダー

LangChainには100種類を超えるローダーがあります。例:

from langchain_community.document_loaders import PyPDFLoader, WebBaseLoader, TextLoader

pdf_docs = PyPDFLoader('handbook.pdf').load()
web_docs = WebBaseLoader('https://example.com').load()
md_docs = TextLoader('README.md').load()

Documentオブジェクト

すべてのローダーはDocumentsのリストを返します:

doc = pdf_docs[0]
print(doc.page_content)   # the text
print(doc.metadata)       # {'source': 'handbook.pdf', 'page': 1}

一般的なローダー

  • PyPDFLoader、UnstructuredFileLoader — PDF
  • WebBaseLoader、SitemapLoader — ウェブページ
  • NotionLoader、GoogleDriveLoader — SaaS
  • GitLoader — コードリポジトリ
  • SQLDatabaseLoader — DBの行

テキストスプリッター

Documentsをより小さなチャンクに変換します:

from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=800,
    chunk_overlap=100,
    separators=['\n\n', '\n', '. ', ' ']
)
chunks = splitter.split_documents(pdf_docs)

特化型スプリッター

  • MarkdownHeaderTextSplitter — 見出しで分割
  • RecursiveCharacterTextSplitter — 段落と文を考慮
  • HTMLHeaderTextSplitter — HTMLに対応
  • 言語別(Python、Markdown、LaTeX)

トークンを考慮した分割

モデルのトークナイザーを使用して、トークン単位で正確に分割します:

splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    encoding_name='cl100k_base',
    chunk_size=400,
    chunk_overlap=50
)

ベクトルストア

チャンクを埋め込み、保存します:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma

embeddings = OpenAIEmbeddings(model='text-embedding-3-small')
store = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory='./db'
)

Retrieval

retriever = store.as_retriever(search_kwargs={'k': 4})
results = retriever.invoke('What is our return policy?')
for d in results:
    print(d.page_content[:200])

永続化

persist_directoryを指定すると、Chromaはディスクに永続化されます。再読み込みするには:

store = Chroma(persist_directory='./db', embedding_function=embeddings)

その他のベクトルストア

インターフェースは同じで、バックエンドが異なります:

from langchain_community.vectorstores import FAISS, Pinecone, Qdrant, Weaviate

store = FAISS.from_documents(chunks, embeddings)
store.save_local('./faiss_db')

MultiVectorRetriever

小さなチャンクをインデックス化し、大きな親ドキュメントを取得します:

from langchain.retrievers import MultiVectorRetriever
# Use the parent-child pattern automatically.

Self-Query Retriever

LLMに自然言語からメタデータフィルターを生成させます:

from langchain.retrievers.self_query.base import SelfQueryRetriever
# 'What did Alice say in 2023?' -> filter={author: 'Alice', year: 2023}

リトリーバーの出力

LangChainのリトリーバーは何を返しますか?

まとめ

ローダー、スプリッター、ベクトルストアで、完全なRAGスタックを構成します。次は、LCELでこれらを組み合わせ、完全なチェーンを作成します。

よくある質問

「ローダー、スプリッター、ベクトルストア」レッスンは無料ですか?

はい。「ローダー、スプリッター、ベクトルストア」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。

「ローダー、スプリッター、ベクトルストア」で何を学びますか?

PDF/HTMLにはDocumentLoaders、チャンク分割にはTextSplitters、検索にはVectorStoresを使います。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Agentsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ローダー、スプリッター、ベクトルストア」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Agentsレッスンでコードを書いて実行できますか?

はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. LangChainのアーキテクチャ:モデル、プロンプト、チェーン
  2. ローダー、スプリッター、ベクトルストア
  3. LCEL(LangChain Expression Language)
  4. RAGチェーンをエンドツーエンドで構築する
← AI Agentsに戻る