慣性聚合 関心のあるブログ、ニュース、テクノロジーを効率的に追跡
原文を読む 慣性聚合で開く

おすすめ購読元

博客园 - 司徒正美
V
V2EX
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
月光博客
月光博客
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python)
LLMアプリケーションのチャンクング戦略:より良いRAGシステムのための実践ガイド
Vivek · 2026-05-24 · via DEV Community

チャンクリングが検索品質、埋め込み性能、そしてリコール拡張生成(RAG)システムの全体的な効果にどのように影響するかを学びます.

序論

リコール拡張生成(RAG)を使用してAIアプリケーションを構築する際、開発者は通常最適なLLMや埋め込みモデルを選択することに焦点を当てます。しかし、一つの基本的なステップはしばしば見過ごされます。チャンキング

チャンキング

チャンキングとは、大規模な文書をエンコーディング生成とベクトルデータベースへの保存に先立って、より管理可能な小さなパーツに分割するプロセスです

不良なチャンキングは以下の問題を引き起こすことがあります

  • 関連性のない検索結果
  • 幻覚的な回答
  • 文脈の欠落
  • 推論コストの増加

適切なチャンキングは、一方で検索精度と応答品質を劇的に向上させます。

本記事では、最も一般的なチャンキング戦略、そのトレードオフ、および各々の使用時期を探求します。


チャンキングが重要な理由

LLMsと埋め込みモデルは、無限に大きいドキュメントを効率的に処理できません。

200ページのPDFを考慮してください.

ファイル全体を一つのベクトルとして埋め込む代わりに、それを小さなチャンクに分割します.

Large Document
      ↓
 Chunking
      ↓
Embeddings
      ↓
Vector Database
      ↓
Semantic Retrieval
      ↓
LLM Response

全画面モードを入力します. 全画面モードを退出します.

チャンクなし

一つの巨大な埋め込み:

  • 意味の粒度を失います.
  • 関連のないセクションを取得します.
  • トークンコストを増加します

チュンキングを使用して

関連文書セクションは検索および取得可能になります.


チュンキングのトレードオフを理解する

チュンキングサイズは検索品質に影響します.

Missing context

あまり小さい: フルスクリーンモードに入る

あまり大きい:

Noise + irrelevant information

フルスクリーンモードに入る フルスクリーンモードを終了

理想的なチャンクのバランス:

  • 意味合い
  • 検索精度
  • トークン効率

1. 固定サイズチャンキング

最もシンプルで広く使われている方法

文書は固定の文字またはトークン制限に基づいて分割されます

例:

  • 500トークン
  • 1000文字

どのように機能しますか

Document
──────────────────────────
Chunk 1 (500 tokens)
Chunk 2 (500 tokens)
Chunk 3 (500 tokens)

フルスクリーンモードに入る フルスクリーンモードから抜ける

Pythonの例

LangChainを使用して:

from langchain.text_splitter import CharacterTextSplitter

splitter = CharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)

chunks = splitter.split_text(document)

フルスクリーンモードに入る フルスクリーンモードから抜ける


利点

  • 実装が簡単
  • 処理が速い
  • 予測可能なチャンクサイズ

欠点

  • 文書構造を無視する
  • 文を途中で切ることがある
  • 意味論的な意味を減少させることがある

最適な用途

  • 迅速なプロトタイピング
  • 小さなデータセット
  • シンプルなRAGシステム

2. 再帰的チャンキング

固定サイズのチャンキングのより賢いバージョンです

無理に分割するのではなく、構造を保つことを試みます

典型的な階層:

  1. 段落
  2. 単語

より大きなセクションがサイズ制限を超える場合のみ、さらに分割します


ワークフロー

Paragraph too large?
        ↓
Split into sentences
        ↓
Sentence too large?
        ↓
Split into words

フルスクリーンモードに入力 フルスクリーンモードを終了


LangChain 再帰分割器:

from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)

chunks = splitter.split_text(document)

フルスクリーンモードを開始 フルスクリーンモードを終了


利点

  • 意味を保持
  • より良い検索品質
  • 複合文書を扱う

欠点

  • 少し遅い
  • ドメイン固有の構造をまだ無視できる

最適な対象

ほとんどのRAGシステム

これは通常、デフォルトの推奨事項.


3. 文節ベースのチャンキング

この戦略は、チャンクを文の境界と合わせます

ランダムなトークン数の代わりに:

Chunk = Complete Sentences

フルスクリーンモードを開始 フルスクリーンモードを終了


文書:

AI systems rely on retrieval.
Chunking improves retrieval quality.
Poor chunking hurts accuracy.

フルスクリーンモードを開始 フルスクリーンモードを終了

可能なチャンク:

Chunk 1:
AI systems rely on retrieval.

Chunk 2:
Chunking improves retrieval quality.

Chunk 3:
Poor chunking hurts accuracy.

フルスクリーンモードを開始 フルスクリーンモードを終了


Python の例

NLTK を使用して

import nltk
from nltk.tokenize import sent_tokenize

sentences = sent_tokenize(document)

フルスクリーンモードを開始 フルスクリーンモードを終了


利点

  • 自然言語の境界
  • クリーンな埋め込み
  • 意味の統一性の向上

欠点

  • 不均一なチャンクサイズ
  • 長い文は制限を超える可能性

最適な対象

  • 会話データ
  • 記事
  • QAシステム

4. 文節ベースのチャンキング

段落は通常、一貫した考えを持っています

これが、チャンクの境界として有用な理由です


Paragraph 1 → Chunk 1
Paragraph 2 → Chunk 2
Paragraph 3 → Chunk 3

フルスクリーンモードを入力 フルスクリーンモードを退出


利点

  • 高い意味的整合性
  • 人間可読なチャンク
  • ブログやドキュメントに適している

欠点

  • 段落の長さが異なる
  • 長い段落はオーバーフローする

最適な用途

  • ブログ
  • ドキュメント
  • 研究論文

5. 重複チャンキング

チャンキングの主要な問題点:

境界でのコンテキスト喪失

例:

チャンク1:

The API authentication uses JWT...

フルスクリーンモードに入る フルスクリーンモードから退出

チャンク2:

...tokens for secure communication.

フルスクリーンモードに入る フルスクリーンモードから退出

重要な意味は両チャンクにまたがっている

重複がこれを解決する


重複の仕組み

Chunk 1
──────────────
AAAA BBBB CCCC

Chunk 2
          CCCC DDDD EEEE

フルスクリーンモードを開始 フルスクリーンモードを終了

注意:

CCCC

は両方のチャンクに表示されます.


コード例

splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=100
)

フルスクリーンモードを開始 フルスクリーンモードを終了


利点

  • より良い検索連続性
  • 境界問題を減少
  • より高い回答精度

欠点

  • より多くの埋め込み
  • より大きなベクトルストレージ
  • 検索コストの増加

最適な対象

ほぼすべての本番環境RAGシステム

典型的な重複率:

  • 10–20%

6. セマンティックチャンキング

セマンティックチャンキングは、意味ではなくサイズを利用します。

文書はトピックが変わる場所で分割されています。

これは大幅に賢くなっています。


コンセプト

代わりに:

Every 500 tokens

フルスクリーンモードを開始 フルスクリーンモードを終了

を分割します:

Meaning shift

フルスクリーンモードを開始 フルスクリーンモードを終了


文書:

Section A → Databases
Section B → Kubernetes
Section C → Security

全画面モードに入る 全画面モードから退出する

セマンティックチャンキングは以下のものを作成します:

Chunk 1 → Database topic
Chunk 2 → Kubernetes topic
Chunk 3 → Security topic

全画面モードに入る 全画面モードから退出する


高レベルパイプライン

Text
 ↓
Sentence embeddings
 ↓
Similarity comparison
 ↓
Topic boundary detection
 ↓
Chunks

全画面モードに入る 全画面モードから退出する


Pythonの例(概念的な)

from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity

フルスクリーンモードを開始 フルスクリーンモードを終了

文の類似度が分割箇所を決定します


利点

  • 優れた検索品質
  • トピックに対応
  • 強い文脈的相关性

欠点

  • 計算コストが高い
  • 実装に手間がかかります

最適な用途

  • 企業向け検索
  • 法務文書
  • 知識ベース

7. 構造認識型チャンキング

一部の文書にはすでに構造が含まれています.

例:

  • HTML見出し
  • Markdownセクション
  • タイトル付きPDF
  • コードファイル

このを無視する代わりに、私たちはそれを使います。


マークダウン:

# Authentication
JWT details...

# Rate Limiting
API throttling...

フルスクリーンモードに入る フルスクリーンモードを終了する

チャンク:

Authentication section
Rate Limiting section

フルスクリーンモードに入る フルスクリーンモードを終了する


コード例

Markdownヘッダースプリッター:

from langchain.text_splitter import MarkdownHeaderTextSplitter

headers = [
    ("#", "Header1"),
    ("##", "Header2")
]

フルスクリーンモードに入る フルスクリーンモードを終了


利点

  • 高い意味の整合性
  • 作成者の意図を使用
  • ドキュメントに最適

欠点

  • クリーンなフォーマットに依存
  • 生テキストでは効果が低い

最適な対象

  • 開発者ドキュメント
  • ウィキ
  • 技術文書

8. コードチャンキング

ソースコードは特別な扱いが必要です.

500文字ごとに分割するとロジックが壊れる可能性があります.

代わりに:

分割方法:

  • 関数
  • クラス
  • モジュール
  • ASTノード

不良チャンク

def login():
    ...

フルスクリーンモードを開始 フルスクリーンモードを終了

半分でカット


より良いチャンク

Entire login() function

フルスクリーンモードを開始 フルスクリーンモードを終了


Tree-sitterを使用した例

import tree_sitter

フルスクリーンモードを開始 フルスクリーンモードを終了

ASTベースのパースは構文を保持します


利点

  • 論理的な構造を維持
  • コードの検索が容易
  • AIコーディングアシスタントに強い

欠点

  • 言語特有のツールing

最適な対象

  • code copilots
  • リポジトリの検索
  • ソフトウェアドキュメント

チャンキング戦略の比較

戦略 品質 複雑性 最適な使用法
固定サイズ プロトタイプ
再帰的 一般のRAG
中程度 QA
段落 中程度 記事
重複 生産RAG
意味的 非常に高 企業
構造認識 ドキュメント
コードチャンキング 非常に高 コードAI

実践的なチャンキング戦略

多くの成功したRAGシステムはハイブリッドアプローチを使用しています.

例:

Structure-aware
        +
Recursive splitting
        +
10–20% overlap

フルスクリーンモードを開始 フルスクリーンモードを終了

パイプライン:

Document
   ↓
Heading Split
   ↓
Recursive Chunking
   ↓
Overlap
   ↓
Embeddings
   ↓
Vector DB

フルスクリーンモードを開始 フルスクリーンモードを終了

これは通常、以下の間の最良のバランスを提供します:

  • 関連性
  • コスト
  • シンプルさ

最終的な考え

チャンキングは単なる前処理ではありません。

は直接影響を与えます:

  • 検索精度
  • 埋め込み品質
  • 妄想率
  • ユーザーエクスペリエンス

普遍的な最良の戦略はありません。

良いルール:

  • 再帰的 + 重複から始めます
  • 意味論的または構造認識型のチャンキングへ移行します が複雑さが増すと
  • コード認識チャンキング をエンジニアリングシステムに使用します

多くの場合、チャンキングを改善することは、より大きなLLMに切り替えるよりも大きな利益をもたらします