ソフトウェア開発者向けの LangChain の簡単なガイド
ジャナキラムMSV著
インフォワールド |
あなたが大規模な言語モデルに関する最新の話題に遅れないよう努力しているソフトウェア開発者であれば、私と同じように圧倒されたり混乱したりするかもしれません。 新しいオープンソース モデルのリリースや、商用モデル プロバイダーによる重要な新機能の発表を毎日のように目にしています。
LLM は急速に最新のソフトウェア スタックに不可欠な部分になりつつあります。 ただし、OpenAI などのプロバイダーが提供するモデル API を利用する場合でも、オープン ソース モデルをアプリに埋め込む場合でも、LLM を利用したアプリケーションの構築には、プロンプトを送信して応答を待つだけでは済みません。 パラメーターの微調整からプロンプトの強化、応答の調整まで、考慮すべき要素は数多くあります。
LLM はステートレスです。つまり、会話内の以前のメッセージを覚えていません。 履歴を維持し、コンテキストを LLM に供給するのは開発者の責任です。 コンテキストを新しい会話に戻すには、これらの会話を永続データベースに保存する必要がある場合があります。 したがって、短期および長期メモリを LLM に追加することは、開発者の重要な責任の 1 つです。
もう 1 つの課題は、LLM には万能のルールがないことです。 感情分析、分類、質問応答、要約など、さまざまなシナリオに特化した複数のモデルを使用する必要がある場合があります。 複数の LLM を扱うのは複雑で、かなりの配管工事が必要です。
LangChain は、LLM とアプリケーションの統合を簡素化するために設計された SDK です。 これにより、上で説明した課題のほとんどが解決されます。 LangChain は ODBC または JDBC ドライバーに似ており、標準の SQL ステートメントに集中できるようにすることで基礎となるデータベースを抽象化します。 LangChain は、シンプルで統合された API を公開することで、基礎となる LLM の実装の詳細を抽象化します。 この API を使用すると、開発者はコードを大幅に変更することなく、モデルを簡単に交換したり交換したりできます。
LangChain は ChatGPT とほぼ同時期に登場しました。 その作成者であるハリソン・チェイスは、LLMの波が本格的に到来する直前の2022年10月下旬に最初のコミットメントを行いました。 それ以来、コミュニティは積極的に貢献しており、LangChain は LLM と対話するための最良のツールの 1 つとなっています。
LangChain は、外部ツールと統合してエコシステムを形成する強力なフレームワークです。 LLM から望ましい結果を得るために必要なフローをどのように調整するかを理解しましょう。
アプリケーションは、PDF、Web ページ、CSV、リレーショナル データベースなどの外部ソースからデータを取得して、LLM のコンテキストを構築する必要があります。 LangChain は、異種ソースにアクセスしてデータを取得できるモジュールとシームレスに統合します。
一部の外部ソースから取得したデータはベクトルに変換する必要があります。 これは、LLM に関連付けられた単語埋め込みモデルにテキストを渡すことによって行われます。 たとえば、OpenAI の GPT-3.5 モデルには、コンテキストの送信に使用する必要がある単語埋め込みモデルが関連付けられています。 LangChain は、選択された LLM に基づいて最適な埋め込みモデルを選択し、モデルのペアリングにおける推測を排除します。
生成された埋め込みはベクトル データベースに保存され、類似性検索が実行されます。 LangChain を使用すると、メモリ内の配列から Pinecone などのホストされたベクトル データベースに至るまで、さまざまなソースからベクトルを簡単に保存したり取得したりできます。
LangChain は、OpenAI、Cohere、AI21 が提供するメインストリーム LLM と、Hugging Face で利用可能なオープンソース LLM をサポートしています。 サポートされるモデルと API エンドポイントのリストは急速に増加しています。
上記のフローは、LangChain フレームワークのコアを表します。 スタックの最上位にあるアプリケーションは、Python または JavaScript SDK を通じて LangChain モジュールの 1 つと対話します。 これらのモジュールの役割を理解しましょう。