木村たろう

現在、某ユーザ企業の情報システム部門、いわゆる「情シス」に所属。 以前はソフトウェア会…

木村たろう

現在、某ユーザ企業の情報システム部門、いわゆる「情シス」に所属。 以前はソフトウェア会社に勤務をしてプログラミングやプロジェクト・リーダーなどをやってきたが、また歳もとってきており、ソフトウェア開発で働き続けることに未来への漠然な不安から現在の会社に所属。

最近の記事

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

はじめに 大量ファイルを単純にVectorDBに登録して、そのデータベースに対して生成AIに質問をしても、精度の高い回答を得られないことが分かってきました。  前回と前々回では、各XMLファイルの中にある「タイトル情報」を基に生成AIによる自動タグ付けを実施し、それをVectorDB (Chroma)の属性として登録することをしてみました。これで、VectorDBに対する準備ができました。  今回はこのデータベースを基に、条件となる「タグ情報」を入力し、生成AIに質問をする

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

      はじめに 前回は、各XMLファイルの中にある「タイトル情報」を基に「自動タグ付け」して、それをVectorDB (Chroma)の属性として登録することをしてみました。これで、VectorDBに対する準備ができました。  ただ、この記事を書いた後に大量ファイルをロードしようとしたのですが、処理時間を非常に要することがわかりました。  今までは1ファイルの処理に0.01~0.1秒かかる程度だったのですが、「自動タグ付け」処理を追加すると、1ファイルにつき30~40秒かるように

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

        はじめに 前回は、`chainlit`を`streamlit`に置き換えて、「XMLファイルの名称(10桁の数字)を入力するためのテキストボックス」と「プロンプト入力ボックス」の両方を表示させて入力できるようにしました。  今回で10回目の記事投稿なのですが、少しずつ進化しているような気がしています。  今まで、XMLファイルの中で必要なデータのみをデータベースに登録したり、`metadata`の属性情報をデータベースに追加登録したりしてきました。少しずつ精度は上がっている

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

          はじめに前回は、`chainlit`を用いて、プロンプトの最初の10桁はファイル名、11桁目以降は質問内容という、プログラムを作っていました。`chainlit`について、複数の入力欄を出力できるサンプルを見つけることができなかったからでした。とてもこんなプログラムでは、商用利用することはできません。 そんな中、いろいろなプログラミングのサンプルを検索していくと、`streamlit`というものを見つけました。 これであれば、私が考えていた「ファイル名をテキストボックスに入

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

          ChatGPT/LangChainによるチャットシステム構築[実践]入門のプログラムを試す

          はじめに 現在私は「LangChain」のプログラムに沼っており(若い人が使う言葉ですね)、今回は「ChatGPT/LangChainによるチャットシステム構築[実践]入門」を読んで、いろいろプログラミングをして楽しむことにしました。  今まで私は「製造業の生産管理システム」や「プログラム言語の構文解析システム」など、いろいろなプログラミングをしてきたのですが、生成AI分野のように完全な正解が無く、常にアップデートしていくスタンスのものは初めてで、とても興味深いです。  こ

          ChatGPT/LangChainによるチャットシステム構築[実践]入門のプログラムを試す

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

          はじめに前回は、XML形式のファイルから必要なエレメントの情報のみVectorDBに格納する方法を試してみました。 https://qiita.com/ogi_kimura/items/4bbf2c987856a9435280 大量ファイルをVectorDBに取り込んだ場合、データ量が多すぎて「ぼやけてしまう」せいか、生成AIから返ってくる回答精度が悪くなることもわかってきました。 今回は、前回作成した属性を追加したVectorDBを基に、生成AIから精度の高い回答をもら

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

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

          はじめに前回、3つのVectorDB(chroma、Qdrant、FAISS)を用いて、生成AIに質問を投げてみたのですが、芳しくない結果となってしまいました。 https://qiita.com/ogi_kimura/items/dacebc6d548af229d257 そこで今回は、ファイルの情報をそのままVectorDBに登録するのではなく、ある程度選別してVectorDBへ格納したらどなるんだろうということで、検証していきたいと思います。 XMLファイルの書式に

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

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

          はじめに前回は、Chroma、FAISS、QdrantのVectorDBを用いて、chainlitを適用して生成AIから結果を出してみました。今回はもう少し質問を重ねて、その結果とスコアを確認していきたいと思います。 https://qiita.com/ogi_kimura/items/d1d263ece0e23c7d7576 では、行ってみます。 いろいろ質問してみる3つのVectorDBを用いて、生成AIに質問を4つ投げてみます。 1問目「組み合わせ処置およびその

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

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

          はじめに 前回の投稿では、`Chroma`、`Qdrant`、`FAISS`の3つでローカルのVectorDBを作成プログラムを作成しました。 https://qiita.com/ogi_kimura/items/551c93cd94404c9381c7  今回は、それらのプログラムを実行して、本当にVectorDBができているかを確認します。 それから`chainlit`を適用して、生成AIに特許情報のことを確認してみたいと思います。 3つの中の精度の違いなどを比較検証

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

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

          はじめに 前回までの投稿(※)で、VectorDBに「Chroma」を適用して大量ファイルを読み込ませて、「chainlit」で質問を受ける画面を立ち上げるようにしたのですが、ファイル数が多くなるにつれて、求めている回答が得られないという事象が発生しました。 「チャンクサイズ」や「emmbeddingモデル」にも左右されると思うのですが、あまりお金をかけたくないのでvectorDBで精度の違いを確認してみることにして、最適なものを利用することにしました。 https://q

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

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

          はじめに前回作成した「大量ファイルをロードするVectorDB」を基に、今回は『LangChat完全入門』(田村悠 著)のプログラムを参考にして、生成AI(OpenAI)から回答をもらう仕組みを作ってみました。その実際の流れを文章にしてみました。 Webブラウザ表示については、「chainlit」という直感的にコーディングできるライブラリを用いてみることにしました。 ソースコードの利用『LangChat完全入門』(田村悠 著)の「03_retrieval」の「chat_2.

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

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

          ループを回してデータベースに情報を格納約2週間かけて、一通り『LangChain完全入門』のサンプルプログラムをコーディングして、動作させることができました。ただ、「chainlit」については「pip install chainlit」でインストールすると、実行時にエラーが出てしまいました。そのため、バージョンを0.5.2まで落とし、「pip install chainlit==0.5.2」としてインストールしました。 ここまで行けたら、次は「大量ファイルをロードするVe

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

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

          私の経歴現在、私は某ユーザ企業の情報システム部門に所属しています。いわゆる「情シス」です。 以前はソフトウェア会社に勤務をしてプログラミングやプロジェクト・リーダーなどをやっていましたが、ソフトウェア開発界隈では「バリュー」(ここでは難易度やお客様が喜んでくれる度合でしょうか)ではなく「人月」(ここではプログラムステップ数若しくは工数)での評価をしていることに漠然と不安を感ていました。 それは、私がそれほどプログラミングをできるわけでもなく、また歳もとってきており、ソフトウ

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