ホームページ  >  記事  >  バックエンド開発  >  独自の AI RAG チャットボットを作成する: LangChain を使用した Python ガイド

独自の AI RAG チャットボットを作成する: LangChain を使用した Python ガイド

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-20 14:15:30348ブラウズ

文書から即座に回答が得られることを望まない人はいないでしょうか?それはまさに RAG チャットボットが行うことです。検索と AI 生成を組み合わせて、迅速かつ正確な応答を実現します。

このガイドでは、検索拡張生成 (RAG)LangChain および Streamlit を使用してチャットボットを作成する方法を説明します。このチャットボットはナレッジ ベースから関連情報を取得し、言語モデルを使用して応答を生成します。

OpenAIGemini、または Fireworks のいずれを使用するかに関係なく、応答生成のための複数のオプションを提供しながら、各ステップを順を追って説明します。コスト効率の高いソリューションです。

検索拡張生成 (RAG) とは何ですか?

RAG は、取得生成 を組み合わせて、より正確でコンテキストを認識したチャットボット応答を提供する方法です。取得プロセスではナレッジ ベースから関連ドキュメントを取得し、生成プロセスでは言語モデルを使用して、取得したコンテンツに基づいて一貫した応答を作成します。これにより、言語モデル自体がその情報に基づいて特別にトレーニングされていない場合でも、チャットボットは最新のデータを使用して質問に回答できるようになります。

質問に対する答えを常に知っているわけではないパーソナル アシスタントがいると想像してください。ですから、あなたが質問すると、彼らは本を読んで関連する情報を見つけ出し(検索)、その情報を要約して自分の言葉で教えてくれます(生成)。これは基本的に RAG の仕組みであり、両方の長所を組み合わせたものです。

フローチャートでは、RAG プロセスは次のようになります。

Create Your Own AI RAG Chatbot: A Python Guide with LangChain

それでは、独自のチャットボットを取得してみましょう!


プロジェクト環境のセットアップ

このチュートリアルでは主に Python を使用します。JS の知識がある場合は、説明に従って langchain js のドキュメントを読むことができます。

まず、プロジェクト環境をセットアップする必要があります。これには、プロジェクト ディレクトリの作成、依存関係のインストール、さまざまな言語モデルの API キーの設定が含まれます。

1. プロジェクトフォルダーと仮想環境の作成

まず、プロジェクト フォルダーと仮想環境を作成します。

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate

2. 依存関係をインストールする

次に、requirements.txt ファイルを作成して、必要な依存関係をすべてリストします。

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2

次に、これらの依存関係をインストールします。

pip install -r requirements.txt

3. APIキーの設定

チャットボットの応答生成には、OpenAIGemini、または Fireworks を使用します。好みに応じてこれらのいずれかを選択できます。

実験中であっても心配する必要はありません。Fireworks は 1 ドル相当の API キーを無料で提供しており、gemini-1.5-フラッシュ モデルもある程度は無料です。

優先モデルの API キーを保存する .env ファイルを設定します。

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate

これらのサービスにサインアップして API キーを取得してください。 GeminiFireworks は両方とも無料枠を提供していますが、OpenAI は使用量に応じて課金されます。


ドキュメントの処理とチャンク化

チャットボットにコンテキストを与えるには、ドキュメントを処理し、管理可能なチャンクに分割する必要があります。大きなテキストは埋め込みとインデックス作成のために分割する必要があるため、これは重要です。

1. document_processor.pyを作成する

ドキュメント処理を処理するために document_processor.py という新しい Python スクリプトを作成します。

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2

このスクリプトはテキスト ファイルをロードし、チャンク間でコンテキストが失われないように、小さな重複を含む約 1000 文字の小さなチャンクに分割します。処理が完了すると、ドキュメントを埋め込んでインデックスを作成する準備が整います。


埋め込みとインデックス作成の作成

ドキュメントがチャンク化されたので、次のステップは、ドキュメントを 埋め込み (テキストの数値表現) に変換し、高速に取得できるようにインデックスを付けることです。 (機械は言葉より数字を理解しやすいため)

1.embedding_indexer.pyを作成する

embedding_indexer.py という名前の別のスクリプトを作成します:

pip install -r requirements.txt

このスクリプトでは、Hugging Face モデル (all-MiniLM-L6-v2) を使用して埋め込みが作成されます。次に、これらの埋め込みを FAISS ベクターストアに保存します。これにより、クエリに基づいて同様のテキスト チャンクを迅速に取得できます。


取得と応答生成の実装

ここからがエキサイティングな部分です。検索と言語生成を組み合わせるのです。次に、ベクターストアから関連するチャンクを取得し、言語モデルを使用して応答を生成する RAG チェーン を作成します。 (vectorstore は、数値に変換されたデータをベクトルとして保存したデータベースです)

1. rag_chain.pyを作成する

ファイル rag_chain.py を作成しましょう:

# Uncomment your API key
# OPENAI_API_KEY=your_openai_api_key_here
# GEMINI_API_KEY=your_gemini_api_key_here
# FIREWORKS_API_KEY=your_fireworks_api_key_here

ここでは、指定した API キーに基づいて、OpenAIGemini、または Fireworks のいずれかを選択します。 RAG チェーンは、最も関連性の高い上位 3 つのドキュメントを取得し、言語モデルを使用して応答を生成します。

予算や使用方法の好みに応じてモデルを切り替えることができます。GeminiFireworks は無料ですが、OpenAI は使用量に応じて課金されます。


チャットボットインターフェイスの構築

次に、RAG チェーンを使用してユーザー入力を受け取り、応答を生成するシンプルなチャットボット インターフェイスを構築します。

1.chatbot.pyを作成する

chatbot.py という名前の新しいファイルを作成します:

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate

このスクリプトは、ユーザー入力を継続的にリッスンし、RAG チェーンを通じて処理して、生成された応答を返すコマンドライン チャットボット インターフェイスを作成します。


Streamlit UI の作成

Streamlit を使用して Web インターフェイスを構築し、チャットボットをさらに使いやすくしましょう。これにより、ユーザーはブラウザを通じてチャットボットと対話できるようになります。

1.app.pyを作成する

app.py を作成します:

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2

2.Streamlitアプリを実行する

Streamlit アプリを実行するには、以下を使用します:

pip install -r requirements.txt

これにより、テキスト ファイルをアップロードし、質問し、チャットボットから回答を受け取ることができる Web インターフェイスが起動します。


パフォーマンスの最適化

パフォーマンスを向上させるために、テキストを分割するときにチャンク サイズとオーバーラップを試してみることができます。チャンクが大きいほど、より多くのコンテキストが提供されますが、チャンクが小さいほど、検索が高速になる可能性があります。 Streamlit キャッシュを使用して、埋め込みの生成などの高価な操作の繰り返しを避けることもできます。

コストを最適化したい場合は、クエリの複雑さに応じて OpenAIGemini、または Fireworks を切り替えることができます。OpenAI を使用し、コストを削減するための簡単な質問には Gemini または Fireworks を使用します。


まとめ

おめでとうございます!独自の RAG ベースのチャットボットが正常に作成されました。可能性は無限大です:

    自分専用の学習仲間を作成しましょう。
  • 長いドキュメントを読む必要はもうありません。「ざっと書き出してみる」だけで、迅速かつ正確な回答が得られます。
旅はここから始まり、可能性は無限大です!


GitHub で私の作品をフォローできます。お気軽にご連絡ください。私の DM は常に X と LinkedIn でオープンしています。

以上が独自の AI RAG チャットボットを作成する: LangChain を使用した Python ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。