【LangChainドキュメンテーション・JS版】概要とインストール

この記事はLangChainのJavaScriptバージョンのドキュメンテーションを翻訳したものです。 LangChain は、言語モデルを活用したアプリケーションを開発するためのフレームワークです。私たちは、最も強力で差別化されたアプリケーションは、単に API 経由で言語モデルを呼び出すだけでなく、以下の特徴を備えると考えています。 LangChain フレームワークは、上記の原則を考慮して設計されています。 はじめに 以下のガイドをチェックして、LangChain を使用して言語モデルアプリケーションを作成する手順を確認してください。 コンポーネント LangChain は、いくつかの主要なモジュールのサポートを提供しています。各モジュールには、いくつかの例と概念に慣れるためのリンクがあります。各例は、使用されているモジュールの API ドキュメントにもリンクしています。 これらのモジュールは以下のとおりです(複雑さの順): API リファレンス LangChain のすべてのモジュールの API リファレンス、エクスポートされたクラスと関数の詳細なドキュメントは、以下からご覧いただけます。 API Reference 本番環境 プロトタイピングから本番環境への移行にあたり、以下のリソースを開発中です。 追加のリソース アプリケーションの開発に役立つと思われる追加のリソースのコレクションです。 サポートされている環境 LangChain は TypeScript で書かれており、次の環境で使用することができます。 クイックスタート もしも Node.js で LangChain を素早く始めたい場合は、このリポジトリをクローンして README の手順に従って依存関係が設定されたボイラープレートプロジェクトを作成してください。 もしくは、ご自身でセットアップを行いたい場合や他の環境で LangChain を実行したい場合は、以下の手順をご覧ください。 インストール LangChain をインストールするには、以下のコマンドを使用します。 または、以下のコマンドを使用してインストールすることもできます。 TypeScript LangChain は TypeScript で書かれており、すべての公開APIに対して型定義が提供されています。 ライブラリの読み込み ESM … Read more

【Node.js】ChatGPTに自分のデータに対して質問させる

前回の記事ではPythonで同じことを行いました。今回はNode.jsを使ってChatGPTに自分で準備したテキストファイルを読ませてそれに対して質問させるアプリのデモを作成します。 目的 ユーザーがChatGPTに質問をするとOpenAIが持っているデータベースを参照して回答してくれます。しかしこのデータは2021年までしか保存されていないため、それ以降のデータは質問しても回答してくれません。しかし自分で準備しておいたデータ(大量のファイルも可能)を読ませておくことで自分の好きな著者と会話をしたり、最新のデータから必要なデータを検索させるシステムを作成することが可能になります。 プログラムの完成イメージ このように通常ChatGPTが知らないデータでも事前に教えておくことでチャット形式でデータを参照することができるようになります。 使用するテクノロジー 今回はOpenAIのAPIキー(有料、カード登録が必要)が必要になります。先に下記の記事を読んで各フレームワークの理解とキーの取得をしておきましょう。 リポジトリのクローン ではこちらのGitHubのリポからコードをクローンしましょう。 ファイルの実行は下記のコマンドでできます。(APIキーを登録しないとエラーになります。) 下準備 テキストファイルの準備 では、ChatGPTに読み込ませたいファイルを準備しましょう。ファイル名はconst txtFilenameに格納しておきます。 APIキーを環境変数に登録 OpenAIのAPIキーを.envファイルに保存します。 コードの説明 ではindex.jsを見てください。 このコードは、Node.jsを使用してOpenAIのRetrieval-based Question Answering(質問応答)モデルを実装するものです。以下に、コードの主な機能を説明します。 このコードは、OpenAIのモデルとベクトルストアを使用してユーザーの質問に応答するシンプルな質問応答システムを作成しています。ユーザーが質問を入力すると、モデルが応答を生成し、それがコンソールに表示されます。 OpenAIモジュール OpenAIモジュールは、OpenAIの自然言語処理モデルを利用するためのモジュールです。このモジュールは、OpenAIのAPIとの通信やテキスト生成タスクの実行を簡素化するための機能を提供します。 OpenAIモジュールを使用すると、以下のようなことが可能です: OpenAIモジュールは、様々な自然言語処理タスクに対して利用されます。具体的には、文章生成、文章の意味理解、文章の分類、質問応答などのタスクに使用されます。 コードの例では、OpenAIモジュールが使用されています。OpenAIクラスをインスタンス化し、そのインスタンスを利用してOpenAIのモデルを初期化しています。このモジュールを使用することで、OpenAIのモデルを簡単に利用できます。 RetrievalQAChainモジュールとは RetrievalQAChainは、質問応答(Question Answering)タスクを処理するためのモジュールです。このモジュールは、与えられた質問に対して適切な回答を見つけるために使用されます。 具体的には、RetrievalQAChainは以下のような機能を提供します: RetrievalQAChainは、ベクトルストアを使用して質問と回答の類似性を計算し、最も適切な回答を見つけるための機能を提供します。このモジュールは、大規模なテキストデータセットから効率的に質問に対する回答を見つけることができます。 コードの例では、RetrievalQAChainモジュールがOpenAIのモデルとベクトルストアリトリーバーを使用して初期化され、質問が与えられると回答が取得されます。質問と回答の検索は、ベクトルストアの中から最も類似した文書を見つけることによって行われます。 HNSWLibモジュール HNSWLibモジュールは、高次元のベクトルデータの効率的なインデックス構築と検索を可能にするためのモジュールです。HNSWは、ハイブリッドネットワークスワップ(Hierarchical Navigable Small World)と呼ばれるアルゴリズムを使用して、高次元ベクトルの類似性検索を高速に実行します。 HNSWLibモジュールは、LangChainという自然言語処理ライブラリの一部として提供されています。このモジュールは、ベクトルストアの作成と操作を行うためのインターフェースを提供します。 具体的には、HNSWLibモジュールを使用すると、以下のようなことが可能です: HNSWLibは、高次元ベクトルの類似性検索において効率的でスケーラブルな解決策を提供するため、情報検索、機械学習、自然言語処理などの分野で広く利用されています。上記のコード例では、HNSWLibモジュールが使用されており、ベクトルストアのロードや作成に利用されています。 OpenAIEmbeddingsモジュールとは OpenAIEmbeddingsモジュールは、LangChainという自然言語処理ライブラリの一部として提供されているモジュールです。このモジュールは、テキストデータや文章をベクトル表現に変換するための機能を提供します。 具体的には、OpenAIEmbeddingsモジュールを使用すると、以下のようなことが可能です: OpenAIEmbeddingsモジュールは、自然言語処理タスクにおいてテキストデータの表現や解析に広く活用されます。テキストデータをベクトルに変換することで、機械学習モデルの入力や比較、検索などのさまざまなタスクを実行することができます。上記のコード例では、OpenAIEmbeddingsモジュールが使用されており、ドキュメントからベクトルストアを作成する際に利用されています。 ベクトルストアファイル ベクトルストアファイル(Vector Store file)は、テキストや文書の埋め込み(ベクトル化)を保存して管理するためのファイルです。ベクトルストアは、テキストデータを高次元の数値ベクトル空間にマッピングし、各文書をベクトルとして表現します。これにより、類似性の計算や検索などの情報検索タスクを効率的に実行できます。 ベクトルストアファイルは、一般的にデータベースや検索エンジンのバックエンドとして使用されます。ファイルには、テキストデータの埋め込みベクトルや関連するメタデータが格納されます。これにより、大規模な文書コレクションを効率的に管理し、特定の質問や検索クエリに対して迅速な検索結果を提供することができます。 ベクトルストアファイルは、一度作成されると、後続の検索や質問に対して再利用できます。これにより、テキストデータの埋め込み処理を繰り返し行う必要がなくなり、処理時間やリソースの節約につながります。 コードの例では、ベクトルストアファイルを使用してテキストデータを保存し、ユーザーの質問に対して迅速に応答するために利用しています。ファイルが存在しない場合は、テキストデータを埋め込み処理してベクトルストアファイルを作成し、次回以降の検索に使用します。ファイルが存在する場合は、ベクトルストアファイルをメモリに読み込んで再利用します。 OpenAIEmbeddingsモジュールとは OpenAIEmbeddingsは、テキストデータの埋め込み(ベクトル化)を行うためのクラスです。このクラスのメソッドは、与えられたテキストデータをOpenAIの埋め込みモデルを使用してベクトルに変換します。 具体的には、OpenAIEmbeddingsクラスの主要なメソッドは次のとおりです: … Read more