ユーザークエリに基づいて、Redis.com Webサイトでブログを要約および推奨できるチャットボットを作成します。

この小さなプロジェクトでは、2つのAIモデルを使用しています
このプロジェクトでは、実証することを目指しています
最も簡単な方法は、以下のコマンドを使用してDocker画像を使用することです
docker run -d -p 6379:6379 -p 8001:8001 redis/redis-stack:latestDocker画像を使用したくない場合は、こちらの無料Redisクラウドサブスクリプションにサインアップできます。
リポジトリをダウンロードします
git clone https://github.com/mar1boroman/ask-redis-blogs.git && cd ask-redis-blogs
仮想環境を準備してアクティブにします
python3 -m venv .env && source .env/bin/activate
必要なライブラリと依存関係をインストールします
pip install -r requirements.txt
Redis Blogには、Webscraperの最初のスクリプトを実行するRedisブログに広範な知識ベースがあります。このスクリプトは、Webサイトをスクレイプし、利用可能なすべてのブログのデータを含むCSVファイルを作成します。
python 0_ext_redis_blogs.pyこのリポジトリには、2023年9月19日までブログが更新されていることに注意してください。このスクリプトを実行すると、新しいブログのみがダウンロードされます。 CSVファイルはredis_blogs.csvに保存されます
このステップでは、各ブログのテキストコンテンツの埋め込みを生成し、ハッシュ形式で保存します
python 1_load_redis_blogs.pyhttp:// localhost:8001でブラウザでRedisInsightのRedisデータベースのコンテンツを調べることができます
ブログとその埋め込みをRedisに保存したので、チャットボットが動作しているのを見る時が来ました。
streamlit run 3_ui.py
ブログで簡単なベクトルの類似性検索を実行しましょう。

「自動要約」チェックボックスがチェックされていないことを確認してください
プロンプトを入力します。例えば
Triggers and Functions
ミリ秒以内に3つのブログの推奨事項が得られます。応答には、応答を返すのにかかる時間も含まれます。この場合、検索はRedisで完全に行われますが、類似性検索を実行する前にプロンプトがAll-MPNet-Base-V2を介して実行されることを除きます
もう少し高度になりましょう。

「自動要約」チェックボックスがチェックされていることを確認してください
プロンプトを入力します。例えば
Triggers and Functions
このプロンプトを初めて入力すると、次のことが起こります
これにはかなり長い時間がかかり、約30秒かかります
したがって、Redisに応答とプロンプトを保存します。ブラウザでRedisInsightを確認すると、プレフィックスllm_cacheで作成されたキーが表示されます
応答が返されると、プロンプトと応答がキャッシュされ、さらに重要なことに、プロンプトはAll-MPNet-Base-V2を介して実行され、対応する埋め込みもキャッシュされます
ここで、同じプロンプトを実行してみてください(またはもう一度同様のプロンプト)。例えば
About Triggers and functions
プロンプトの埋め込みと前のステップでキャッシュされた応答との間のぼやけた高速ベクトルの類似性検索に基づいて、キャッシュされた応答が得られます。
ここでセマンティックキャッシングを使用することの利点をはっきりと見ることができます
チャットボットのバージョンはCLIバージョンで利用できます
python 2_vecsim_redis_blogs.py