RAG(検索拡張生成)をAPIで組むのもいいけど、ローカルLLMがあれば完全オフライン・完全無料・完全プライベートなRAGシステムが作れる。自分の文書を全部食わせて、自分だけのAIアシスタントを作る——そんな夢みたいなことができる。
僕は日々のメモやブログ記事、読んだ論文のPDFを全部ローカルRAGに突っ込んでる。あとで「あの記事で何て書いたっけ?」ってなったとき、AIに聞くだけで一発で出てくる。Evernoteの検索より遥かに賢い。
ローカルRAG構築の道具立て:
- LLM — Ollama(Llama 3 8B)で十分。70Bにすると回答の質は上がるけど遅くなる。
- Embeddingモデル — BGEが定番。Ollamaから `nomic-embed-text` も使える。
- ベクトルDB — ChromaDBが一番簡単。pip installするだけ。QdrantやWeaviateも選択肢。
- オーケストレーションフレームワーク — LlamaIndexかLangChain。僕はLlamaIndex推し。
構築手順(LlamaIndex + Ollama + ChromaDB):
# 1. インストール
pip install llama-index chromadb
ollama pull llama3
ollama pull nomic-embed-text
# 2. ドキュメントを読み込む
from llama_index.core import SimpleDirectoryReader
docs = SimpleDirectoryReader("./my_documents").load_data()
# 3. ベクトルDBにインデックス
from llama_index.core import VectorStoreIndex
index = VectorStoreIndex.from_documents(docs)
# 4. 質問する
query_engine = index.as_query_engine()
response = query_engine.query("先週のミーティングで決まったことは?")
print(response)
これだけで動く。コード量は実質10行。APIキー不要、月額課金なし、データ流出なし。
注意点。ローカルLLMはGPT-4ほど賢くないから、RAGの回答品質は「それなり」。でも、自分だけが持ってる社内文書や研究ノートを検索できる価値は計り知れない。