LangChain4j を導入して、LLM の Java アプリケーションへの統合を簡素化します。

LangChain4j (LangChain for Java) は、プレーン Java で RAG アプリケーションを構築するための強力なツールセットです。

Elasticsearch を実際に体験してみましょう。サンプルノートブックを詳しく調べたり、Elastic の無料クラウドトライアルを開始したり、今すぐローカルマシンで Elastic を試したりできます。

LangChain4j フレームワークは次の目標を掲げて 2023 年に作成されました。

LangChain4j の目標は、LLM を Java アプリケーションに簡単に統合することです。

LangChain4j は次の標準的な方法を提供します:

  • 与えられたコンテンツ(例えばテキスト)から埋め込み(ベクトル)を作成する
  • 埋め込みを埋め込みストアに保存する
  • 埋め込みストア内の類似ベクトルを検索する
  • LLMと議論する
  • チャットメモリを使用して、LLMとの議論の文脈を記憶する

このリストは網羅的なものではなく、LangChain4j コミュニティは常に新しい機能を実装しています。

この投稿では、フレームワークの最初の主要部分について説明します。

プロジェクトにLangChain4j OpenAIを追加する

すべての Java プロジェクトと同様に、これは依存関係の問題にすぎません。ここでは Maven を使用しますが、他の依存関係マネージャーでも同じことを実現できます。

ここで構築するプロジェクトの最初のステップとして、OpenAI を使用するので、 langchain4j-open-aiアーティファクトを追加するだけです。

残りのコードでは、 OpenAIにアカウントを登録することで取得できる独自の API キー、またはデモ目的でのみ LangChain4j プロジェクトによって提供される API キーを使用します。

これで ChatLanguageModel のインスタンスを作成できます。

そして最後に、簡単な質問をして答えを得ることができます。

与えられた答えは次のようになります:

このコードを実行する場合は、 Step1AiChatTest.javaクラスを確認してください。

langchain4jでより多くのコンテキストを提供する

langchain4jアーティファクトを追加しましょう:

これは、アシスタントを構築するために、より高度な LLM 統合を構築するのに役立つツールセットを提供します。ここでは、先ほど定義したChatLanguageModelを自動的に呼び出すchatメソッドを提供するAssistantインターフェイスを作成します。

LangChain4j AiServicesクラスにインスタンスを構築するよう依頼するだけです。

次に、 chat(String)メソッドを呼び出します。

これは以前と同じ動作になります。では、なぜコードを変更したのでしょうか?まず第一に、よりエレガントですが、それ以上に、シンプルな注釈を使用して LLM にいくつかの指示を与えることができるようになりました。

これにより、次のようになります:

このコードを実行する場合は、 Step2AssistantTest.javaクラスを確認してください。

別のLLMへの切り替え:langchain4j-ollama

素晴らしいOllamaプロジェクトを利用できます。LLM を自分のマシン上でローカルに実行するのに役立ちます。

langchain4j-ollamaアーティファクトを追加しましょう:

テストを使用してサンプル コードを実行しているので、プロジェクトにTestcontainers を追加しましょう。

Docker コンテナを起動/停止できるようになりました。

先ほど使用したOpenAiChatModelではなく、 modelオブジェクトをOllamaChatModelに変更するだけです。

モデルを含むイメージを取得するのに多少時間がかかる場合がありますが、しばらくすると答えが得られることに注意してください。

メモリがあればさらに良くなる

複数の質問をした場合、デフォルトではシステムは以前の質問と回答を記憶しません。最初の質問の後に「彼はいつ生まれたのですか?」と尋ねると、私たちのアプリケーションは次のように答えます:

それはナンセンスだ。代わりに、チャットメモリを使用する必要があります。

同じ質問を実行すると、意味のある答えが得られます。

まとめ

次の投稿では、Elasticsearch を埋め込みストアとして使用して、プライベート データセットに質問する方法を説明します。これにより、アプリケーション検索を次のレベルに引き上げる方法が得られます。

よくあるご質問

LangChain4jとは何ですか?

LangChain4j (LangChain for Java) は、プレーン Java で RAG アプリケーションを構築するための強力なツールセットです。

関連記事

最先端の検索体験を構築する準備はできましたか?

十分に高度な検索は 1 人の努力だけでは実現できません。Elasticsearch は、データ サイエンティスト、ML オペレーター、エンジニアなど、あなたと同じように検索に情熱を傾ける多くの人々によって支えられています。ぜひつながり、協力して、希望する結果が得られる魔法の検索エクスペリエンスを構築しましょう。

はじめましょう