跳转到主要内容
大多数数据库 AI 工作都遵循同一种模式:读取行,发送给模型,等待, 再把答案写回去。vsql_ai 通过从 SQL 直接调用模型省去了中间环节。 两个函数就能覆盖这些工作,一个用于提示,一个用于嵌入。 提示函数可用于 Anthropic Claude、Google Gemini、OpenAI,或通过 Ollama 在本地运行的模型。嵌入函数可用于除 Anthropic 之外的所有这些提供商。

安装

如果您使用安装脚本、Docker 镜像或发行版压缩包安装了 VillageSQL, vsql_ai.veb 已经位于服务器的 lib/veb/ 目录中。 用一条语句将它安装到服务器中:
确认它已存在:
要自行构建,请按照存储库中的 构建说明进行操作。

新增内容

provider 为 anthropic、google、openai 或 local。本地模型通过 Ollama 运行,API 密钥留空即可。ai_embedding 支持 Google、OpenAI 和 本地模型。

示例

向本地模型提问:
模型用自己的措辞回答,因此您得到的回复会与这里的不同。 把文本转换成向量并检查它的宽度:
托管提供商使用相同的调用,并附上密钥:
在 VillageSQL 0.0.6 及更早版本上,结果带有 binary 字符集, 由此产生两个后果。JSON 函数或 JSON 列会拒绝它,因此上面的嵌入示例 在这些版本上会失败并报 ERROR 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'.。在 JSON_OBJECT() 或 JSON_ARRAY() 内部它会被接受, 但会被 base64 编码,因此 SELECT JSON_OBJECT('v', ai_prompt(...)) 得到 {"v": "base64:type15:UGFyaXMu"}。在这些版本上,请用 CONVERT(... USING utf8mb4) 包装调用。在 0.0.7 及更高版本上不需要这样做, 上面的示例可以按原样运行。
每次调用都会在模型回答期间阻塞其语句,并且每次调用都按提供商的收费 计费。对大表逐行调用既慢又昂贵。保存在变量中的密钥不会出现在调用模型 的语句里,但保存它的 SET 语句会连同密钥一起写入查询日志。

另请参阅