Skip to content

yurikomium/perfume-rag-app

Repository files navigation

おすすめの香水が検索できるRAGアプリケーション

このアプリケーションは香水に関する情報を検索・閲覧できる RAG(Retrieval Augmented Generation)システムです。

33.mp4
  1. 検索条件を入れて「探す」をクリック
  2. おすすめの香水が表示される
  3. 「おすすめポイントを知る」を押すと、「香水のコンセプト」と「あなたにおすすめのポイント」が表示される

RAG とは?

RAG(Retrieval Augmented Generation)は以下の 3 つのコンポーネントから構成されています。このアプリケーションでの実装は次のとおりです:

  • Retrieval(検索):

    • 実装: searchDocs() 関数(utils/searchDocs.js
    • 機能: ユーザーのクエリをベクトル化し、データベースから類似度の高い香水情報を検索します
    • 処理: ユーザー入力を embedding モデルで変換し、ベクトル検索を実行して関連度の高いドキュメントを取得します
  • Augmentation(拡張):

    • 実装: buildPrompt() 関数(utils/buildPrompt.js
    • 機能: 検索結果を構造化し、LLM へのプロンプトに統合します
    • 処理: 検索で得られた香水情報をフォーマットし、ユーザークエリと合わせてコンテキスト豊かなプロンプトを生成します
  • Generation(生成):

    • 実装: fetchLLMResponse() 関数(utils/fetchLLMResponse.js
    • 機能: 拡張されたプロンプトを LLM に送信し、回答を生成します
    • 処理: Ollama API を通じて Llama 3.2 モデルと通信し、検索結果を基にした適切な回答を生成します

このアプリケーションでは、香水に関するデータを Chroma ベクトルデータベースに保存し、ユーザーの質問に対して関連する香水情報を検索・拡張し、LLM を活用して知識に基づいた回答を生成します。

セットアップ方法

前提条件

  • Node.js(推奨バージョン: 18.x 以上)
  • npm
  • LLM への接続環境(作者は Ollama を使用)

インストール手順

  1. リポジトリをクローンします
git clone <repository-url>
cd <repository-directory>
  1. 依存関係をインストールします
npm install
  1. データの準備
    • 自分で用意したデータを data ディレクトリに配置します(例をexample.jsonに入れました)
    • scripts ディレクトリに移動し、データ準備スクリプトを実行します
cd scripts
node prepare-data.js
cd ..
  1. 開発サーバーを起動します
npm run dev
  1. ブラウザで http://localhost:3000/test にアクセスして、LLM との接続をテストします

  2. 接続が確認できたら、http://localhost:3000/ にアクセスして香水の検索を開始できます!

現状の制限事項

  • プロンプトインジェクションの対策は実装されていません
  • LLM 接続にはローカルで動作する Llama 3.2 を使用しています(作者は Ollama を使用)
  • Llama 3.2 だと現状のプロンプトはハルシネーションを起こす傾向にあります。プロンプトエンジニアリングにチャレンジしてみてください!(動作動画ではAnthropicのAPI Keyを使用しています)
  • 接続設定やモデルの変更は .env ファイルで行えます

使用技術

  • Next.js
  • Vector Database(Chroma/Pinecone 等)
  • LLM

ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE ファイルをご覧ください。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published