Ollama + SingleStore – LangChain = :-(

В преvious article, мы использовали Ollama с LangChain и SingleStore. LangChain предоставил эффективное и компактное решение для интеграции Ollama с SingleStore. Тем не менее, что, если бы мы удалили LangChain? В этой статье мы продемонстрируем пример использования Ollama с SingleStore без использования LangChain. Мы увидим, что хотя мы можем достичь тех же результатов, которые были описаны в предыдущей статье, количество кода увеличивается, требуя от нас управления большей частью подключения, которое обычно выполняет LangChain.

Файл NOTEBOOK, используемый в этой статье, доступен на GitHub.

Введение

Из предыдущей статьи мы продолжим те же шаги для установки нашего тестового среда, как описано в этих разделах:

  • Введение
    • Использовать виртуальную машину или venv.
  • Создать учетную запись SingleStoreDB Cloud
    • Использовать Ollama Demo Group как имя группы workspace и ollama-demo как имя workspace. Замените password и host name. Temporarily allow access from anywhere by configuring the firewall under Ollama Demo Group > Firewall.
  • Create a Database 
  • CREATE DATABASE IF NOT EXISTS ollama_demo;
  • Install Jupyter
    • pip install notebook
  • Install Ollama
    • curl -fsSL https://ollama.com/install.sh | sh
  • Environment Variable
    • export SINGLESTOREDB_URL="admin:<password>@<host>:3306/ollama_demo"
      Replace <password> and <host> with the values for your environment.
  • Launch Jupyter
    • jupyter notebook

Fill out the Notebook

First, some packages:

Shell

 

Next, we’ll import some libraries:

Python

 

We’ll create embeddings using all-minilm (45 MB at the time of writing):

Python

 

Plain Text

 

Для нашего LLM мы будем использовать llama2 (3,8 ГБ на момент написания):

Python

 

Пример вывода:

Plain Text

 

Далее мы будем использовать текст примера с сайта Ollama:

Python

 

Мы установим embeddings на all-minilm и пройдем по каждому документу, чтобы собрать содержимое для DataFrame Pandas. Кроме того, мы convert embeddings в формат 32-бит, поскольку это значение по умолчанию SingleStore для типа данных VECTOR. Наконец, мы определим размерность embeddings для первого документа в DataFrame Pandas.

Далее мы создадим соединение с экземпляром SingleStore:

Python

 

Теперь мы создадим таблицу с колонкой vector, используя размерности, которые мы ранее определили:

Python

 

Теперь мы начнем записывать DataFrame Pandas в таблицу:

Python

 

Пример вывода:

Plain Text

 

Теперь мы создадим индекс, который соответствует тому, что мы создавали в предыдущей статье:

Python

 

Теперь мы запросим вопрос следующим образом:

Python

 

Мы convert prompt в embeddings, уверенным, что embeddings convert в формат 32-бит, и затем выполним SQL-запрос, который использует инфиксную нотацию <-> для Евклидовой Distancia.

Пример вывода:

Plain Text

 

Далее мы используем LLM так:

Python

 

Пример вывода:

Plain Text

 

Резюме

В этой статье мы повторяем шаги, которые мы проделали в предыдущей и добиваемся схожих результатов. Тем не менее, нам пришлось написать ряд SQL-запросов и управлять несколькими шагами, которые LangChain бы справился с собой. Кроме того, для поддержки базы кода в долгосрочной перспективе может потребоваться больше времени и средств, чем для решения с помощью LangChain.

Использование LangChain вместо написания自定义 кода для доступа к базе данных предлагает несколько преимуществ, таких как эффективность, масштабность и надежность.

LangChain предлагает библиотеку с ready-made модулей для взаимодействия с базами данных, что сокращает время и усилия разработки. Разработчики могут использовать这些 модули, чтобы быстро внедрить различные операции с базой данных, не начиная с начала.

LangChain абстрагирует многие сложности, связанные с управлением базой данных, позволяя разработчикам сосредотачиваться на высокоуровневых задачах, а не на деталях нижнего уровня. Это улучшает производительность и скорость запуска приложений, основанных на базе данных.

LangChain имеет крупную, активную и растущую общность разработчиков, доступен на GitHub, и предоставляет обширную документацию и примеры.

В общем, LangChain позволяет разработчикам использовать мощную, эффективную и надежную платформу для создания приложений с базой данных, позволяя им сосредотачиваться на решенииビジネス проблем с использованием высокоуровневых абстракций, а не переиначивать колесо собственным кодом. Comparing the example in this article with the example we used in the previous article, we can see the benefits.

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