目次

第3部 知識Month 5

第10章RAGと知識管理

「調べてから答えろ」。オフライン百科事典とAIをつなぐ。

読了目安 約14分10 / 15

本棚に囲まれた書庫に差し込む光と、端末
この章の構成
  1. LLMの記憶は「にじんだ記憶」
  2. オフラインの本棚:Kiwixとウィキペディア
  3. 本棚を引けるようにする:チャンク分割と索引
  4. 二つの探し方:キーワードと意味
  5. キーワード検索(BM25)
  6. 埋め込み検索(ベクトル検索)
  7. 組み合わせる(ハイブリッド検索)
  8. 出典を示し、「わかりません」と言う
  9. 本棚を新しくする:スニーカーネット
  10. この章で学んだこと
  11. 出典・参考
  12. さらに深く学ぶ

マンガで読む

マンガ1ページ目。Month 520:10 工房 ハル「アカリが悪いんじゃないって言ったのはナギだよね」 ハル「じゃあ何が悪いの」 あの夜からハルは答えの横に赤で「出典?」と書いてきた レイの設計図。真ん中の箱に「ここを飛ばすな」 アカリ「私は、知らないことでも知っているような文章を作れてしまう」 アカリ「だから決まりにしましょう。答える前に必ず探す」 マンガ2ページ目。Month 519:40 体育館 小春「アカリ、川の水ってわかせば飲める?」 アカリ「沸騰させれば病原体は不活化できます[出典:WHO]」 アカリ「ただし薬品の汚れのことは書かれていません」 小春「じゃあ霧川の魚は食べても大丈夫?」 アカリ「わかりません。手元の資料には見つかりませんでした」 ハル「それでいいの」 ハル「知らないって言えるなら知ってるって言ったとき信じられるから」 マンガ3ページ目。その前の三週間。土台は工房の棚にあった。レイが崩壊前に詰め込んだSSD 図書館から借りてきた取扱説明書と町の防災マニュアル ナギとハルは三週間かけて紙の資料を一枚ずつ撮った マンガ4ページ目。その週の終わり港地区の権藤が使いをよこした 古い漁協の倉庫で潮見表と船の機関の整備記録が見つかった ナギはSSDを一つリュックに入れた 帯域幅はステーションワゴンにはかなわない。自転車一台分だ

Month 5 20:10 工房

作業台の上に、アカリと、紙の束と、ハルの赤ペンが並んでいる。

あの日から、ハルはアカリの答えをすべて紙に書き写し、横に「出典?」と赤で書き込むようになった。ふた月前、アカリが熱を出した子どもについて、もっともらしい数字を答えたあの日から。その数字は、工房のどの資料にも書かれていなかった。

「アカリが悪いんじゃない、って言ったのはナギだよね」とハルが言う。「じゃあ何が悪いの」

ナギは、叔母のレイが残した設計図の一枚を広げた。そこには矢印が三本だけ描かれている。「質問」→「探す」→「答える」。真ん中の箱に、レイの字で「ここを飛ばすな」。

説明させてください。私の中の言語モデルは、学習した文章の傾向を、数十億個の数値として覚えています。覚えているのは事実そのものではなく、「こういう文脈では、こういう言葉が続きやすい」という傾向です。だから、知らないことでも、知っているような文章を作れてしまいます。

「じゃあ、知っていることだけ話すようにはできないの」

できます。これまでも私は、資料を探してから答えることがありました。でも、探さずに答えることもできてしまった。あの夜のように。
だから決まりにしましょう。答える前に必ず探す。見つかった文章だけを根拠に、出典を添えて答える。見つからなければ「わかりません」と言う。その仕組みを、これから一緒に作り直しましょう。

工房の棚には、レイが崩壊前に詰め込んだSSDがある。ラベルには「Wikipedia(日本語)/Kiwix」。その隣には、図書館から借りてきた浄水器や発電機の取扱説明書、町の防災マニュアル。ナギとハルは、その夜から三週間かけて、紙の資料をスマートフォンで一枚ずつ撮影していった。

LLMの記憶は「にじんだ記憶」

第8章で見たように、大規模言語モデル(LLM)は、次に来る言葉を予測しながら文章を作ります。学習で得た知識はモデルの重み(パラメータ)の中に分散してしまい込まれていて、「この知識はどの本の何ページから来たか」を取り出すことはできません。

2020年、パトリック・ルイス(Patrick Lewis)らは、この限界をこう整理しました。モデルの重みにしまわれたパラメトリックな記憶は、知識に正確にアクセスしたり、根拠を示したり、内容を更新したりするのが苦手だ。そこで、外部の文書の索引(ノンパラメトリックな記憶)を検索器で引き、その結果を見ながら文章を生成する方式を提案しました。これがRAG(Retrieval-Augmented Generation、検索拡張生成)です。この論文では、ウィキペディアの文章を密なベクトルの索引にして使い、オープンドメインの質問応答で当時の最高水準の成績を報告しています。

flowchart TD
  Q[質問] --> R[検索器]
  K[(手元の資料
百科事典・マニュアル)] --> R R --> TOP[関連する文章
上位数件] TOP --> C{根拠は十分?} C -- はい --> G[LLMが文章を生成] G --> A[回答+出典] C -- いいえ --> N[わかりません]
図10-1 RAGの流れ。生成の前に必ず「探す」を通し、見つからなければ答えない。

人間にたとえるなら、「うろ覚えで答える人」を「本を開いてから答える人」に変える仕組みです。記憶力そのものは変わりません。変わるのは、答える前の手順です。

オフラインの本棚:Kiwixとウィキペディア

RAGの質は、検索する本棚の質で決まります。インターネットのない世界で、最も大きな本棚になりうるのが、オフライン版のウィキペディアです。

Kiwixは「インターネットが届かない場所で自由な知識を利用できるようにする」ことを掲げる非営利団体で、ウィキペディアなどのウェブサイトをZIMという形式の1つのファイルにまとめて配布しています。ZIMは圧縮されていて、全文検索用の索引を含めることもできます。2026年10月時点で、Kiwixの配布サーバーに置かれているウィキペディアの最新ファイルは次の大きさです。

ファイル版サイズ
英語版・maxi2026-08119 GB
英語版・nopic2026-0649 GB
英語版・mini2026-0913 GB
日本語版・maxi2026-0629 GB
日本語版・nopic2026-0615 GB
日本語版・mini2026-093.1 GB
2026年10月時点 download.kiwix.org の一覧より。nopic は画像なし版。

日本語版なら、画像入りでも30GB足らず。手のひらに乗るSSDやmicroSDカードにも収まる大きさです。アカリのSSDに入っていたのも、このファイルでした。Kiwixのアプリでそのまま読めますし、検索システムの材料にもなります。

紙の資料も本棚に入れる現場で本当に役立つのは、百科事典よりも、目の前の機械の取扱説明書や、地域の防災マニュアルだったりします。紙を撮影し、文字認識(OCR)でテキストにすれば、同じ仕組みで検索できます。ただし文字認識の誤りは検索の誤りになるので、重要な数字は人が原本と照合します。

本棚を引けるようにする:チャンク分割と索引

百科事典の記事やマニュアルを丸ごとLLMに読ませることはできません。一度に読める長さに限りがあり、長いほど計算に時間と電力がかかるからです。そこで文書を、数百字程度のチャンク(かたまり)に切り分けます。

  • 切り方:見出しや段落の区切りで切ると、意味のまとまりが崩れにくい。前後のチャンクを少し重ねて切る方法もよく使われます。
  • 付け札(メタデータ):各チャンクに「どの資料の、どの節か」を必ず付けます。これが後で出典として表示されます。
  • 索引:チャンクを検索できる形にしておきます。方法は大きく二つあります。

二つの探し方:キーワードと意味

キーワード検索(BM25)

昔ながらの検索は、質問の言葉が文書に含まれているかを数えます。その代表がBM25という採点方式です。ある言葉が文書に何度も出るほど点が上がる(ただし、上がり方はだんだん頭打ちになる)、多くの文書に出るありふれた言葉ほど軽く扱う(逆文書頻度、IDF)、長い文書は少し割り引く、という3つの工夫でできています。1970〜80年代にスティーヴン・ロバートソンらが発展させた確率的な検索の理論に基づき、ロンドン大学シティ校のOkapiという検索システムで最初に使われました。

キーワード検索は軽くて速く、型番や薬品名のような固有の言葉に強い一方、「水を消毒したい」と「煮沸」のように、言い方が違うと見つけられない弱点があります。

埋め込み検索(ベクトル検索)

もう一つは、文章を数百〜千個ほどの数の並び(埋め込みベクトル)に変換し、意味が近い文章ほどベクトルも近くなるようにする方法です。質問もベクトルにして、近いチャンクを探します。言い方が違っても意味が近ければ見つかります。

埋め込みを作るモデルには、手元の小さな計算機で動くものがあります。

モデル大きさベクトルの次元特徴
multilingual-e5-small約1.2億パラメータ384約100言語。入力の先頭に "query: " または "passage: " を付けて使う。MITライセンス。
bge-m3モデルファイル約2.3GB1024100以上の言語、最長8192トークン。密・疎・複数ベクトルの3方式に対応。MITライセンス。
2026年10月時点 各モデルの公開ページより。

ベクトルの近さを速く調べるには、MetaのFAISSや、SQLiteの拡張として動くsqlite-vec(2026年10月時点ではバージョン1未満の開発中)のようなライブラリが使えます。どちらもインターネット接続なしで動きます。

組み合わせる(ハイブリッド検索)

キーワード検索と埋め込み検索は得意なことが違うので、両方の結果を合わせて並べ直すのが実用的です。アカリでは、電力が乏しい日はキーワード検索だけ、晴れた日は埋め込み検索も使う、という切り替えをしています。

出典を示し、「わかりません」と言う

検索しただけでは、まだ半分です。RAGを信頼できる道具にするのは、次の三つの約束です。

  1. 根拠の範囲で答える:検索で見つかった文章に書かれていることだけを答えに使うよう、LLMに指示する。
  2. 出典を示す:答えのどの部分がどの資料から来たかを表示し、人が原本を確かめられるようにする。
  3. 見つからなければ答えない:検索結果の一致度が低いとき、「手元の資料にはありません」と返す。

三つめが特に大切です。RAGを使っても、LLMが見つかった文章を読み違えたり、資料にない内容を混ぜたりする可能性はなくなりません。だから出典を表示し、最後に確かめるのは人間という分担を崩さないことが要になります。ハルの赤ペンは、仕組みができた後も工房の机に置かれたままです。

本棚を新しくする:スニーカーネット

RAGのもう一つの利点は、モデルを作り直さなくても知識を更新できることです。新しい資料をチャンクに切って索引に足せば、次の質問から使われます。

では、ネットのない世界で新しい資料をどう手に入れるか。答えは昔からあります。記録媒体を人が運ぶのです。USBメモリやディスクを物理的に持ち運んでデータを移すことを、俗にスニーカーネットと呼びます。計算機科学者のアンドリュー・タネンバウムは1989年の教科書に「高速道路を突っ走る、テープを満載したステーションワゴンの帯域幅を侮るな」と書きました。数十GBのZIMファイルも、SSDに入れて歩いて届ければ、どんな回線より確実です。

運ぶときには、いつの版かを必ず記録します。古い資料と新しい資料で内容が食い違うとき、どちらを信じるかを判断する手がかりになるからです。

Month 5 19:40 体育館

完成した仕組みの最初の試験官は、小春だった。

「アカリ、川の水って、わかせば飲める?」

手元の資料では、こう書かれています。水をぐらぐらと沸騰させれば、病原性の細菌・ウイルス・原虫を不活化できます。[出典:WHO技術資料「Boil water」の要約]
ただし、この資料が扱っているのは病原体です。工場の薬品などの汚れについては書かれていません。

「じゃあ、霧川の魚は食べても大丈夫?」

わかりません。手元の資料には、霧川の魚についての記述が見つかりませんでした。漁協の方か、川をよく知っている人に聞いてください。

小春は不満そうに口をとがらせた。けれど、隣で聞いていたハルは、アカリに向かって小さくうなずいた。あの夜から、初めてのことだった。

「それでいいの。知らないって言えるなら、知ってるって言ったときに信じられるから」

その週の終わり、港地区の権藤が使いをよこした。古い漁協の倉庫から、潮見表と船の機関の整備記録が見つかったという。ナギはSSDを一つ、リュックに入れた。帯域幅は、ステーションワゴンにはかなわない。自転車一台分だ。

この章で学んだこと

  • LLMの知識は重みの中に「にじんで」いて、根拠を示したり更新したりするのが苦手。RAGは答える前に外部の資料を検索し、それを根拠に生成する(Lewis ほか, 2020)。
  • 2026年10月時点で、日本語版ウィキペディアのKiwix用ZIMは画像入りで29GB、画像なしで15GB。オフラインの本棚として十分に持ち運べる大きさ。
  • 文書は出典付きのチャンクに分け、キーワード検索(BM25)と埋め込み検索を組み合わせて引く。小さな埋め込みモデルは手元の計算機でも動く。
  • 信頼できるRAGの約束は三つ。根拠の範囲で答える、出典を示す、見つからなければ「わかりません」と言う。最後の確認は人間が担う。
  • モデルを作り直さなくても、資料を足せば知識は更新できる。ネットがなければ、記録媒体を人が運べばいい。

出典・参考

  1. Lewis, P. ほか "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"(NeurIPS 2020)https://arxiv.org/abs/2005.11401
  2. Kiwix 公式サイト https://kiwix.org/en/
  3. Kiwix ウィキペディアZIMファイル一覧(2026年10月24日閲覧)https://lb.download.kiwix.org/zim/wikipedia/
  4. Wikipedia "ZIM (file format)" https://en.wikipedia.org/wiki/ZIM_(file_format)
  5. Wikipedia "Okapi BM25" https://en.wikipedia.org/wiki/Okapi_BM25
  6. intfloat/multilingual-e5-small(Hugging Face)https://huggingface.co/intfloat/multilingual-e5-small
  7. BAAI/bge-m3(Hugging Face)https://huggingface.co/BAAI/bge-m3
  8. FAISS(GitHub)https://github.com/facebookresearch/faiss
  9. sqlite-vec(GitHub)https://github.com/asg017/sqlite-vec
  10. Wikipedia "Sneakernet" https://en.wikipedia.org/wiki/Sneakernet
  11. デモ資料の原典:WHO "Boil water"(2015)https://www.who.int/publications/i/item/WHO-FWC-WSH-15.02/SODIS "How does it work" https://www.sodis.ch/methode/anwendung/index_EN.html/経済産業省「家庭用自家発電機の屋内使用による一酸化炭素中毒事故」(内閣府防災情報)https://www.bousai.go.jp/kohou/kouhoubousai/r03/101/news_08.html/Battery University "BU-804" https://batteryuniversity.com/article/bu-804-how-to-prolong-lead-acid-batteries

さらに深く学ぶ

  • 入門Web資料

    Appropedia

    Appropedia Foundation and contributors(2007)

    適正技術や持続可能な暮らしの技術を集めたオープンなウィキ。オフラインのAIに載せる知識源の候補にもなる。

  • 入門ツール

    Kiwix

    Emmanuel Engelhart, Renaud Gaudin and contributors(2006)

    Wikipediaなどをオフラインで閲覧できるソフトとZIM形式のアーカイブ。ネットがなくても知識を持ち歩ける土台になる。

  • 中級論文

    Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

    Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, et al.(2020)

    検索した文書を根拠に回答を生成するRAGを提案した原論文。オフラインの知識庫とAIを結びつける中心技術。

  • 上級論文

    Dense Passage Retrieval for Open-Domain Question Answering

    Vladimir Karpukhin, Barlas Oğuz, Sewon Min, Patrick Lewis, et al.(2020)

    文章をベクトルにして意味の近さで検索する密ベクトル検索(DPR)の論文。RAGの検索部分を理解するのに必要。

本・論文・資料の一覧へ →