LangChain で埋め込みを使用する方法

Langchain De Maime Yumiwo Shi Yongsuru Fang Fa



埋め込みはテキスト文字列の関連性のインデックスであり、浮動小数点整数のベクトル (リスト) で表現されます。 2 つのベクトル間の距離は、それらがどの程度緊密に接続されているかを示す尺度として機能します。距離が小さいほど、関連性は近くなります。 LangChain Embedding クラスは、OpenAI、HuggingFace などの埋め込みサービスのインターフェイスとして機能することを目的としています。

embed_query() と embed_documents() の 2 つのメソッドが基本クラスによって提供されます。これらの 1 つ目は 1 つのドキュメントを操作しますが、もう 1 つは多数のドキュメントを操作できます。

この記事では、OpenAI テキスト埋め込みを使用した LangChain への埋め込みの実践的なデモンストレーションについて説明します。







例: OpenAI テキスト埋め込みを使用した単一の入力テキストの取得

最初の図では、単一のテキスト文字列を入力し、それに埋め込まれた OpenAI テキストを取得します。プログラムは、必要なライブラリをインストールすることから始まります。



プロジェクトにインストールする必要がある最初のライブラリは LangChain です。 Python の標準ライブラリは付属していないため、別途インストールする必要があります。 langchain は PyPi 上で利用できるので、ターミナル上で pip コマンドを使用して簡単にインストールできます。したがって、次のコマンドを実行して LangChain ライブラリをインストールします。



$ pip インストール ラングチェーン

ライブラリは要件が満たされるとすぐにインストールされます。





OpenAI モデルにアクセスできるように、OpenAI ライブラリをプロジェクトにインストールする必要もあります。このライブラリは、pip コマンドを記述することで起動できます。

$ pip インストール openai

これで、必要なライブラリが両方ともプロジェクト ファイルにインストールされました。必要なモジュールをインポートする必要があります。



から ラングチェーン。 埋め込み オープンナイ 輸入 OpenAI埋め込み

輸入 あなた

あなた [ 「OPENAI_API_KEY」 ] = 「sk-YOUR_API_KEY」

OpenAI 埋め込みを取得するには、「langchain.embeddings.openai」パッケージから OpenAIEmbeddings クラスをインポートする必要があります。次に、API キーを環境変数として設定します。さまざまな OpenAI モデルにアクセスするには、秘密の API キーが必要です。このキーは OpenAI プラットフォームから生成できます。サインアップして、プロフィールの「秘密キーを表示」セクションから秘密キーを取得するだけです。このキーは、特定のクライアントのさまざまなプロジェクトにわたって使用できます。

環境変数は、API キーを関数にハードコーディングするのではなく、特定の環境の API キーを保存するために使用されます。したがって、API キーを環境変数として設定するには、「os」モジュールをインポートする必要があります。 os.environ() メソッドは、API キーを環境変数として設定するために使用されます。名前と値が含まれています。設定した名前は「OPENAI_API_KEY」、秘密鍵は「value」に設定します。

モデル = OpenAI埋め込み ( )

入力テキスト = 「これはデモンストレーション用です。」

結果 = モデル。 埋め込みクエリ ( 入力テキスト )

印刷する ( 結果 )

印刷する ( それだけ ( 結果 ) )

OpenAI 埋め込みラッパーとのインターフェースはすでに完了しています。その後、OpenAIEmbedding クラスのコンストラクターを呼び出します。 OpenAI はさまざまな埋め込みモデルを提供しますが、料金を支払う必要があります。ここでは、OpenAI のデフォルトの埋め込みモデル、つまり無料の text-embedding-ada-002 を使用します。パラメータとしてモデル名を指定しない場合は、デフォルトのモデルが使用されます。

次に、埋め込みを取得する必要があるテキストを指定します。テキストは「これはデモンストレーション用です」と指定されています。それを input_text 変数に保存します。その後、指定されたテキストを埋め込むための embed_query() メソッドが、使用されるモデルと、パラメーターとして提供される埋め込みを取得するためのテキスト文字列を持つ input_text を使用して呼び出されます。取得された埋め込みは結果オブジェクトに割り当てられます。

最後に、結果を表示するために、Python の print() メソッドを使用します。表示したい値を格納するオブジェクトを print() メソッドに渡すだけです。したがって、この関数を 2 回呼び出します。最初に浮動小数点数のリストを表示し、次に len() メソッドを使用してこれらの値の長さを出力します。

浮動値のリストは、これらの値の長さとともに次のスナップショットで確認できます。

例: OpenAI テキスト埋め込みを使用した複数の入力テキスト/ドキュメントの取得

単一の入力テキストの埋め込みを取得する以外に、複数の入力文字列の埋め込みを取得することもできます。これをこの図に実装します。

前の図でライブラリをすでにインストールしました。ここでインストールする必要があるもう 1 つのライブラリは、Python の tiktoken ライブラリです。ターミナルにコマンドを記述してインストールします。

$ pip インストール tiktoken

tiktoken パッケージは、バイト ペア エンコーディング トークナイザーです。 OpenAI モデルで使用され、テキストをトークンに分割します。これは、指定された OpenAI モデルでは提供された文字列が少し長くなる場合があるために使用されます。したがって、テキストを分割してトークンにエンコードします。さて、メインプロジェクトに取り組みましょう。

から ラングチェーン。 埋め込み オープンナイ 輸入 OpenAI埋め込み

モデル = OpenAI埋め込み ( openai_api_key = 「sk-YOUR_API_KEY」

文字列 = ['
これ ために デモンストレーション。 '、' これ また ために デモンストレーション。 '、' これ 別のデモ '、' これです 最後 ']

結果 = model.embed_documents(文字列)

印刷(結果)

print(len(結果))

OpenAIEmbeddings クラスは、「langchain.embeddings.openai」パッケージからインポートされます。前の例では、API キーを環境変数として設定しました。ただし、この場合はコンストラクターに直接渡します。したがって、ここで「os」モジュールをインポートする必要はありません。

OpenAIEmbeddings である OpenAI モデルを呼び出した後、秘密 API キーをそれに渡します。次の行では文字列を指定します。ここでは、オブジェクト文字列に 4 つのテキスト文字列を格納します。これらの文字列は、「これはデモ用です」、「この文字列もデモ用です」、「これは別のデモ文字列です」、「これは最後の文字列です」です。

それぞれをカンマで区切るだけで、複数の文字列を指定できます。前のインスタンスでは、embed_text() メソッドが呼び出されていますが、単一のテキスト文字列に対してのみ機能するため、ここでは使用できません。複数の文字列を埋め込むために使用できるメソッドは、embed_document() です。そこで、指定したOpenAIモデルと文字列を引数として呼び出します。出力は結果オブジェクトに保持されます。最後に、出力を表示するために、オブジェクトの結果をパラメータとして Python print() メソッドが使用されます。また、これらの浮動値の長さも確認したいと考えています。したがって、print() メソッド内で len() メソッドを呼び出します。

取得された出力は次の図に示されています。

結論

この投稿では、LangChain への埋め込みの概念について説明しました。埋め込みとは何か、そしてそれがどのように機能するかを学びました。テキスト文字列を埋め込む実際の実装をここに示します。イラストを2点制作させていただきました。最初の例では単一のテキスト文字列の埋め込みを取得することに取り組み、2 番目の例では OpenAI 埋め込みモデルを使用して複数の入力文字列の埋め込みを取得する方法を理解しました。