Ollama + SingleStore – LangChain = :-(

Em um artigo anterior, nós usamos o Ollama com a LangChain e o SingleStore. A LangChain forneceu uma solução eficiente e compacta para integrar o Ollama com o SingleStore. No entanto, e se nós removermos a LangChain? Neste artigo, vamos demonstrar um exemplo de uso do Ollama com o SingleStore sem depender da LangChain. Vamos ver que, embora consigamos os mesmos resultados descritos no artigo anterior, o número de código aumenta, sendo necessário gerenciar mais das partes de instalação que a LangChain normalmente trata.

O arquivo de notebook usado neste artigo está disponível no GitHub.

Introdução

Do artigo anterior, nós seguiremos os mesmos passos para configurar o nosso ambiente de teste, como descrito nas seções seguintes:

  • Introdução
    • Use uma Máquina Virtual ou venv.
  • Crie uma conta do SingleStoreDB Cloud
    • Use Grupo de Demonstração do Ollama como o Nome do Grupo de Workspace e ollama-demo como o Nome do Workspace. Note o senha e o nome do host. Permitir acesso de qualquer lugar temporariamente, configurando a firewall em Grupo de Demonstração do Ollama > Firewall.
  • Criar um Banco de Dados 
  • CREATE DATABASE IF NOT EXISTS ollama_demo;
  • Instalar Jupyter
    • pip install notebook
  • Instalar Ollama
    • curl -fsSL https://ollama.com/install.sh | sh
  • Variável de Ambiente
    • export SINGLESTOREDB_URL="admin:<password>@<host>:3306/ollama_demo"
      Substituir <password> e <host> pelos valores do seu ambiente.
  • Iniciar Jupyter
    • jupyter notebook

Preencha o Notebook

Primeiro, algumas pacotes:

Shell

 

Em seguida, importaremos algumas bibliotecas:

Python

 

Criaremos embeddings usando all-minilm (45 MB no momento de escrita):

Python

 

Saída do exemplo:

Plain Text

 

Para nossa LLM, usaremos llama2 (3,8 GB no momento da escrita): 

Python

 

Saída do exemplo:

Plain Text

 

Em seguida, usaremos o texto de exemplo da website Ollama:

Python

 

Definiremos as embeddings para all-minilm e iteraremos por cada documento para construir o conteúdo para um DataFrame do Pandas. Além disso, convertiremos as embeddings para um formato de 32 bits, pois este é o padrão do SingleStore para o tipo de dados VECTOR. Por fim, determinaremos o número de dimensões de embedding para o primeiro documento no DataFrame do Pandas. 

Em seguida, criaremos uma conexão com nossa instância do SingleStore:

Python

 

Agora, criaremos uma tabela com a coluna vector usando as dimensões que determinamos anteriormente:

Python

 

Agora, escreveremos o DataFrame do Pandas na tabela:

Python

 

Saída do exemplo:

Plain Text

 

Agora, criaremos um índice para corresponder ao que criamos no artigo anterior:

Python

 

Pediremos uma pergunta, da seguinte forma:

Python

 

Convertiremos a prompt para embeddings, garantiremos que as embeddings sejam convertidas para um formato de 32 bits e, em seguida, executaremos a consulta SQL que usa a notação infixa <-> para a Distância Euclidiana.

Saída do exemplo:

Plain Text

 

Em seguida, usaremos a LLM, da seguinte forma:

Python

 

Saída do exemplo:

Plain Text

 

Resumo

Neste artigo, nós replicamos os passos seguidos no artigo anterior e obtivemos resultados semelhantes. No entanto, tivemos de escrever uma série de instruções SQL e gerenciar vários passos que o LangChain teria feito por nós. Além disso, pode haver mais tempo e custo envolvidos no manutenção do código base a longo prazo em comparação com a solução LangChain.

Usar o LangChain, em vez de escrever código personalizado para acesso ao banco de dados, oferece várias vantagens, como eficiência, escalabilidade e confiabilidade.

O LangChain oferece uma biblioteca de módulos pré-construídos para interação com o banco de dados, reduzindo o tempo de desenvolvimento e o esforço. Os desenvolvedores podem usar esses módulos para implementar rapidamente várias operações de banco de dados sem começar do zero.

O LangChain abstrai muitas das complexidades envolvidas na gerencia de banco de dados, permitindo que os desenvolvedores se concentrem em tarefas de alto nível em vez de detalhes de implementação de baixo nível. Isso melhora a produtividade e o tempo de mercado para aplicações baseadas em banco de dados.

O LangChain tem uma comunidade de desenvolvedores grande, ativa e crescente, está disponível no GitHub e fornece documentação extensa e exemplos.

Em resumo, o LangChain oferece aos desenvolvedores uma plataforma poderosa, eficiente e confiável para construir aplicações baseadas em banco de dados, permitindo-lhes se concentrar em problemas de negócios usando abstrações de nível superior em vez de reinventar a roda com código personalizado. Comparando o exemplo neste artigo com o exemplo usado no artigo anterior, podemos ver os benefícios.

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