Ollama + SingleStore – LangChain = :-(

En un artículo previo, utilizamos Ollama con LangChain y SingleStore. LangChain proporcionó una solución eficiente y compacta para integrar Ollama con SingleStore. Sin embargo, ¿qué pasaría si elimináramos LangChain? En este artículo, demostraremos un ejemplo de uso de Ollama con SingleStore sin dependencia de LangChain. Veremos que aunque podemos obtener los mismos resultados descritos en el artículo previo, el número de código aumenta, requiriéndonos que manejemos más de la instalación que normalmente maneja LangChain.

El archivo de notebook utilizado en este artículo está disponible en GitHub.

Introducción

Desde el artículo previo, seguiremos los mismos pasos para configurar nuestro entorno de prueba como se describe en estas secciones:

  • Introducción
    • Utilice una Máquina Virtual o venv.
  • Cree una cuenta de SingleStoreDB Cloud
    • Utilice Ollama Demo Group como el Nombre del Grupo de Espacio de Trabajo y ollama-demo como el Nombre del Espacio de Trabajo. Note la contraseña y el nombre del host. Permite temporalmente el acceso desde cualquier lugar configurando la cortafuegos bajo Ollama Demo Group > Firewall.
  • Crear una Base de Datos 
  • CREATE DATABASE IF NOT EXISTS ollama_demo;
  • Instalar Jupyter
    • pip install notebook
  • Instalar Ollama
    • curl -fsSL https://ollama.com/install.sh | sh
  • Variable de Entorno
    • export SINGLESTOREDB_URL="admin:<password>@<host>:3306/ollama_demo"
      Reemplaza <password> y <host> con los valores para tu entorno.
  • Iniciar Jupyter
    • jupyter notebook

Completar la Nota de Código

Primero, algunas paquetes:

Shell

 

Después, importaremos algunas bibliotecas:

Python

 

Creamos embebiduras utilizando all-minilm (45 MB en el momento de la escritura):

Python

 

Ejemplo de salida:

Plain Text

 

Para nuestro LLM utilizaremos llama2 (3.8 GB en el momento de la escritura):

Python

 

Ejemplo de salida:

Plain Text

 

A continuación, utilizaremos el texto de ejemplo del sitio web de Ollama :

Python

 

Configuraremos las embeddings a all-minilm y recorremos cada documento para construir el contenido para un DataFrame de Pandas. Además, convertiremos las embeddings a un formato de 32 bits, ya que este es el predeterminado de SingleStore para el tipo de dato VECTOR. Por último, determinaremos el número de dimensiones de embedding para el primer documento en el DataFrame de Pandas.

A continuación, crearemos una conexión a nuestra instancia de SingleStore:

Python

 

Ahora crearemos una tabla con la columna vector utilizando las dimensiones que determinamos previamente:

Python

 

Ahora escribiremos el DataFrame de Pandas en la tabla:

Python

 

Ejemplo de salida:

Plain Text

 

Ahora crearemos un índice para coincidir con el que creamos en el artículo anterior:

Python

 

Ahora plantearemos una pregunta, como sigue:

Python

 

Convertiremos la pregunta en embeddings, asegurándonos que las embeddings se conviertan en un formato de 32 bits y luego ejecutaremos la consulta SQL que utiliza la notación infija <-> para la Distancia Euclidiana.

Ejemplo de salida:

Plain Text

 

A continuación, utilizaremos el LLM, como sigue:

Python

 

Ejemplo de salida:

Plain Text

 

Resumen

En este artículo, hemos replicado los pasos que seguimos en el artículo anterior y obtenido resultados similares. Sin embargo, tuvimos que escribir una serie de sentencias SQL y manejar varios pasos que LangChain hubiera manejado por nosotros. Además, puede haber más tiempo y costo involucrados en el mantenimiento de la base de código a largo plazo en comparación con la solución LangChain.

Usar LangChain en lugar de escribir código personalizado para el acceso a bases de datos ofrece varias ventajas, como eficiencia, escalabilidad y confiabilidad.

LangChain ofrece una biblioteca de módulos preconstruidos para la interacción con bases de datos, reduciendo el tiempo y el esfuerzo de desarrollo. Los desarrolladores pueden usar estos módulos para implementar rápidamente varias operaciones de base de datos sin empezar desde cero.

LangChain abstrae muchas de las complejidades involucradas en la gestión de bases de datos, permitiendo a los desarrolladores enfocarse en tareas de alto nivel en lugar de en detalles de implementación de bajo nivel. Esto mejora la productividad y la velocidad de lanzamiento de aplicaciones basadas en bases de datos.

LangChain tiene una gran y activa comunidad de desarrolladores que se está expandiendo, está disponible en GitHub y proporciona documentación extensa y ejemplos.

En resumen, LangChain ofrece a los desarrolladores una poderosa, eficiente y confiable plataforma para construir aplicaciones basadas en bases de datos, lo que les permite enfocarse en problemas de negocio utilizando abstracciones de alto nivel en lugar de reinventar la rueda con código personalizado. Comparando el ejemplo de este artículo con el ejemplo que usamos en el artículo anterior, pueden verse los beneficios.

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