Docker-Composeを使用してローカルに実行されているDemo LLM(Rag Pipeline)Webアプリ。 LLMおよび埋め込みモデルは、Openaiのサービスとして消費されます。
主な目的は、ユーザーが「コンピュータープログラマーがLasikを取得するための禁忌があるか」など、Lasik手術に関連する質問をすることができるようにすることです。
検索拡張生成(RAG)パイプラインは、データセットから最新の情報を取得して、ユーザークエリに正確で関連する応答を提供します。
アプリアーキテクチャを以下に示します。

シーケンス図:
Sequendediagram
ユーザー - >> LangServe API:クエリ
ユーザーの権利:コンピュータープログラマー<br/> <br/> lasikを取得するための禁忌<br/>はありますか?
LangServe API- >> Openai Embeddings:ユーザークエリ
Openai Embeddings - >> LangServe API:埋め込み
LangServe API- >> Milvusdb:ドキュメント検索(ベクトル検索)
milvusdb- >> langserve api:関連文書
Langserve APIの右:プロンプト<br/>エンジニアリング...
LangServe API- >> Openai LLM:濃縮プロンプト
Openai LLM - >> LangServe API:生成された回答
UX:

アプリDockerイメージを構築する:
make app-buildOpenAI APIキーを環境変数として設定します
export OPENAI_API_KEY= < your-api-key >Milvus DBをスピンアップ:
make db-updbをLasik Eye Searly Complysications Datasetに浸透させます。
make db-populate
スピンアップAPI:
make app-run
チャットボットはhttp:// localhost:8000/lasik_complications/playground/で入手可能になりました。
使用可能なすべてのコマンドを次のように表示します。
make help 
掃除
make clean ├── .github
│ ├── workflow
│ │ └── cicd.yml <- CI pipeline definition
├── data
│ └── laser_eye_surgery_complications.csv <- Kaggle dataset
|
├── docs
│ ├── diagrams <- Folder containing diagram definitions
│ └── img <- Folder containing screenshots
│
├── src
│ ├── config.py <- Config file with service host/ports or models to be used
│ ├── populate_vector_db.py <- Scripts that converts texts to embeddings and populates Milvus DB
│ └── server.py <- FastAPI/Langserve/Langchain
│
├── .gitignore
├── .pre-commit-config.yaml <- ruff linter pre-commit hook
├── docker-compose.yml <- container orchestration
├── Dockerfile <- App image definition
├── Makefile <- Makefile with commands like `make app-build`
├── poetry.lock <- Pinned dependencies
├── pyproject.toml <- Dependencies requirements
├── README.md <- The top-level README for developers using this project.
└── ruff.toml <- Linter config
Lasik(レーザー眼科手術)合併症(Kaggle)から供給される

Milvusは、Zillizが開発したオープンソースベクトルデータベースエンジンで、埋め込み、機能、高次元データなどの大規模なベクトルデータを保存および管理するように設計されています。ベクトルの類似性検索タスクに効率的なストレージ、インデックス作成、および検索機能を提供します。

LangChainはLLMオーケストレーションツールです。コンテキスト対応LLMアプリを構築する必要がある場合に非常に便利です。
LLMにコンテキストを提供するには、プロンプトテンプレートで元の質問をラップする必要があります

UXの「中間ステップ」をクリックすることで、実際に受け取ったLLMのプロンプトを確認できます

Langserveは、開発者がLangchain RunnablesとChainsをRest APIとして展開するのを支援します。このライブラリはFastapiと統合されています。
チャットボットは、統計に関連する質問に答えることができません。たとえば、「レーシック手術の合併症に最近の傾向はありますか?」 、文書を取得するために考慮し、この時間ウィンドウで最終プロンプトを豊かにするために、関連する時間ウィンドウを推測する別のモデルが必要です。
Langsmithによるアルゴリズムフィードバック。これにより、自動化された方法でLLMチェーンの堅牢性をテストできます。