为了账号安全,请及时绑定邮箱和手机立即绑定

Ollama和Llama3——一个将文件转换为本地向量存储并用最新大型语言模型进行聊天的Streamlit应用

更口语化的版本可以是:
使用Streamlit应用将文件转成向量存储,并用Llama3等最新模型来聊天

与你的 PDF、CSV 或文本文件中的内容进行聊天是最近的热门趋势(看看 Medium 上的相关文章)。为了展示如何使用最新模型(如Llama3Mistral)本地实现这一点,我制作了一个 Streamlit 应用程序,使用 Python 代码将 PDF、CSV 和文本文件转换为向量数据库,然后用这些向量数据喂给模型。我尝试了 Chroma 和 Meta 的 FAISS 向量数据库。

一个关于Streamlit应用的简介

这个界面应该相当直观。输入一个指令并选择用于处理文件的编码模型,接着选择你想要使用的大型语言模型。

你可以自己用你的文件试一下这个应用(https://github.com/ml-score/ollama

你可以选择三种文件哦

你可以选择一个或多个同一类型的文档。它们将在本地处理,而该应用程序仅用于演示。所以如果你想让它崩溃,那你也确实能做到 :-)

注:原文中的“请记住”在翻译中被省略以使表达更符合口语风格。

  • PDF — 文本会被提取。你可以选择将文本拆分成多个部分,并定义重叠部分以确保上下文可以被包含。
  • CSV — 默认情况下,它们将以结构化的方式导入。每行视为一个文档。根据经验,模型可以识别并关联多个数据库,你可能需要增加所检索的文档数量。
  • 文本 — 文本格式可以非常不规范,你可以将每个文件视为一个文档。这有助于处理日志文件,例如系统日志。

并不是所有东西都需要存入向量数据库。对于CSV文件或数据库时,您可以直接使用SQL,或者让模型生成SQL代码。同样,对于日志文件,您可以使用专门的日志解析工具,或者让模型自动生成正则表达式(也可以让LLM生成正则表达式)。

很明显,由于这是在本地机器上运行,因此性能会有所限制。苹果的M1、M2等处理器表现出色。但这套配置的主要目的是保护你的数据隐私,不把数据传到云上。如果你可以访问像ChatGPT这样的强大语言模型,那么这个小机器可能就比不过了。

但考虑到你并没有使用大量的GPU,而是可能只是你笔记本电脑自带的CPU,Mistral或Llama3的初步成果还是相当令人鼓舞的。

将向量存储库保存到本地

你只需要处理一次文件。结果会存储在本地的SQLite数据库或其他本地文件里。之后只需提供路径,就可以重复利用这些结果。应用程序会读取并利用这些信息。你可以选择每次检索多少文件。检索更多文件虽然能获取更多信息,但也意味着更大的处理负担和开销。

要是在聊天时有问题可以问哦

你可以像平常一样在聊天中提问。在演示中,有一个严格的指示,仅使用提供的文件中的信息。但你可以尝试其他方法。你还可以利用大模型本身提供的所有信息,这相当于一个包含所有互联网信息的文件……。此外,聊天还会记住之前发生的事情。看看这种“记忆”能持续多久。

结果将保存为JSON文件

结果会被保存在一个名为 JSON 的文件中,这个文件位于向量存储文件夹内,和其他信息一起,比如时间戳、使用的模型,以及关于您的文档的一些元数据,比如名称、页码或行号,这样您以后可以参考这些信息,或者从 JSON 文件中提取所需信息。

答案会存入一个 JSON 文件里,包含元数据和其他相关信息(https://github.com/ml-score/ollama

你可以尝试让大型语言模型(LLM)例如从日志文件中返回结构化的结果,然后稍后再将这些结果提取到一个常规表格中:

通过Ollama在KNIME Analytics Platform上与本地Llama 3模型聊天——并将日志提取出来…使用低代码工具来集成和交互最新的本地LLMmedium.com

安装好必要东西后,就可以开始探索啦。

如何搭建Streamlit应用?

您可以在https://github.com/ml-score/ollama找到相关的代码和描述。

  • 建议先安装 Python 并创建一个 conda 环境,并在你的 conda 环境中安装需要的包(py_ollama.yml
  • 然后安装 Ollama,并确保已下载所需的模型(目前有 Llama3 和 Mistral (instruct),但你可以根据需要修改代码以添加更多模型)
  • 需要一个 嵌入模型(例如 mxbai-embed-large)。你也可以直接使用大型语言模型(LLM),但这会花费更多时间

更多关于如何启动应用的详细信息,请参见此处。

ollama/script at main · ml-score/ollama 在 main 分支上查看 ollama/script。通过在 GitHub 上创建一个账户来参与 ml-score/ollama 的开发,该仓库包括 Ollama 和 Llama 模型相关的工作。

作为例子,你可以查看如何将银行对账单中的信息提取到JSON文件中。你可以围绕这一点构建一个循环来,并将这些信息带回KNIME(或其他系统)。

从发票中提取数据到XML或CSV?大家好,我在试着弄清楚KNIME的基本开源版本是否符合我的需求……forum.knime.com

如果你想了解更多关于AI和LLM的信息,我可以提供一些关于低代码数据分析平台KNIME和(本地部署的)LLM的文章。KNIME还支持使用类似ChatGPT这样的平台。

你可以在我KNIME Hub上找到这些用例的相关示例。

mlauber71/LLM_Space: https://hub.knime.com/mlauber71/spaces/LLM_Space/~17k4zAECNryrZw1X/?source=post_page-----c5340fcd6ad0-------------------------------- (包含 11 个项目)

如果你想继续使用LLM和KNIME的话,可以看看最新的KNIME Space for Generative AI

KNIME 用于生成式 AI 的资源 - knimeExplore 这一系列即用工作流程,开始使用大型语言模型 (LLMs)。浏览 hub.knime.com

如果你喜欢这篇故事,你可以在 Medium 上关注我(https://medium.com/@mlxl),或者去 KNIME Hub (https://hub.knime.com/mlauber71) 或 KNIME Forum (https://forum.knime.com/u/mlauber71/summary) 上看看我的动态。

这个应用受到了 Paras Madan 在 Medium 上文章的启发——一定要去看看他的文章。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消