# 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);
Last Updated: Tue May 07 2024 02:28:12 GMT+0000