LLMは賢い。でも学習データにないことは答えられない。「知らない」と素直に言えればまだいいけど、平気で嘘をつく(ハルシネーション)。「〇〇というAPIを使えばできます」って自信満々に言うから調べたら、そんなAPI存在しない…みたいな。これ、結構な頻度で遭遇する。
この問題を根本解決するのがRAG(Retrieval-Augmented Generation)。仕組みはめちゃシンプルで:
- 質問が来たら、まず外部の知識ベース(社内ドキュメント、PDF、Webサイトなど)から関連情報を検索
- 見つかった情報をプロンプトに追加で注入
- LLMはその情報を「参照」しながら回答を生成
RAGを導入してから、LLMの信頼性が劇的に上がった。具体的には:
- 学習データにない最新情報にも答えられるようになった(「先週リリースされた〇〇の使い方は?」が通る)
- ハルシネーションが激減(参照ソースがあるから、でたらめを言いにくくなる)
- 回答の根拠(出典)を示せるようになった(「この情報は社内WikiのXページからです」)
僕のスタックはこう:
- ドキュメントのベクトル化 → LangChain か LlamaIndex
- ベクトルDB → ChromaDB(無料で必要十分)
- 埋め込みモデル → OpenAI Embeddings か Cohere
社内のメモ全部をChromaDBに突っ込んでRAGさせてるんだけど、「あのとき書いたメモなんだっけ」が一発で出てくる。これ、マジで便利で手放せない。