在数据隐私问题日益严重的时代,本地大型语言模型 (LLM) 应用程序的开发为基于云的解决方案提供了替代方案。Ollama 提供了一个解决方案,使 LLM 可以在本地下载和使用。在本文中,我们将探讨如何使用 Jupyter Notebook 将 Ollama 与 LangChain 和 SingleStore 一起使用。
介绍
我们将使用运行 Ubuntu 22.04.2 的虚拟机作为测试环境。另一种方法是使用 .venv
创建 SingleStoreDB 云帐户
我们将使用 Ollama Demo Group 作为工作区组名称,使用 ollama-demo 作为工作区名称。我们将记下我们的密码和主机名。在本文中,我们将通过在 Ollama Demo Group > Firewall 下配置防火墙来暂时允许从任何位置进行访问。对于生产环境,应添加防火墙规则以提供更高的安全性。
创建数据库
在我们的 SingleStore Cloud 帐户中,让我们使用 SQL 编辑器创建一个新数据库。调用此函数,如下所示:ollama_demo
SQL的
安装 Jupyter
在命令行中,我们将安装经典的 Jupyter Notebook,如下所示:
安装 Ollama
我们将安装 Ollama,如下所示:
环境变量
使用我们之前保存的密码和主机信息,我们将创建一个环境变量来指向我们的 SingleStore 实例,如下所示:
壳
将 和 替换为您的环境的值。<password>
<host>
启动 Jupyter
我们现在已准备好与 Ollama 合作,我们将推出 Jupyter:
壳
填写笔记本
首先,一些软件包:
接下来,我们将导入一些库:
我们将使用创建嵌入:all-minilm
输出示例:
对于我们的 LLM,我们将使用(在撰写本文时为 3.8 GB):llama2
输出示例:
接下来,我们将使用 Ollama 网站上的示例文本:
将指定嵌入,确定第一个文档返回的维度数,并将文档转换为 SingleStore 所需的格式。all-minilm
接下来,使用 LangChain:
除了文档和嵌入之外,我们还将提供要用于存储的表的名称、要使用向量索引的距离策略,以及使用我们之前确定的维度的向量大小。LangChain文档中对这些选项和其他选项进行了更详细的解释。
使用 SingleStore Cloud 中的 SQL 编辑器,让我们检查一下 LangChain 创建的表的结构:
SQL的
输出示例:
我们可以看到,创建了一个具有 384 个维度的列来存储嵌入。vector
我们还要快速检查存储的数据:
输出示例:
最后,我们来检查一下向量索引:
输出示例:
我们现在要问一个问题,如下所示:
输出示例:
接下来,我们将使用 LLM,如下所示:
输出示例:
我们已经看到我们可以连接到 SingleStore,存储文档和嵌入,询问有关数据库中数据的问题,并通过 Ollama 在本地使用 LLM 的强大功能。