概述
在 Kinetica LLM 工作流中,您需要在数据库中创建一个 LLM 上下文,其中包含推理所需的信息,包括表、注解、规则和样本。调用ChatKinetica.load_messages_from_context() 将从数据库中检索上下文信息,以便创建聊天提示。
聊天提示由一个 SystemMessage 以及包含样本(即问题/SQL 对)的 HumanMessage/AIMessage 对组成。您可以向该列表追加更多样本对,但它并非用于实现典型的自然语言对话。
当您从聊天提示创建链并执行时,Kinetica LLM 将根据输入生成 SQL。您还可以选择使用 KineticaSqlOutputParser 来执行 SQL 并将结果作为 dataframe 返回。
目前支持以下 2 个 LLM 用于 SQL 生成:
- Kinetica SQL-GPT:该 LLM 基于 OpenAI ChatGPT API。
- Kinetica SqlAssist:该 LLM 专为与 Kinetica 数据库集成而构建,可在安全的客户本地环境中运行。
前提条件
开始之前,您需要一个 Kinetica DB 实例。如果没有,可以获取免费开发版实例。 您需要安装以下包…数据库连接
您必须在以下环境变量中设置数据库连接。如果使用虚拟环境,可以在项目的.env 文件中设置:
KINETICA_URL:数据库连接 URL(例如http://localhost:9191)KINETICA_USER:数据库用户名KINETICA_PASSWD:安全密码。
KineticaChatLLM 实例,则说明连接成功。
创建测试数据
在生成 SQL 之前,我们需要创建一个 Kinetica 表和一个可对该表进行推理的 LLM 上下文。创建一些虚假用户档案
我们将使用faker 包创建一个包含 100 条虚假档案的 dataframe。
从 dataframe 创建 Kinetica 表
创建 LLM 上下文
您可以使用 Kinetica Workbench UI 创建 LLM 上下文,也可以使用CREATE OR REPLACE CONTEXT 语法手动创建。
这里我们使用引用所创建表的 SQL 语法来创建上下文。
使用 LangChain 进行推理
在以下示例中,我们将基于前面创建的表和 LLM 上下文创建一个链。该链将生成 SQL 并以 dataframe 形式返回结果数据。从 Kinetica 数据库加载聊天提示
load_messages_from_context() 函数将从数据库中检索上下文并将其转换为聊天消息列表,用于创建 ChatPromptTemplate。
创建链
该链的最后一个元素是KineticaSqlOutputParser,它将执行 SQL 并返回 dataframe。这是可选的,如果省略则只返回 SQL。
生成 SQL
我们创建的链将以问题作为输入,并返回包含生成的 SQL 和数据的KineticaSqlResponse。问题必须与用于创建提示的 LLM 上下文相关。
将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时解答。

