LangChain と DeepSeek 1.3B で RAG を実装しよう!
みなさん、こんにちは!今日は LangChain と DeepSeek 1.3B を使って RAG(Retrieval-Augmented Generation)を実装する方法を楽しく学びましょう!
「え?RAG って何?」と思った方、大丈夫です!RAG とは、言語モデル(LLM)と外部知識ベースを組み合わせて、より正確で関連性の高い回答を生成する仕組みのことです。つまり、単なる LLM だけよりも、「調べて答える」ことができる賢い AI というわけですね。
準備しよう!
まずは環境を整えましょう。以下の準備ができていれば OK です。
✅ Python 3.10 以上
✅ Python の基本的な知識
✅ 言語モデルや検索システムの基礎知識(なくても OK!)
では、必要なライブラリをインストールしましょう。
pip install langchain openai chromadb
よし!インストールできたら、次に進みます。
1. データを準備しよう!
「材料がなければ料理はできない!」ということで、RAG に使うドキュメントを用意しましょう。
例えば、data/documents
フォルダにテキストファイルをたくさん入れておきます。
2. ドキュメントを読み込んで分割しよう!
次に、ドキュメントを読み込んで、適当な長さに分割します。
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
# フォルダ内のドキュメントをロード
loader = DirectoryLoader('data/documents', glob='*.txt')
documents = loader.load()
# ドキュメントを 1000 文字ずつに分割
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
docs = text_splitter.split_documents(documents)
「一気に読むのはしんどい!」という AI のために、小分けにしてあげましょう。
3. 埋め込みを作成しよう!
ここで、「検索しやすいように」テキストをベクトルに変換します。
from langchain.embeddings import OpenAIEmbeddings
# OpenAI の埋め込みモデルを初期化
embeddings = OpenAIEmbeddings()
# テキストの埋め込みを作成
doc_embeddings = embeddings.embed_documents([doc.page_content for doc in docs])
「え?ベクトルって何?」と思った方、大丈夫です!簡単に言えば、「テキストを数学的な数字の並びに変換して、似たもの同士を探しやすくする」って感じです。
4. ベクトルストアを作ろう!
次に、ChromaDB を使ってベクトルストアを作成し、検索できるようにします。
import chromadb
# ChromaDB クライアントを初期化
client = chromadb.Client()
# コレクションを作成
collection = client.create_collection('document_collection')
# ドキュメントと埋め込みを追加
for doc, embedding in zip(docs, doc_embeddings):
collection.add(doc.page_content, embedding)
これで、AI がドキュメントを探しやすくなりました!
5. 検索機能をセットアップ!
さあ、AI に検索の力を授けましょう!
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
# 言語モデルを初期化
llm = OpenAI()
# RAG の検索機能を設定
qa_chain = RetrievalQA(llm=llm, retriever=collection.as_retriever())
6. DeepSeek 1.3B を統合しよう!
次に、DeepSeek 1.3B を使って、検索結果を元に回答を生成できるようにします。
from deepseek import DeepSeek
# DeepSeek モデルを初期化
deepseek_model = DeepSeek('1.3B')
# DeepSeek を使った回答生成関数
def generate_response(query):
# 関連するドキュメントを取得
retrieved_docs = qa_chain.retrieve(query)
# 取得したドキュメントを 1 つのコンテキストに結合
context = ' '.join([doc.page_content for doc in retrieved_docs])
# DeepSeek で回答を生成
response = deepseek_model.generate(query, context)
return response
これで、RAG システムが「調べてから回答する」賢い AI になりました!
7. ユーザーインターフェースを作ろう!
最後に、Streamlit を使って Web インターフェースを作ります。
import streamlit as st
# Streamlit アプリ
st.title('LangChain + DeepSeek 1.3B の RAG システム')
# ユーザーの入力
query = st.text_input('質問を入力してください:')
# 回答を生成
if query:
response = generate_response(query)
st.write('回答:', response)
まとめ
お疲れ様でした!今回のステップを踏めば、LangChain と DeepSeek 1.3B を活用した RAG システムが完成します。
💡 ポイントおさらい
✅ ドキュメントを読み込んで分割
✅ 埋め込みを作成してベクトルストアに保存
✅ 検索機能を実装し、DeepSeek で回答生成
✅ Streamlit で楽しくインタラクティブな UI を作成
「おお、これなら AI も賢くなるし、なんかカッコいいぞ!」
是非、自分のプロジェクトにも活用してみてください!🎉