🐷

LangChainを用いて大量ファイルをロードするVectorDBを作ってみた(1)

2024/05/21に公開

私の経歴

現在、私は某ユーザ企業の情報システム部門に所属しています。いわゆる「情シス」です。

以前はソフトウェア会社に勤務をしてプログラミングやプロジェクト・リーダーなどをやっていましたが、ソフトウェア開発界隈では「バリュー」(ここでは難易度やお客様が喜んでくれる度合でしょうか)ではなく「人月」(ここではプログラムステップ数若しくは工数)での評価をしていることに漠然と不安を感ていました。
それは、私がそれほどプログラミングをできるわけでもなく、また歳もとってきており、ソフトウェア開発で働き続けることに未来があるのかなぁ、と思っていたからです。

そんなことを考えて、うっすら転職活動をしていた時に、とても素晴らしい経営理念を掲げているユーザ企業を見つけました。
「経営理念が素晴らしい会社は絶対優良な会社だ!」と思い、私はこの会社の「情シス」に転職することにしました。それが私が現在所属している会社です。

「情シス」という部署は初めてだったのですが、プログラミングや設計のスキルよりも、人とうまく折衝できること、「ノウハウ」ならぬ「ノウフー(know who)」(会社の中でこのことは誰が知っているかを分かっていること)が、非常に重要であることを理解しました。
私は人と話をすることがあまり得意ではなかったのですが、会社のいろいろな方々と打合せやお話をすることで、「私に向いている仕事かもしれない」と思ってきました。

ユーザ企業の中では、プログラミング、システム、ITのことを全く知らない方々が多く、少しマクロを組んだりすれば効率が劇的に上がる作業でも、手作業のために大変苦労していることも目の当たりにしてきました。
私は、日本の多くのユーザ企業では、ちょっとしたプログラム・マクロができるようになるだけで、本当にたくさんの方々が楽になると確信しています。
どのようにすれば、会社の皆さんが楽しく仕事の効率を上げることができるのか、現在いろいろ考えています。「RPA」や「ノーコード」などを導入している企業もあるようですが、習得するのにそれなりにハードルが高く、直ぐに浸透させるのは難しそうです。今後の私の課題として捉えています。

また一方で、会社の皆さんのメンタル的な課題も発生しています。例えば部署内の人間関係で悩んだり、仕事の効率が上がらないために上司や同僚から叱られたり。
私は、心理学のメソッドの1つである「NLP」(Neuro-Linguistic-Programming(神経言語プログラミング))を取り入れて、会社の皆さんが楽しく・安心して働けるように今画策しています。これについては追々お話しします。

こんなことを考えながら、日々お仕事をさせていただいています。

LangChainをやってみようと思ったきっかけ

「LangChain」をやってみようと思ったのはつい最近(2023年12月頃)なのですが、そのきっかけは数年前に兄弟が立ち上げた会社の「Webプラットフォーム」のプログラミングのお手伝いをすることが始まりとなります。
当時(といっても6か月前)私はPythonのプログラミングは初めてで、生成AI(今回はChatGPT)のAPI利用方法も全く知りませんでした。
ただ、過去にプログラミングの経験があったので、何とかなるかなぁ~と思って引き受けました。

このブログを書くことになった動機

私が考えた構想は、フォルダの中の非定型ファイル群を一気に読込み、その情報を利用して生成AIに問いかけをするという仕組みでした。すなわちタイトルにある「大量ファイルをロードするVectorDB」の実現です。
早速やってみようと思い、「Udemy」や「YouTube」を色々見てみましたが、「LangChain」を全く知らないことと、Pythonプログラミングもままならない状況でしたので、どこから手を付けてよいのか分からない状況でした。
そんな中、LangChainに関するとってもわかりやすい書籍を見つけました。それが「LangChat完全入門」です。
先ずはサンプルをそのままコーディングしてトライ&エラーを繰り返し、解説を読みながら少しずつ理解してきました。

ある程度コーディングをしていくと、「大量ファイルをロードするVectorDB」が作れるのでは?というようになりました。
また、いろいろなWebサイトをみても、1つのPDFファイルやtextファイルを基にVectorDBへ情報を蓄積させるものはありましたが、大量ファイルを蓄積させるものは、探すことができませんでした。
そこで、私の苦労の連続と共に「大量ファイルをロードするVectorDB」の作り方を執筆してはどうだろうと思ったのが今回のきっかけです。

本ブログについて

langchain完全入門.jpg

本ブログは、『LangChat完全入門』(田村悠 著)という書籍のサンプルプログラムを参考に、LangChainで大量ファイルを読込み、VectorDBに情報を蓄積させ、その情報を元に生成AIから回答をもらうプログラムを作成するまでのストーリーを何回かに分けて書いていこうと思います。
勿論、ここに記載している内容はノンフィクションです。

次回から、どのようにして「大量ファイルをロードするVectorDB」を作っていったのかを説明していきます。

Discussion