はじめに
ようこそ!
LangChain4jの目標は、LLMをJavaアプリケーションに統合するプロセスを簡素化することです。
具体的には以下の方法で実現します:
- 統一API: LLMプロバイダー(OpenAIやGoogle Vertex AIなど)や埋め込み(ベクトル)ストア(PineconeやMilvusなど)は 独自APIを使用しています。LangChain4jは統一APIを提供し、各特定APIを学習・実装する必要性を排除します。 異なるLLMや埋め込みストアを試すには、コードを書き直すことなく、それらの間で簡単に切り替えることができます。 LangChain4jは現在、15以上の人気LLMプロバイダーと 20以上の埋め込みストアをサポートしています。
- 包括的なツールキット: 2023年初頭以来、コミュニティは多数のLLM駆動アプリケーションを構築し、 共通の抽象化、パターン、テクニックを特定してき ました。LangChain4jはこれらを即座に使用できるパッケージに洗練しました。 私たちのツールキットには、低レベルのプロンプトテンプレート、チャットメモリ管理、関数呼び出しから、 エージェントやRAGなどの高レベルパターンまでのツールが含まれています。 各抽象化に対して、インターフェースと一般的なテクニックに基づく複数の即座に使用可能な実装を提供します。 チャットボットを構築する場合でも、データ取り込みから検索までの完全なパイプラインを含むRAGを開発する場合でも、 LangChain4jは多くの選択肢を提供します。
- 豊富な例: これらの例は、様々なLLM駆動アプリケーションの作成を 始める方法を示し、インスピレーションを提供し、すぐに構築を開始できるようにします。
LangChain4jは2023年初頭のChatGPTブーム時に開発が始まりました。 多数のPythonやJavaScriptのLLMライブラリやフレームワークに比べて、Javaの対応物が不足していることに気づき、 私たちはこの問題を解決する必要がありました! 名前に「LangChain」が含まれていますが、このプロジェクトはLangChain、Haystack、 LlamaIndex、より広いコミュニティからのアイデアと概念の融合に、私たち自身のイノベーションを加えたものです。
私たちはコミュニティの発展を積極的に監視し、新しいテクニックや統合を迅速に取り入れることを目指し、 最新の状態を維持できるようにしています。 このライブラリは積極的に開発中です。一部の機能はまだ開発中ですが、 コア機能はすでに整っており、今すぐLLM駆動アプリケーションの構築を始めることができます!
より簡単に統合できるよう、LangChain4jには Quarkus、Spring Boot、Helidonとの統合も含まれています。
LangChain4jの機能
- 15以上のLLMプロバイダーとの統合
- 20以上の埋め込み(ベクトル)ストアとの統合
- 15以上の埋め込みモデルとの統合
- 5つの画像生成モデルとの統合
- 2つのスコアリング(リランキング)モデルとの統合
- モデレーションモデル(OpenAI)との統合
- 入力としてのテキストと画像のサポート(マルチモーダル)
- AIサービス(高度なLLM API)
- プロンプトテンプレート
- 永続的およびメモリ内のチャットメモリアルゴリズムの実装:メッセージウィンドウとトークンウィンドウ
- LLMからのレスポンスストリーミング
- 一般的なJava型とカスタムPOJOのための出力パーサー
- ツール(関数呼び出し)
- 動的ツール(動的に生成されたLLMコードの実行)
- RAG(検索拡張生成):
- 取り込み:
- 複数のソース(ファイ ルシステム、URL、GitHub、Azure Blob Storage、Amazon S3など)から様々な種類のドキュメント(TXT、PDF、DOC、PPT、XLSなど)をインポート
- 様々な分割アルゴリズムを使用してドキュメントをより小さな段落に分割
- ドキュメントと段落の後処理
- 埋め込みモデルを使用して段落を埋め込み
- 埋め込み(ベクトル)ストアに埋め込みを保存
- 検索(シンプルおよび高度):
- クエリ変換(拡張、圧縮)
- クエリルーティング
- ベクトルストアおよび/または任意のカスタムソースからの検索
- リランキング
- 逆ランク融合
- RAGプロセスの各ステップのカスタマイズ
- 取り込み:
- テキスト分類
- トークン化とトークン数推定のためのツール
- Kotlin拡張:Kotlinのコルーチン機能を使用した非同期ノンブロッキングチャット対話処理。
2つの抽象化レベル
LangChain4jは2つの抽象化レベルで動作します:
- 低レベル。このレベルでは、最大の自由度と
ChatModel、
UserMessage
、AiMessage
、EmbeddingStore
、Embedding
などの すべての低レベルコンポーネントへのアクセス権を持ちます。 これらはLLM駆動アプリケーションの「プリミティブ」です。 それらをどのように組み合わせるかを完全に制御できますが、より多くの接着コードを書く必要があります。