# LangChain JS/TS
# Einführung
LangChain ist ein Framework zur Entwicklung von Anwendungen, die von Sprachmodellen unterstützt werden. LangChain JS/TS (opens new window) wurde entwickelt, um nahtlos mit dem LangChain Python-Paket (opens new window) integriert zu werden. Dies bedeutet konkret, dass alle Objekte (Prompts, LLMs, Chains usw.) so konzipiert sind, dass sie zwischen den Sprachen serialisiert und geteilt werden können.
# Voraussetzungen
Bevor wir beginnen, müssen wir das langchain (opens new window) und ClickHouse JS (opens new window) installieren.
# npm
npm install -S langchain @clickhouse/client
# yarn
yarn add langchain @clickhouse/client
# Umgebung einrichten
Um OpenAI-Einbettungsmodelle zu verwenden, müssen wir uns bei OpenAI (opens new window) für einen API-Schlüssel anmelden. Außerdem müssen wir die Cluster-Host-, Benutzername- und Passwortinformationen aus der MyScale-Konsole abrufen (Verbindungsdaten).
Führen Sie den folgenden Befehl aus, um die Umgebungsvariablen festzulegen:
export MYSCALE_HOST="IHR_CLUSTER_HOST"
export MYSCALE_PORT=443
export MYSCALE_USERNAME="IHR_BENUTZERNAME"
export MYSCALE_PASSWORD="IHR_CLUSTER_PASSWORT"
export OPENAI_API_KEY="IHR_OPENAI_API_SCHLÜSSEL"
# Index- und Abfrage-Dokumente
import { MyScaleStore } from "langchain/vectorstores/myscale";
import { OpenAIEmbeddings } from "langchain/embeddings/openai";
const vectorStore = await MyScaleStore.fromTexts(
["Hallo Welt", "Tschüss", "Hallo schöne Welt"],
[
{ 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 || "Benutzername",
password: process.env.MYSCALE_PASSWORD || "Passwort",
}
);
const results = await vectorStore.similaritySearch("Hallo Welt", 1);
console.log(results);
const filteredResults = await vectorStore.similaritySearch("Hallo Welt", 1, {
whereStr: "metadata.name = '1'",
});
console.log(filteredResults);
# Abfrage-Dokumente aus einer vorhandenen Sammlung
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 || "Benutzername",
password: process.env.MYSCALE_PASSWORD || "Passwort",
database: "Ihre_Datenbank", // Standardwert: "default"
table: "Ihre_Tabelle", // Standardwert: "vector_table"
}
);
const results = await vectorStore.similaritySearch("Hallo Welt", 1);
console.log(results);
const filteredResults = await vectorStore.similaritySearch("Hallo Welt", 1, {
whereStr: "metadata.name = '1'",
});
console.log(filteredResults);