1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🚀「LangChain × DeepSeek 1.3B で爆速 RAG 実装!」📚💡

Posted at

LangChain と DeepSeek 1.3B で RAG を実装しよう!

みなさん、こんにちは!今日は LangChain と DeepSeek 1.3B を使って RAG(Retrieval-Augmented Generation)を実装する方法を楽しく学びましょう!

「え?RAG って何?」と思った方、大丈夫です!RAG とは、言語モデル(LLM)と外部知識ベースを組み合わせて、より正確で関連性の高い回答を生成する仕組みのことです。つまり、単なる LLM だけよりも、「調べて答える」ことができる賢い AI というわけですね。

では、早速始めていきましょう!
image.png


準備しよう!

まずは環境を整えましょう。以下の準備ができていれば 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 も賢くなるし、なんかカッコいいぞ!」

是非、自分のプロジェクトにも活用してみてください!🎉

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?