# 创建知识集市

创建知识集市可以让您将结构化和非结构化数据嵌入并存储在矢量数据库中。这样就可以利用语义搜索特性检索增强的上下文，将其作为检索增强生成 (RAG) 应用程序的上下文。

RAG 通过向 LLM 提供额外查询上下文来优化 LLM 输出。

## 要求

* 你需要 Qlik Talend Cloud Enterprise 订阅。

* 在 Snowflake 和 Databricks 平台上受支持。Snowflake Iceberg 不受支持。

* 需要客户管理的数据网关。

  Databricks 需要 Qlik 数据网关 - 数据移动 版本 2024.11.95 或更高版本。

## 安装 Qlik 数据网关 - 数据移动

要使用知识集市，需要连接矢量数据库和 LLM 连接，这需要安装特定的 Qlik 数据网关 - 数据移动 。有关更多信息，请参阅[设置知识集市的 Qlik 数据网关 - 数据移动](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/gateways-for-knowledge-mart.htm)。

## 查看和下载日志

您可以查看和下载知识集市的日志。有关更多信息，请参阅[故障排除 数据移动网关](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/dm-gateway-troubleshooting.htm)。

## 先决条件

您可以使用以下类型的数据任务作为知识集市的源：

* 存储

* 转换

在创建知识集市之前，您需要在源数据任务中执行以下操作：

* 用要在知识集市中使用的数据填充数据集。有关更多信息，请参阅[将数据引入数据仓库](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Onboarding/Onboarding-data.htm)。

* 创建数据集关系模型以定义源数据集之间的关系。有关更多信息，请参阅[创建数据模型](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Create-data-model.htm)。

  警告注释所有源数据集都必须具有密钥。

### 配置 Databricks 用于知识集市

如果您使用 Databricks 作为数据平台，则必须在 Databricks 中执行一些配置才能够创建知识集市。

* 在 Databricks 内创建 SQL 仓库。建议使用无服务器计算。

  您还必须为 SQL 仓库和无服务器计算配置 数据安全，以启用存储集成。

* 在向量搜索中创建端点。您在知识集市任务的向量数据库设置中引用此端点的名称。

  根据您的性能要求选择类型，标准适用于大多数用例。

  如果需要，定义一个无服务器使用策略以关联标签进行成本归因。

* 在服务中配置 Databricks 模型。

  在服务终结点下，您可使用 Databricks 中提供的 LLM 嵌入和聊天模型。务必验证您计划于数据管道中使用的模型。

  您还可为自定义模型创建服务终结点，或使用基础模型，例如 OpenAI 或 Azure OpenAI。

  嵌入模型：databricks-gte-large-en

  聊天/补全模型：databricks-meta-llama-3-1-405b-instruct

## 限制

使用符合所有这些条件的源数据集时存在局限性：

* 通过 SQL 转换或转换流创建

* 非物化

* 历史数据存储（类型 2）已关闭

这些数据集被认为在每次运行时都会更新，这可能会影响效率和成本。您可以通过以下方式缓解这种情况：

* 更改要物化的源数据集。

* 使用显式数据集转换

* 创建转换多个数据集的全局规则。

知识集市任务只能在使用相同数据平台类型的项目之间导出和导入。从 Snowflake 导出包含知识集市任务的项目并将其导入 Databricks，或者从 Databricks 导出并导入 Snowflake，是不支持的。

### 受支持的编码格式

您的文件必须采用 UTF-8 编码。若使用其他格式，可能会被错误解读。

信息注释Qlik 添加了 2 个转换规则，可以从输出中移除所有二进制内容：QLIK\_\_REMOVE\_BLOB\_COLUMNS 和 QLIK\_\_REMOVE\_BYTES\_COLUMNS。

### 受支持的字符

文件和文件夹名称可包含以下字符：

* [0-9]、[a-Z]、[A-Z]
* ! - \_ . \* ' ()

可能还支持其他特殊字符，但由于特殊字符的处理很重要，建议只使用上表中的字符。

### 关系

* 无法将两个数据集的数据关联起来。创建一个转换任务，在数据模型中定义关系，并将转换任务用做任务的源。

* 当两个数据集在数据模型中关联时，即使只选择了其中一个数据集，任务中也会同时提供这两个数据集。

## 删除任务

如果数据任务未运行，并且同一项目中没有下游任务依赖项，则可以删除该数据任务。

* 在项目的管道项目视图中，单击任务上的the 删除 icon，然后选择。

此任务创建的工件（表和视图）也将被删除，除非您选择保留它们。

信息注释请记住，您保留的工件将不再由该任务更新。

如果任务设置为删除并创建索引，则仅当您选择删除工件时，才会删除索引。如果您选择保留工件，则索引将保留。

## 更改连接或数据网关

如果更改了矢量连接或者矢量数据网关，则必须重新准备任务。

## 故障排除

### 文件知识超市无法识别移动至 OneDrive 的文件

如果使用保留旧文件创建和修改日期的选项将文件移动或同步至 OneDrive，则文件不会被识别为新文件。

将文件修改日期更改为当前日期。

### 使用 Pinecone 时发生运行时错误

Pinecone 不支持元数据列中的 NULL 值。结果将是运行时错误。

* 在知识市场之前的转换中，将 NULL 值转换成其他值，例如空字符串或单词 NULL。

* 使用另一矢量数据库。

* 不要将列用作元数据。