• Skip to main content
  • Skip to primary sidebar

bloggggggggggggggg

// コードと趣味の境界線上

RAGの基本 — LLMに外部知識を与える技術

LLMの一番大きな弱点は「学習データ以降のことを知らない」こと。GPT-4のカットオフ日は2023年12月。今日のニュースを聞いても「すみません、私の知識は…」ってなる。あと、学習データにない専門知識(社内文書とか)も当然知らない。

この問題を解決するのがRAG(Retrieval-Augmented Generation)。簡単に言うと、「質問が来たら、まず外部データベースから関連文書を検索して、それをプロンプトに付け加えてから回答を生成する」って仕組みだ。LLMに「カンニングペーパー」を渡すイメージ。

RAGの処理の流れはこう:

  1. 文書を細かく分割(チャンキング) — 大量の文書を数百〜数千文字の「チャンク」に切る。この分割の仕方で検索精度が大きく変わるから意外と奥が深い。
  2. ベクトル化(Embedding) — 各チャンクをベクトル(数字の羅列)に変換してデータベースに保存。似た意味の文書はベクトル空間上で近くに配置される。
  3. 検索(Retrieval) — ユーザーの質問も同じようにベクトル化して、データベース内で一番近いチャンクを探す(近似最近傍探索)。
  4. 回答生成(Generation) — 見つけた関連チャンクをプロンプトに埋め込んでLLMに回答させる。「以下の情報を参考に答えてください:…」って感じ。

実際にRAGを組むならLangChainかLlamaIndexが定番。僕は個人プロジェクトで両方試したけど、LlamaIndexの方がシンプルでとっつきやすかった。LangChainは機能が多すぎて「全部入りツール」感が強い。

RAGの弱点は検索精度。ベクトル検索は「キーワード検索」とは違うから、質問の言い回しによっては的外れなチャンクを拾ってしまう。このへんはハイブリッド検索(ベクトル+キーワード)で改善できる。

参考:LlamaIndex | LangChain

← プロンプトエンジニアリングは「対話」だ — 僕のプロンプト設計論
AIエージェントの衝撃 — AutoGPTから学ぶ自律性 →

Primary Sidebar

最近の投稿

  • インフラエンジニアのキャリアパス — 手動運用からSREへ
  • 障害対応の心得 — 本番で焦らないために
  • 監視設計の基本 — 何をどう見るべきか
  • ログ管理 — ELKスタック入門
  • HTTPSと証明書管理 — Let’s Encryptの恩恵を最大限に

アーカイブ

  • May 2026

カテゴリー

  • AI
  • Linux
  • OS
  • Windows
  • インフラ・DevOps
  • おうちサーバー
  • サーバー・インフラ
  • ツール・環境
  • プログラミング
  • 未分類
  • 開発哲学

最近のコメント

No comments to show.

© 横山鉄工所 & まめたろう重工