这周我写了很多。我还对自托管矢量地图的新选项做了一些有趣的研究,并推出了几个新版本的插件。
在博客上
- 现在添加一个海象:DALL-E 3 中的提示工程谈到了我对新的 DALL-E 3 图像生成模型的探索,包括一些逆向工程,展示了 OpenAI 提示工程 ChatGPT 如何通过为 DALL-E 3 生成自己的提示。很多鹈鹕的照片。我还写了一篇关于我在那篇文章中使用的 CSS 网格的TIL。
- 在使用 llm-embed-jina 通过 CLI 执行 Jina 嵌入中,我发布了一个新插件,可以使用我的LLM命令行工具运行新的 Jina AI 8K 文本嵌入模型。
- 嵌入:它们是什么以及它们为何重要是我今年在 PyBay 上关于嵌入的演讲的重要文章。这收到了大量流量,大概是因为它为“什么是嵌入?”这个问题提供了更容易理解的答案之一。
PMTiles 和 MapLibre GL
我在Hacker News上看到一篇关于Protomaps的帖子。这绝对是一项非常棒的技术。
Protomaps PMTiles文件格式可让您将矢量切片捆绑在一个文件中,该文件旨在使用 HTTP 范围标头请求进行查询。
这意味着您可以在云托管上放置单个 107GB 文件,并使用它高效地向客户端提供矢量地图,仅获取当前地图区域所需的数据。
更好的是,您可以创建自己的较大地图子集,仅覆盖您关心的区域。
我在我的家乡半月湾进行了尝试,结果仅在 2MB 文件中就获得了整个城镇的建筑轮廓级矢量图!
您可以在simonw.github.io/hmb-map上查看结果(其中还包括Overture 地图中的企业列表标记)。
有关我如何构建它的更多详细信息,包括使用 Vite 作为构建工具和使用MapLibre GL JavaScript 库来提供地图服务,请参阅我的 TIL使用 PMTiles 和 maplibre-gl 提供自定义矢量 Web 地图。
我对此感到非常兴奋:我们现在能够使用公开许可的数据完全自行托管世界上任何位置的矢量地图,而无需依赖于我们自己的静态文件托管网络服务器以外的任何东西。
llm-gpt4all
这是一个很小的版本——实际上是一行代码的更改——但具有巨大的潜在影响。
Nomic AI 的GPT4All是一个非常酷的项目。他们将自己的重点描述为“一个免费使用、本地运行、具有隐私意识的聊天机器人。不需要 GPU 或互联网。” – 他们采用了llama.cpp (和其他库)并将其包装在更好的体验中,并配有 Windows、macOS 和 Ubuntu 安装程序。
在底层,它主要是 Python,Nomic 做得非常出色,将 Python 核心发布为可安装的 Python 包– 这意味着您可以直接pip install gpt4all
来获得运行本地语言模型所需的几乎所有内容!
与替代 Python 库MLC和llama-cpp-python不同,Nomic 已经完成了将编译的二进制轮发布到 PyPI 的工作…这意味着pip install gpt4all
无需编译器工具链或任何额外步骤即可工作!
自从我在 7 月份首次通过插件添加替代模型后端以来,我的LLM工具就有了llm-gpt4all插件。不幸的是,它吐出了我无法隐藏的奇怪的调试信息(这个问题仍然影响 llm-llama-cpp )。
Nomic 已经解决了这个问题!
因此, llm-gpt4all
现在是我推荐的用于开始运行本地 LLM 的插件:
pipx 安装 llm
llm安装llm-gpt4all
llm -m Mistra-7b-instruct-v0 “关于鹈鹕的十个事实”
最新的插件现在还可以在 macOS 上使用 GPU,这是 Nomic在 9 月份发布的一个重要功能。
sqlite-迁移
sqlite-migrate是我的插件,它向sqlite-utils添加了一个简单的迁移系统,用于以受控、可重复的方式将更改应用到数据库模式。
Alex Garcia 在处理具有重叠迁移名称的多个迁移集的方式中发现了一个错误,该错误现已在sqlite-migrate 0.1b0中修复。
具有讽刺意味的是,修复涉及更改_sqlite_migrations
表的架构,该表用于跟踪已应用哪些迁移……这是系统的一部分,本身不由自己的迁移系统管理!我必须实施条件检查来检查表是否需要更新。
最近 Hacker News 上有关 SQLite 的帖子包含大量关于运行迁移困难的抱怨,因为缺乏核心ALTER TABLE
实现的功能。
sqlite-migrate
和sqlite-utils
中的table.transform() 方法的组合为这个问题提供了一个非常强大的解决方案。显然我需要付出更多的努力来推广它!
LLM 的自制麻烦
我开始收到各种 LLM 项目的令人困惑的错误报告,所有这些都归结为未能安装依赖于 PyTorch 的插件。
事实证明,Homebrew 的 LLM 包上周已升级到 Python 3.12 …但 PyTorch尚未可用于 Python 3.12 。
这意味着虽然从 Homebrew 安装的基本 LLM 工作正常,但尝试安装像我的新llm-embed-jina插件这样的东西会失败并出现奇怪的错误。
我不确定解决这个问题的最佳方法。目前我已经删除了使用 Homebrew 安装的建议,并在一些地方将其替换为pipx 。我有一个悬而未决的问题,需要为此找到更好的解决方案。
调试这个问题的难度促使我发布了一个我已经考虑了一段时间的新插件: llm-python 。
安装此插件会添加一个新的llm python
命令,该命令在与 LLM 相同的虚拟环境中运行 Python 解释器 – 如果您通过pipx
或 Homebrew 安装了 LLM 并且不知道该虚拟环境位于何处,则该命令非常有用。
这对于调试非常有用:我可以要求人们运行llm python -c 'import sys; print(sys.path)'
例如,找出他们的 Python 路径是什么样的。
它也有望作为未来LLM Python 库教程的工具。我可以告诉人们pipx install llm
然后运行llm python
来获取已安装库的 Python 解释器,而无需直接处理虚拟环境。
在 datasette-edit-schema 中添加和删除索引
我们正在根据预览版用户的反馈对 Datasette Cloud 进行迭代。其中一个请求是能够在较大的表中添加和删除索引,以帮助加快分面速度。
datasette-edit-schema添加了该功能。
该插件包含此脚本,用于使用shot-scraper自动更新自述文件中的屏幕截图。这是最新的结果:
本周发布
- sqlite-迁移 0.1b0 – 2023-10-27
一个简单的SQLite数据库迁移系统,基于sqlite-utils - llm-python 0.1 – 2023-10-27
“llm python”是在LLM虚拟环境中运行Python解释器的命令 - LLM-嵌入-jina 0.1.2 – 2023-10-26
来自 Jina AI 的嵌入模型 - 数据集编辑架构 0.7 – 2023-10-26
用于修改表模式的数据集插件 - 数据集-ripgrep 0.8.2 – 2023-10-25
使用 ripgrep 搜索代码的 Web 界面,作为 Datasette 插件构建 - llm-gpt4all 0.2 – 2023-10-24
LLM 插件添加了对 GPT4All 模型集合的支持
直到本周
- 一个简单的两列 CSS 网格– 2023-10-27
- 使用 PMTiles 和 maplibre-gl 提供自定义矢量网络地图– 2023-10-24
- 为使用 GitHub Pages 中的 Vite 构建的 JavaScript 项目提供服务– 2023-10-24
原文: http://simonwillison.net/2023/Oct/30/weeknotes/#atom-everything