LLMを使ったプログラムはすっかり普通になりました。ローカルLLMでも、利用しやすいものも出てきて気軽に利用できます。一方で、RAGは様々な方法が提案がされています。読んだだけで、さくっと実装できて、利用できそうなコードなのかという感触は早めに得たい。論文を完璧に実装するつもりはありません。同じ環境をそろえることもできませんし、追試をしたいわけでもありません。単なる趣味的にLLMを利用した実装検討の一環です。
まず、DeepRAG、RRAというRAGに関する論文をArXivから入手し、それをもとに簡単なRAGをStreamlitで実装します。PRFをパースし回答するという単純なものです。LLMの実装には、langchainを使って実装します。LLMはollamaで動作させます。テキストのチャンクや、様々な細かい調整はせずに簡単に実装が可能か、という視点で作成します。
LLMの利用の流れ
- ChatGPTにPDFを読み込ませ、上記の条件で実現するコードのたたき台を作成させます。
- 得られたコードをVS CodeのGithub Copilotの無料枠を利用して、動作できるレベルまで訂正していきます。Copilot君に指示する方が文字数多くなりそうなものは、直接手直しをします。
- README.mdを作成させて、書き直ししたり追記します。
以上で完成です。中途半端な実装だったり、論文の主要なエッセンスだけの実装だけだったりの様な気もしますが、手を動かしながらお勉強だと思って割り切ります。筆者がソースコードを公開していたりするので、無駄なことをやっているケースもあると思います。
正確さを求めなければ思ったより、簡単に動作できるまでは終わります。寝る前の短時間でできます。ただ、利用するライブラリの基本的な使い方を理解して指示しないと無駄な工数がかかりそう。また、基本的な動作を盛り込んだコードを作ってしまえば、それを参考にさせるような指示をだせば、思った通りに近いものが早々に出来上がりました。サンプルコードや模擬コードで示すのがよかったです。もしかして、人間相手でもそうなのかも・・・。
気になるRAG手法の実装雰囲気を楽しめます。ちょっと続けてみようかな。