論文に関する問い合わせ応答(要約・質問)を可能にするチャット形式のWebアプリ
- gpu環境上でDockerコンテナを構築し、コンテナ内で実行するものとする。
docker-compose.yamlでGPU数やポートを設定を行っているため、適宜変更すること。- OpenAIのAPIキーを取得し、
.envに設定すること。
.envファイルに以下のように設定する。(`.env.exampleを参考にする)
OPENAI_API_KEY= "key"
- コンテナのあるディレクトリ(prqa)へ移動
- 以下のコマンドを実行してコンテナを立ち上げる
$ docker compose up -d prqa-local- 以下のコマンドでコンテナにアクセス
$ docker exec -it prqa-local bash以下のコードでapp.pyを実行できる
$ chainlit run app.pyアップロードされた論文pdfファイルを英語の論文解析に特化した機械学習ベースOCRnougat-ocrでmmdファイルに変換し、特定のヘッダーレベルで分割、ベクトル埋め込みをベクトルDBにストアする。ユーザの質問に関して、ベクトルDBにクエリ検索を行い、関連した情報を取得して答えを返す。
flowchart
subgraph user
subgraph input
Q[Question]
S[PDF]
end
subgraph output
A[Answer]
end
input --> output
end
subgraph inside
S-->*.PDF
Q---LLM
LLM---A
LLM{{LLM}} -.-> query
D[/vectorDBstore/] -.-> LLM
query -. similarity search .-> D[/vectorDBstore/]
*.PDF -- nougat ocr -->*.mmd
*.mmd -- texsplitter --> chunk
chunk -- OpenAIEmbeddings-->D[/vectorDBstore/]
end
- Ubuntu: 22.04
- GPU: NVIDIA GeForce RTX 3090 x 2
- NVIDIA Driver Version: 535.171.04
- CUDA Version: 12.2
- Docker Engine: 26.1.3
- Python: 3.10.12
