Ollama + SingleStore – LangChain = :-(

前回の記事では、OllamaをLangChainとSingleStoreと一緒に使用しました。LangChainは、OllamaをSingleStoreと統合するための効率的で簡潔なソリューションを提供しました。しかし、LangChainを取り除いた場合はどうでしょうか?この記事では、LangChainに依存せずにOllamaをSingleStoreと使用する例を示します。前回の記事で説明した同じ結果を達成することができますが、コードの量が増え、LangChainが通常に処理するパイプラインをより多く管理する必要があることがわかります。

この記事で使用したノートブックファイルは、GitHubで利用できます。

はじめに

前回の記事の内容を踏まえて、以下のセクションに記載された手順に従ってテスト環境を設定します:

  • はじめに
    • 仮想マシンまたはvenvを使用します。
  • SingleStoreDB Cloudアカウントを作成
    • Ollama Demo Groupをワークスペースグループ名として、ollama-demoをワークスペース名として使用します。パスワードとホスト名をメモしておきます。一時的にOllama Demo Group > Firewallでアクセスをどこからでも許可するようにファイアウォールを設定します。
  • Database を作成します。
  • CREATE DATABASE IF NOT EXISTS ollama_demo;
  • Jupyterをインストールします。
    • pip install notebook
  • Ollamaをインストールします。
    • curl -fsSL https://ollama.com/install.sh | sh
  • 環境変数
    • export SINGLESTOREDB_URL="admin:<password>@<host>:3306/ollama_demo"
      環境の値に応じて<password><host>を置き換えてください。
  • Jupyterを起動します。
    • jupyter notebook

ノートブックを埋めてください。

まず、いくつかのパッケージが必要です。

Shell

 

次に、いくつかのライブラリをインポートします。

Python

 

all-minilmを使用して嵌入を作成します(執筆時点で45MBです)。

Python

 

Plain Text

 

私たちのLLMには、llama2(執筆時点で3.8GB)を使用します:

Python

 

出力例:

Plain Text

 

次に、Ollamaウェブサイトからの例文を使用します:

Python

 

埋め込みをall-minilmに設定し、各ドキュメントを反復してPandas DataFrameのコンテンツを構築します。加えて、埋め込みを32ビット形式に変換し、これはSingleStoreのVECTORデータ型のデフォルトです。最後に、Pandas DataFrameの最初のドキュメントの埋め込み次元数を決定します。

次に、SingleStoreインスタンスに接続を作成します:

Python

 

今から、前に決定した次元を使用してvectorカラムを持つテーブルを作成します:

Python

 

今度は、Pandas DataFrameをテーブルに書き込みます:

Python

 

出力例:

Plain Text

 

次に、前回の記事で作成したものと一致するインデックスを作成します:

Python

 

次に、以下のように質問をします:

Python

 

プロンプトを埋め込みに変換し、埋め込みが32ビット形式に変換されていることを確認し、SQLクエリを実行します。このクエリでは、ユークリッド距離に使用するために中置記法<->を使用します。

出力例:

Plain Text

 

次に、以下のようにLLMを使用します:

Python

 

出力例:

Plain Text

 

まとめ

この記事では、前回の記事で取り扱ったステップを再現し、類似な結果を達成しました。しかし、私たちはLangChainが取り扱うことになる複数のステップを管理し、一連のSQL文を書く必要がありました。また、長期的なコードベースの維持に関して、LangChainソリューションと比較してもっと時間とコストがかかるかもしれません。

データベースアクセスのためにカスタムコードを書く代わりにLangChainを使用することは、効率性、スケーラビリティ、信頼性など、いくつかの利点を提供します。

LangChainはデータベースインタラクションのための事前構築されたモジュールのライブラリを提供しており、開発時間と労力を削減します。開発者はこれらのモジュールを使用して、ゼロから始めることなく様々なデータベース操作を迅速に実装できます。

LangChainはデータベース管理に関与する多くの複雑さを抽象化しており、開発者は低レベルの実装詳細ではなく、高レベルのタスクに集中できます。これにより、データベース駆動型アプリケーションの生産性と市場投入までの時間が向上します。

LangChainには大規模で活発な、成長を続ける開発者コミュニティがあり、GitHubで利用可能であり、広範なドキュメントと例が提供されています。

要約すると、LangChainは開発者に対して強力で効率的で信頼性の高いプラットフォームを提供し、カスタムコードで車輪を再発明するのではなく、より高い抽象化を使用してビジネス問題に集中できるようにします。この記事の例と前回の記事で使用した例を比較すると、その利点が明確に見られます。

Source:
https://dzone.com/articles/ollama-plus-singlestore-minus-langchain