🐕

開発者のためのRAGシステムとベクトルデータベース実装ガイド(前編)

に公開

1. この記事のゴール

  • AI 開発未経験でも、RAG(Retrieval‑Augmented Generation)の全体像が 10 分でつかめる
  • "ベクトル検索って結局なに?" がイメージで理解できる

2. AI基礎知識から始めよう

そもそもAIは何を「知っている」のか?

最新の大規模言語モデル(LLM)は、書籍、ウェブページ、学術論文などの膨大な公開されているテキストデータから言語のパターンを学んでおり、特定の知識や事実を「記憶している」わけではありません。また、あなたの社内資料や個人情報にはアクセスできません。

  • 一般知識はある程度把握していますが、時事的な情報は限定的です(モデルによっては2024年までの情報をカバー)。
  • あなたの会社の内部文書や個人的なデータは、学習に含まれていないため、アクセスも知識もありません。
  • リアルタイムな情報収集やデータ検索はできないモデルもあり、補助的にRAG(検索補助型生成)やAPI連携が必要です。

3. RAGとは

なぜRAGが必要なのか?

  • 課題: LLMは最新情報や特定領域の詳細な知識を持っていない
  • 解決策: 外部データソースから関連情報を取得して回答の質を向上させる
  • メリット: 最新データの活用、幻覚(誤った情報生成)の軽減、ドメイン特化型回答の実現

RAG(Retrieval-Augmented Generation)とは?

RAGは「検索拡張生成」と訳され、生成AIが回答を行う際に、外部知識をリアルタイムで取り込むことで、精度と根拠のある回答を実現する仕組みです。

多くのユーザーがイメージしているAIの仕組みは、

「質問を入力 → AIが考えて回答 → 結果を返す」

という流れかもしれません。
しかし、実際のRAGシステムでは、この背後でより複雑かつ高度なプロセスが行われています。


具体的には以下のような処理が走っています:

  1. ユーザーの質問を受け取る
  2. 質問を意味ベクトルに変換(※単なる文字列ではなく「意味」を数値に)
  3. そのベクトルを使って、ベクトルDBから関連する知識や文書を検索
  4. 検索された情報とユーザーの質問を一つのプロンプトに統合
  5. この統合プロンプトをもとに、生成AI(GPT, Claudeなど)が回答を生成

このようにRAGは、「AIがすべての知識を覚えているわけではない」という現実に対応し、最新かつ外部の情報源を使ってその場で“調べて答える”という、より人間に近い思考プロセスを再現しているのです。

4. ベクター(ベクトル)とは

ベクター(ベクトル)って何?なぜ重要?

ベクトルとは、一言でいうと「数値の並び」です。例えば [0.2, 0.5, -0.1, 0.8, ...] のように、数字を順番に並べた形です。これがAIにとっての“言葉の意味”の表現方法になります。

この数値列は、数百〜数千の次元で構成されています。たとえば OpenAI の text-embedding-ada-002 というモデルでは、1536次元のベクトルが出力されます。つまり、一つの単語や文が 1536個の数値 に変換されます。

どうやってベクトルに分解しているのか?

この変換は、「埋め込み(embedding)」と呼ばれる処理によって行われます。埋め込みモデルは、大量の文章からパターンを事前に学習していて、言葉の持つ意味・文脈・使われ方などを圧縮して、数値に変換しています。

1次元1次元には「これは動物っぽさ」「これは感情っぽさ」「これは否定的ニュアンス」といった明確な意味が割り当てられているわけではありませんが、全体としてその言葉の意味を持つように学習されています。


なぜ「ベクトル」で意味を扱うのか?

従来の検索はキーワード一致に頼っており、「犬」と「わんちゃん」をまったく別のものとして扱います。しかし、私たち人間はそれらがほぼ同じ意味であると自然に理解できます。

AIにその“意味の近さ”を理解させるために使われるのが、ベクトル検索です。

ベクトル検索では、言葉をベクトル(数値の配列)に変換し、意味的な近さを数値として計算できます。


ベクトル検索はどんなふうに便利なのか?

たとえば、以下のように単語がベクトルで表現されるとします:

「犬」         → [0.2, 0.8, 0.1, 0.9, ...]  
「わんちゃん」 → [0.3, 0.7, 0.2, 0.8, ...]  
「猫」         → [0.6, 0.1, 0.8, 0.2, ...]  

このとき、「犬」と「わんちゃん」のベクトルは非常に似ており、「猫」とはやや離れている、というふうに判断できます。

もう1例見てみましょう。

  • 「鳥」と「飛行機」は、「空を飛ぶ」という特徴で似ている
  • 「飛行機」と「車」は、「乗り物」という特徴で似ている
  • しかし「鳥」と「車」は、共通点が少なく、ベクトル上も離れた位置になります

このように、単語や文章の「意味」同士の近さを、数学的に捉えられるのがベクトル検索の強みです。


ベクトル検索の本質的なポイント

  • テキストや画像を**意味のある数値(ベクトル)**に変換できる
  • 似た内容・意味を持つものは、ベクトル空間上で近くに配置される
  • 距離を測ることで、「意味的に似た情報」を検索できる

これによって、単なるキーワード一致では実現できなかった、より自然な情報検索が可能になります。


従来のデータベースとの違い

従来のキーワード検索では「AIアシスタント」と「人工知能助手」は別物として扱われますが、ベクトル検索では意味的に近いと判断されます。

従来のデータベース検索 ベクトルデータベース検索
キーワードの一致を検索 意味的な類似性で検索
「猫」で検索すると「猫」を含む文書のみ 「猫」で検索すると「ねこ」「キャット」「ペット」なども見つかる
正確だが柔軟性に欠ける 柔軟だが設定が複雑

5. まとめ

  • RAGとは?
    RAG(検索拡張生成)は、AIが外部データを検索して、その結果を使って答えを生成する仕組みです。
    いわば「AIがあなたの代わりに調べてから答えてくれる」仕組み。

  • ベクトル検索とは?
    AIが「意味」で検索できるようにするための技術です。
    キーワードの一致ではなく、“意味の近さ”を数値的に判断してくれる仕組み。

後半の記事です!
https://zenn.dev/acntechjp/articles/aa5f8e17e5af11

Accenture Japan (有志)

Discussion