LangChainによるRAG VS OpenAIによるAssistants File Search


# はじめに

OpenAIのAssistants File Searchについて調査しました。
また、比較対象として今回はLangChainを用いて作成したRAGを用いています。

今回の調査目的は

「LangChainによるRAG」と「OpenAIによるAssistants File Search」どちらの方がファイルを扱うのに適しているのか

です。

評価項目として以下の点を挙げています。

- アップロードできるファイルタイプ
- 回答精度
- ファイルの読み取り精度
- 回答速度
- 費用
- 将来性


では、はじめていきましょう〜


# 結論

OpenAIによるAssistants File Searchの勝利です🎉



- 使えるファイルタイプ（引き分け）
    - 単純な数で言えばLangChainによるRAGが圧倒的に多いが、よく使いそうなものは両方とも備わっている。ただし、LangChainの方がシステム構築するのが大変そう。
- 回答精度（Assistants File Searchの勝ちよりの引き分け）
    - 一見LangChainによるRAGの方が低く見えるが、精度というよりかはファイルの読み取り精度（pdfとかをどれだけ正確に読み取れるか）の問題な気がする
- ファイルの読み取り精度（Assistants File Searchの勝ち）
    - LangChainによるRAGのPyPDFLoader, TextLoaderはAssistants File Searchに比べると劣る。
- 回答速度（LangChainによるRAGの勝ち）
    - Assistants File Searchがたまにめちゃくちゃ遅い（複数の箇所参照する際に遅いことが多い）。５箇所ぐらい参照すると出力終わるまでに１分ぐらいかかる。
- 費用（LangChainによるRAGの方が安い（ユースケースによる））
    - 回答する、という点においてはほぼ同じだが、「ベクターストレージの使用に対して 1 日あたり 0.10 ドル/GB が課金」がちょっとネック。そこまでめちゃくちゃ高い、というわけではないのだが、使ってないやつを消さないとちりつもで高くなっちゃいそう。
- 将来性（file serch apiの勝ち）
    - 「ドキュメント内の画像（チャート、グラフ、表などの画像を含む）の解析をサポートします。」、「要約のサポートが強化されました。現在のツールは検索クエリ向けに最適化されています。」が熱い。これは完全な推測だが、LangChainよりはOpenAIの方が伸び代がありそう。


# 詳細

これからそれぞれの評価項目について詳細に見ていきます。

## 使えるファイルタイプ

Assistants File Search

![スクリーンショット 2024-12-10 16.06.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941033/99f4346e-d1d8-b3b9-c925-ece2e490f2a7.png)

https://platform.openai.com/docs/assistants/tools/file-search#supported-files

LangChainによるRAG
めちゃくちゃある。
こちらを参照してください。

https://python.langchain.com/docs/integrations/document_loaders/


## 回答精度

https://jp.sharp/catalog/viewer/kitchen/%E5%86%B7%E8%94%B5%E5%BA%AB%E3%83%BB%E5%86%B7%E5%87%8D%E5%BA%AB%20%E7%B7%8F%E5%90%88%EF%BC%882024-4%E5%8F%B7%EF%BC%89/?detailFlg=0&pNo=1

こちらをインデックス化して実装したもので検証しました。

#### 大雑把な質問（引き分け）

質問：「要約して」

LangChainによるRAG

:::note info
製品の急冷機能は、約X分で急冷が可能で、終了時にはブザーでお知らせします。また、あら熱とりや食材の新鮮保存に便利です。大容量冷凍室はメガフリーザー機能を持ち、鮮度を長持ちさせるための整理収納サポートが充実しており、食品の積み重ねを防ぎます。各エリアに分けて収納ができ、霜付きを抑え、素早い冷却が可能です。
:::

OpenAIによるAssistants File Search

:::note info
SHARP冷蔵庫のカタログには、新しい冷蔵庫モデルの主な特徴と機能が詳述されています。このカタログでは、以下のような内容が強調されています：

省エネ機能:

AIを活用した省エネ機能により、最大30％の節電が可能です[1]。
自動製氷一時停止モードにすることで、電力消費を抑えることができます[2]。
新鮮さの保持:

低温制御技術を使用して、野菜や食材の鮮度を長期間保つことができます[3]。
「低温作りおきルーム」や「新鮮冷凍」モードで食品の品質を守ります[4]。
スマート機能:

無線LAN接続により、スマートフォンアプリ「COCORO HOME」と連携し、冷蔵庫の状態を確認したり、伝言機能を利用できます[5]。
環境への配慮:

ノンフロン冷媒とノンフロン断熱発泡ガスを採用し、環境に優しい設計となっています[6]。
これらの機能を通じて、ユーザーの生活をより便利にし、環境にも配慮した製品を提供しています。
:::


#### 特定の欲しい情報を受け取りに行く質問（引き分け）

質問：「プラズマクラスターとは」

LangChainによるRAG

:::note info
プラズマクラスターとは、浮遊菌を除菌しながら鮮度を守る技術であり、冷蔵庫内の清潔さを保つためのイオン発生技術です。浮遊菌などの表面の細胞膜のタンパク質を分解してその作用を抑制します。
:::

OpenAIによるAssistants File Search

:::note info
プラズマクラスターとは、シャープが開発した技術で、空中に浮遊する菌の細胞表面のタンパク質を分解し、除菌することで冷蔵庫内を清潔に保つ機能です。この技術は、細菌の浮遊や付着の除去に効果があります
:::

#### 考えさせる質問（OpenAIによるAssistants File Searchの勝利（諸説あり））
質問：「２Lペットボトルを７本以上収納したい、できる型番全て教えて」

LangChainによるRAG

:::note info
SJ-SF50M/X500M
:::

OpenAIによるAssistants File Search

:::note info
2Lペットボトルを7本以上収納できる冷蔵庫の型番は、以下の通りです：

SJ-MF55M[1]
SJ-MF51M[2]
:::

これについてはSJ-SF50M/X500Mは間違いなので、Assistants File Searchの勝利です。ただし、これは回答精度が高いのか、ファイルの読み取り精度が高いのかがわかりません。。。



## ファイルの読み取り精度

使ったファイル

https://www.ntt-west.co.jp/kiki/download/flets/v100/description.pdf

https://www.occto.or.jp/choutatsu/2021/files/210714_saiene_youken.pdf

https://bookplt.com/dl/merosu.pdf

まず、そもそもファイルの読み取り精度なんてどうやって測ったの？っていうところですが、これは質問をしたら答えが返ってきて、その答えが妥当かどうか、というところから計測しました。え、それって回答精度じゃないの？って思う方もいらっしゃると思いますが、おっしゃる通りです。回答精度、という点も影響していると思います。ただ、それは違うだろ、みたいな回答が出てきたのでそちらを例に共有します。

NTTのファイルはWeb Caster V100というものについてなのですが、こちらについて質問したところ


LangChainによるRAG

:::note info
質問の内容が見当たらないため、回答できません。
:::

OpenAIによるAssistants File Search

:::note info
Web Caster V100は、内蔵されたルーターとIP電話機能を持つ製品です。このデバイスはADSLモデムまたは回線終端装置に接続することで、複数のパソコンでインターネット接続が可能になるだけでなく、IP電話網を介してIP電話を利用することもできます[1]。

具体的な特徴として、RFC3261 SIP準拠の呼制御プロトコルに基づいており、途切れない自然な通話を実現するゆらぎ吸収機能があり、ネットワークの遅延状況に応じて遅延を回復しつつ自然な会話を維持できます。また、NTTネットワークサービスに対応し、キャッチホンやナンバー・ディスプレイ、Lモードなどの機能と互換性があります[2]。

この機器はIP電話を利用して、電話やファクスの通信が可能で、ファクスはG.711インバンドで処理されます。また、フレッツ・ADSLとBフレッツ（光ファイバー）に対応し、PPPoEクライアント機能を有しています[3]``[4]。複数台のパソコンを同時にインターネットに接続でき、UPnP、Unnumberedなどの各種ルータ機能を搭載しています[5]。

[1][2][3][4][5]
:::

ということです。おそらくLangChainによるRAGのPDFLoaderは正しくこのpdfを読み取れていないのだと思われます。



次に走れメロスについて主人公は誰か、という質問をしました。

LangChainによるRAG
（この回答形式になっているのはプロンプトが影響している可能性があります。しかし質問の趣旨が変わっていることには影響がないはずです。）

:::note info
質問: メロスはなぜ走り続けているのですか？

メロスは友人セリヌンティウスを救うために走り続けています。
:::

OpenAIによるAssistants File Search

:::note info
メロスです
:::

LangChainによるRAGの回答はファイルの読み取り精度による問題なのかと言われれば議論の余地が高そうですが、私はその可能性が高いと考えました、理由はそれ以外に理由が見つからないからです。


## 回答速度

こちらについては基本は２つともほぼ同じなのですがファイル内で複数参照する箇所がある場合、Assistants File Searchは非常に遅くなります、１〜２分かかることもあります。
プロンプトで調整したらなんとかなりそうな気もしますが、、、、、


## 費用

回答する、という点においてはほぼ同じだが、「ベクターストレージの使用に対して 1 日あたり 0.10 ドル/GB が課金」がちょっとネック。普通に使う分にはほとんど一緒。

参考

https://platform.openai.com/docs/assistants/tools/file-search#managing-costs-with-expiration-policies


## 将来性

この要素を追加する予定は最初はなかったのですが、ドキュメントを読んでいるうちにへーーって思うことがあったので追加することにしました。

Assistants File Searchには以下のような記述がありました。

> 今後数か月以内にサポートを追加する予定の既知の制限がいくつかあります。
ドキュメント内の画像（チャート、グラフ、表などの画像を含む）の解析をサポートします。

熱いですね！！


参考

https://platform.openai.com/docs/assistants/tools/file-search#managing-costs-with-expiration-policies:~:text=minimum%20ranking%20score-,Known%20Limitations,-We%20have%20a

LangChainによるRAGも探してみましたが、このような記述はなかったです（検索能力不足かもですが、、）


# まとめ

今回はLangChainによるRAG VS OpenAIによるAssistants File Searchについて調査しました！
Assistants File Searchに興味がある人にとって少しでも助けになればと思ってます！