Ollama + SingleStore – LangChain = :-(

In een vorige artikel gebruikten we Ollama samen met LangChain en SingleStore. LangChain bood een efficiënte en compacte oplossing voor de integratie van Ollama met SingleStore. Echter, wat als we LangChain zouden verwijderen? In dit artikel zullen we een voorbeeld geven van het gebruik van Ollama met SingleStore zonder afhankelijkheid van LangChain. We zullen zien dat we dezelfde resultaten kunnen behalen als beschreven in het vorige artikel, maar dat het aantal code toeneemt, waardoor we meer van de installaties moeten beheren die normaal door LangChain worden afgehandeld.

Het notitiebestand dat in dit artikel wordt gebruikt, is beschikbaar op GitHub.

Inleiding

Vanuit het vorige artikel zullen we dezelfde stappen volgen om ons testmilieu in te stellen, zoals beschreven in deze secties:

  • Inleiding
    • Gebruik een Virtual Machine of venv.
  • Maak een account aan bij SingleStoreDB Cloud
    • Gebruik Ollama Demo Groep als Workspace Groepsnaam en ollama-demo als Workspace Naam. Maak een notitie van het wachtwoord en de hostnaam. Stel tijdelijk toegang toe vanaf elke plek door de brandmuur te configureren onder Ollama Demo Groep > Brandmuur.
  • Maak een Database 
  • CREATE DATABASE IF NOT EXISTS ollama_demo;
  • Installeer Jupyter
    • pip install notebook
  • Installeer Ollama
    • curl -fsSL https://ollama.com/install.sh | sh
  • Omgevingsvariabele
    • export SINGLESTOREDB_URL="admin:<password>@<host>:3306/ollama_demo"
      Vervang <password> en <host> met de waarden voor uw omgeving.
  • Start Jupyter
    • jupyter notebook

Vul het Notebook in

Eerst enkele pakketten:

Shell

 

Vervolgens importeren we enkele bibliotheken:

Python

 

We maken embeddings met behulp van all-minilm (45 MB op het moment van schrijven):

Python

 

Plain Text

 

Voor onze LLM gebruiken we llama2 (3.8 GB bij het schrijven van dit stuk):

Python

 

Voorbeelduitvoer:

Plain Text

 

Volgend zal gebruik worden gemaakt van het voorbeeldtekst van de Ollama website:

Python

 

We zullen de vectorstijlen instellen op all-minilm en door elk document iteratief lopen om de inhoud op te bouwen voor een Pandas DataFrame. Daarnaast zullen we de vectorstijlen converteren naar een 32-bit formaat, aangezien dit SingleStore’s standaard is voor de VECTOR datatype. We zullen ook de dimensies van de vectorstijlen voor het eerste document in het Pandas DataFrame bepalen.

Volgend zal een verbinding worden gemaakt met onze SingleStore-instantie:

Python

 

Nu zullen we een tabel aanmaken met de kolom vector gebruikmakende van de vooraf bepaalde dimensies:

Python

 

We zullen nu het Pandas DataFrame naar de tabel schrijven:

Python

 

Voorbeelduitvoer:

Plain Text

 

We zullen nu een index aanmaken die overeenkomt met de die we in het vorige artikel aangemaakt hebben:

Python

 

We zullen nu een vraag stellen, zoals volgt:

Python

 

We zullen de aanroepende opdracht omzetten in vectorstijlen, ervoor zorgen dat de vectorstijlen zijn geconverteerd naar een 32-bit formaat, en vervolgens uitvoeren van de SQL-query die de infix notatie <-> gebruikt voor de Euclidische afstand.

Voorbeelduitvoer:

Plain Text

 

Volgend zal de LLM worden gebruikt, zoals volgt:

Python

 

Voorbeelduitvoer:

Plain Text

 

Samenvatting

In dit artikel hebben we de stappen uit het vorige artikel nageleefd en vergelijkbare resultaten behaald. Echter, we moesten een reeks SQL-statementen schrijven en enkele stappen beheren die LangChain zou hebben opgelost voor ons. Bovendien zou er misschien meer tijd en kosten zijn betrokken bij het langetermijneigen van de codebasis in vergelijking met de oplossing van LangChain.

Het gebruik van LangChain in plaats van custom code voor database toegang biedt verschillende voordelen, zoals effectiviteit, scalabiliteit en betrouwbaarheid.

LangChain biedt een bibliotheek van voorgebouwde modules voor databaseinteractie, die ontwikkelingstijd en inspanningen verminderen. Ontwikkelaars kunnen deze modules gebruiken om verschillende databaseoperaties snel uit te voeren zonder vanaf nul te beginnen.

LangChain abstracte veel van de complexiteit die aanwezig is in databasebeheer, waardoor ontwikkelaars zich kunnen richten op hogere niveaus taken in plaats van op details van de lagere niveaus implementatie. Dit verbeterd de productiviteit en de tijd tot marktintroductie voor databasegebaseerde toepassingen.

LangChain heeft een grote, actieve en groeiende gemeenschap van ontwikkelaars, is beschikbaar op GitHub en biedt uitgebreide documentatie en voorbeelden.

In totaal biedt LangChain ontwikkelaars een krachtige, efficiente en betrouwbare platform voor het bouwen van databasegebaseerde toepassingen, die hen in staat stellen hun zwaartepunten op de zakelijke problemen te leggen in plaats van de wielen opnieuw te vervaardigen met custom code. Bij het vergelijken van het voorbeeld in dit artikel met het voorbeeld dat we in het vorige artikel gebruikten, kunnen we de voordelen zien.

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