Ollama + SingleStore – LangChain = :-(

In einem früheren Artikel haben wir Ollama mit LangChain und SingleStore verwendet. LangChain bot eine effiziente und kompakte Lösung für die Integration von Ollama mit SingleStore. Wie würde es jedoch ausscheinen, wenn wir LangChain entfernen würden? In diesem Artikel werden wir ein Beispiel zeigen, wie Ollama mit SingleStore verwendet werden kann, ohne auf LangChain zu verlassen. Wir werden erkennen, dass wir die gleichen Ergebnisse erzielen können, die in dem früheren Artikel beschrieben wurden, aber die Anzahl der Code steigt, was bedeutet, dass wir mehr der Pipeline verwalten müssen, die normalerweise von LangChain verwaltet wird.

Der in diesem Artikel verwendete Notebook-Datei ist auf GitHub verfügbar.

Einführung

Aus dem vorhergehenden Artikel werden wir die gleichen Schritte befolgen, um unser Testumfeld wie in diesen Abschnitten beschrieben zu setzen:

  • Einführung
    • Verwenden Sie eine Virtual Machine oder venv.
  • Erstellen Sie ein SingleStoreDB Cloud-Konto
    • Verwenden Sie Ollama Demo Group als Workspace-Gruppennamen und ollama-demo als Workspace-Name. Notieren Sie sich das Passwort und den Rechnernamen. Ändern Sie die Firewall-Einstellungen unter Ollama Demo Group > Firewall, um暂时 von überall her zuzulassen.
  • Erstellen Sie eine Datenbank
  • CREATE DATABASE IF NOT EXISTS ollama_demo;
  • Installieren Sie Jupyter
    • pip install notebook
  • Installieren Sie Ollama
    • curl -fsSL https://ollama.com/install.sh | sh
  • Umgebungsvariable
    • export SINGLESTOREDB_URL="admin:<password>@<host>:3306/ollama_demo"
      Ersetzen Sie <password> und <host> durch die Werte für Ihre Umgebung.
  • Starten Sie Jupyter
    • jupyter notebook

Füllen Sie das Notebook aus

Zuerst einige Pakete:

Shell

 

Dann importieren wir einige Bibliotheken:

Python

 

Wir erstellen Einbettungen mit all-minilm (45 MB zum Zeitpunkt der Verfassung):

Python

 

Beispieloutput:

Plain Text

 

Für unser LLM verwenden wir llama2 (3,8 GB zum Zeitpunkt der Verfassung): 

Python

 

Beispieloutput:

Plain Text

 

Dann verwenden wir den Beispieltext von der Ollama-Website:

Python

 

Wir setzen die Embeddings auf all-minilm und iterieren durch jedes Dokument, um den Inhalt für einen Pandas DataFrame aufzubauen. Zusätzlich konvertieren wir die Embeddings in ein 32-Bit-Format, da dies das Standardformat von SingleStore für den VECTOR-Datentyp ist. Schließlich bestimmen wir die Anzahl der Embedding-Dimensionen für das erste Dokument im Pandas DataFrame. 

Dann erstellen wir eine Verbindung zu unserer SingleStore-Instanz:

Python

 

Nun erstellen wir eine Tabelle mit der vector-Spalte unter Verwendung der zuvor bestimmten Dimensionen:

Python

 

Nun schreiben wir den Pandas DataFrame in die Tabelle:

Python

 

Beispieloutput:

Plain Text

 

Nun erstellen wir einen Index, der dem in dem vorherigen Artikel entspricht:

Python

 

Nun stellen wir eine Frage, wie folgt:

Python

 

Wir konvertieren die Eingabe in Embeddings, stellen sicher, dass die Embeddings in ein 32-Bit-Format konvertiert werden, und führen dann die SQL-Abfrage aus, die die Infixnotation <-> für den Euklidischen Abstand verwendet.

Beispieloutput:

Plain Text

 

Dann verwenden wir das LLM, wie folgt:

Python

 

Beispieloutput:

Plain Text

 

Zusammenfassung

In diesem Artikel haben wir die Schritte, die wir im vorherigen Artikel befolgt haben, repliziert und ähnliche Ergebnisse erzielt. Allerdings mussten wir eine Reihe von SQL-Anweisungen schreiben und mehrere Schritte verwalten, die LangChain für uns gehandhabt hätte. Zusätzlich können sich langfristig höhere Zeitaufwand und Kosten bei der Wartung der Codebasis im Vergleich zur LangChain-Lösung ergeben.

Die Verwendung von LangChain anstelle des Schreibens von benutzerdefiniertem Code für Datenbankzugriffe bietet mehrere Vorteile, wie Effizienz, Skalierbarkeit und Zuverlässigkeit.

LangChain bietet eine Bibliothek vorgefertigter Module für die Datenbankinteraktion, was die Entwicklungzeit und -arbeit verringert. Entwickler können diese Module verwenden, um verschiedene Datenbankoperationen schnell zu implementieren, ohne von Grund auf zu beginnen.

LangChain abstrahiert viele der Komplexitäten, die mit der Datenbankverwaltung verbunden sind, sodass Entwickler sich auf höhere Aufgaben konzentrieren können, anstatt sich mit Implementierungsdetails auf niedriger Ebene zu beschäftigen. Dies verbessert die Produktivität und reduziert die Zeit bis zur Markteinführung für datenbankgetriebene Anwendungen.

LangChain hat eine große, aktive und wachsende Entwicklergemeinschaft, ist auf GitHub verfügbar und bietet umfangreiche Dokumentation und Beispiele.

Zusammenfassend bietet LangChain Entwicklern eine leistungsstarke, effiziente und zuverlässige Plattform für die Entwicklung datenbankgetriebener Anwendungen, ermöglicht es ihnen, sich auf Geschäftsprobleme zu konzentrieren und höherwertige Abstraktionen zu verwenden, anstatt mit benutzerdefiniertem Code das Rad neu zu erfinden. Ein Vergleich des Beispiels in diesem Artikel mit dem Beispiel aus dem vorherigen Artikel zeigt die Vorteile.

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