# LangChain JS/TS
# はじめに
LangChainは、言語モデルによって動作するアプリケーションを開発するためのフレームワークです。LangChain JS/TS (opens new window)は、LangChain Pythonパッケージ (opens new window)とできるだけシームレスに統合するように設計されています。具体的には、プロンプト、LLM、チェーンなどのすべてのオブジェクトは、シリアライズされ、言語間で共有できるように設計されています。
# 前提条件
始める前に、langchain (opens new window)とClickHouse JS (opens new window)をインストールする必要があります。
# npm
npm install -S langchain @clickhouse/client
# yarn
yarn add langchain @clickhouse/client
# 環境のセットアップ
OpenAIの埋め込みモデルを使用するためには、OpenAI (opens new window)でAPIキーを取得する必要があります。また、MyScaleコンソールのクラスターホスト、ユーザー名、パスワード情報を取得する必要もあります(接続の詳細)。
次のコマンドを実行して環境変数を設定します。
export MYSCALE_HOST="YOUR_CLUSTER_HOST"
export MYSCALE_PORT=443
export MYSCALE_USERNAME="YOUR_USERNAME"
export MYSCALE_PASSWORD="YOUR_CLUSTER_PASSWORD"
export OPENAI_API_KEY="YOUR_OPENAI_API_KEY"
# インデックスとクエリのドキュメント
import { MyScaleStore } from "langchain/vectorstores/myscale";
import { OpenAIEmbeddings } from "langchain/embeddings/openai";
const vectorStore = await MyScaleStore.fromTexts(
["Hello world", "Bye bye", "hello nice world"],
[
{ id: 2, name: "2" },
{ id: 1, name: "1" },
{ id: 3, name: "3" },
],
new OpenAIEmbeddings(),
{
host: process.env.MYSCALE_HOST || "localhost",
port: process.env.MYSCALE_PORT || "443",
username: process.env.MYSCALE_USERNAME || "username",
password: process.env.MYSCALE_PASSWORD || "password",
}
);
const results = await vectorStore.similaritySearch("hello world", 1);
console.log(results);
const filteredResults = await vectorStore.similaritySearch("hello world", 1, {
whereStr: "metadata.name = '1'",
});
console.log(filteredResults);
# 既存のコレクションからクエリのドキュメントを取得する
import { MyScaleStore } from "langchain/vectorstores/myscale";
import { OpenAIEmbeddings } from "langchain/embeddings/openai";
const vectorStore = await MyScaleStore.fromExistingIndex(
new OpenAIEmbeddings(),
{
host: process.env.MYSCALE_HOST || "localhost",
port: process.env.MYSCALE_PORT || "443",
username: process.env.MYSCALE_USERNAME || "username",
password: process.env.MYSCALE_PASSWORD || "password",
database: "your_database", // デフォルトは "default"
table: "your_table", // デフォルトは "vector_table"
}
);
const results = await vectorStore.similaritySearch("hello world", 1);
console.log(results);
const filteredResults = await vectorStore.similaritySearch("hello world", 1, {
whereStr: "metadata.name = '1'",
});
console.log(filteredResults);