配置
Knowlith 插件提供了丰富的配置选项,允许你根据自己的需求定制 AI 功能、知识库和向量存储等。
交互式配置生成器
使用下面的工具可以快速生成 Knowlith 配置文件:
基础配置 (config.yml)
配置预览 (config.yml)
# config.yml debug: true
配置文件说明
主要的配置文件位于服务器的 plugins/Knowlith/ 目录下。
主要配置文件
以下是 Knowlith 使用的主要配置文件及其用途:
config.yml: 插件的主配置文件,通常包含一些全局设置(例如调试模式)。modules/llm.yml: 配置 AI 大语言模型提供商(如 SiliconFlow)和具体的模型信息(如 API Key, Base URL, 模型 ID)。modules/embedding.yml: 配置用于文本向量化的 Embedding 模型提供商和模型信息。modules/vector.yml: 配置向量数据库的类型和连接信息(支持内存 JSON 文件或 MySQL)。modules/knowledge.yml: 定义知识库,包括知识库的名称、描述、使用的 Embedding 模型以及知识源(例如本地文件目录)。modules/qa.yml: 配置独立的 QA 问答功能,包括默认模型和引用的知识库。
API 密钥配置
为了安全起见,建议使用环境变量来配置 API 密钥。在配置文件中,你可以使用 ${YOUR_ENV_VARIABLE_NAME} 的格式来引用环境变量。
例如,在 modules/llm.yml 中配置 SiliconFlow 的 API Key:
providers:
siliconflow:
# ... 其他配置
apiKey: ${SILICONFLOW_API_KEY}
然后在启动服务器之前,设置名为 SILICONFLOW_API_KEY 的环境变量。
详细配置项
以下是每个主要配置文件的详细说明和示例:
config.yml
插件的主配置文件。
# 是否启用调试模式,输出更详细的日志信息
debug: true
modules/llm.yml
配置 AI 大语言模型。
# AI服务配置
# 默认使用的聊天模型 ID (对应下面 models 中的一个 key)
default-model: siliconflow-deepseek-v3
# 提供商配置
providers:
# 硅基流动提供商示例
siliconflow:
name: "硅基流动" # 提供商名称 (可选)
type: openai # API 格式类型,硅基流动兼容 OpenAI 格式
baseUrl: https://api.siliconflow.cn/v1 # 提供商 API 的基础 URL
apiKey: ${SILICONFLOW_API_KEY} # API 密钥,推荐使用环境变量
# 模型配置
models:
# 硅基流动模型示例
siliconflow-deepseek-v3:
id: "deepseek-ai/DeepSeek-V3" # 实际请求时发送给 API 的模型 ID
provider: siliconflow # 此模型使用的提供商 ID (对应上面 providers 中的一个 key)
name: "DeepSeek-V3" # 模型显示名称 (可选)
description: "硅基流动提供的DeepSeek-V3模型" # 模型描述 (可选)
modules/embedding.yml
配置文本 Embedding 模型。
# 嵌入服务配置
# 默认使用的 Embedding 模型 ID (对应下面 models 中的一个 key)
default-model: siliconflow-bge-m3
# 缓存配置
cache:
enabled: true # 是否启用 Embedding 结果缓存
max-size: 1000 # 最大缓存条目数
# 提供商配置
providers:
# 硅基流动提供商示例
siliconflow:
type: openai # API 格式类型
api-key: ${SILICONFLOW_API_KEY} # API 密钥
base-url: https://api.siliconflow.cn/v1 # API 基础 URL
# 模型配置
models:
# 硅基流动模型示例
siliconflow-bge-m3:
id: "BAAI/bge-m3" # 实际请求使用的模型 ID
provider: siliconflow # 使用的提供商 ID
dimension: 1024 # 模型的向量维度,必须准确填写
name: "硅基-bge-m3" # 模型显示名称 (可选)
description: "硅基流动提供的BGE-M3嵌入模型" # 模型描述 (可选)
modules/vector.yml
配置向量数据库。
# 向量存储配置
# 默认向量存储类型
# 可选值: memory (目前仅支持内存)
default-store: memory
# 内存向量存储配置
memory:
# 后端持久化类型: json 或 mysql
backend: mysql
# JSON 后端配置 (如果 backend 为 json)
json:
# 存储目录 (相对于插件数据文件夹 plugins/Knowlith/)
directory: "vectors_data"
# MySQL 后端配置 (如果 backend 为 mysql)
mysql:
host: "localhost" # MySQL 服务器地址
port: "3306" # MySQL 服务器端口
database: "minecraft" # 数据库名称
username: "root" # 数据库用户名
password: "root" # 数据库密码
modules/knowledge.yml
定义知识库及其知识源。
# 知识库定义
knowledges:
# 知识库 ID (唯一标识符,将用于向量存储区分)
默认知识库:
name: 默认知识库123 # 知识库显示名称
description: 一个默认的知识库 # 知识库描述
# 此知识库使用的 Embedding 模型 ID (对应 embedding.yml 中的一个 key)
embedding-model: siliconflow-bge-m3
# 知识源列表
sources:
# 知识源 ID (在当前知识库内唯一)
QA本地知识库:
# 知识源类型: file_system (本地文件系统), text (直接文本) 等
type: file_system
path: ./docs/default
modules/qa.yml
配置独立的 QA 问答功能。
# QA问答模块配置
# QA 功能默认使用的聊天模型 ID (对应 llm.yml 中的一个 key)
default-model: siliconflow-deepseek-v3
# QA 功能默认引用的知识库 ID 列表 (对应 knowledge.yml 中的 key)
# 只有在此列表中的知识库才会被 QA 功能引用
knowledge-bases:
- 默认知识库
# 检索配置
retrieval:
# 从每个知识库检索的最大相关文档数量
limit: 5
# 最低相关度分数阈值 (0.0 到 1.0 之间)
min-score: 0.5
# 是否在最终的 AI 回答提示中包含引用来源信息
include-references: true
# QA 功能使用的系统提示词 (System Prompt)
# 用于指导 AI 如何基于检索到的知识库内容回答问题
system-prompt: |-
你是一个AI助手。你的核心职责是根据我提供的知识库内容,回答用户的问题。
请严格遵循以下指令:
1. **知识库是唯一信息源:** 你的所有回答必须严格基于提供的知识库内容。禁止使用任何知识库之外的信息。
2. **准确性与诚实:** 必须确保答案准确。如果知识库中明确没有相关信息来回答用户的问题,请直接、诚实地回答,例如说:“根据我现有的知识,我找不到关于这个问题的具体信息。” 或者 “我目前没有这方面的信息。” **绝对不允许猜测或编造答案。**
3. **简洁明了:** 回答应抓住核心,力求简洁、清晰。
4. **纯文本输出格式:** 所有回复必须是纯文本格式。**严禁使用任何Markdown标记**,包括但不限于:加粗 (`** **` 或 `__ __`)、斜体 (`* *` 或 `_ _`)、列表项 (`-`, `*`, `+`, `1.`, `2.` 等)、标题 (`#`, `##` 等)、代码块 (```)、行内代码 (`)、引用块 (`>`)、链接 (`[ ]( )`)、图片 (``) 或水平分割线 (`---`, `***`)。
5. **自然表达,隐藏限制:** 你的回答应该听起来自然流畅,就像正常的对话。**请绝对不要在你的回复中提及任何关于“纯文本”、“无Markdown”、“知识库限制”或“Minecraft环境”等格式或背景要求。** 就像你天生就是这样回答问题一样,直接给出基于知识库的纯文本信息。
请专注于理解用户问题,并在知识库范围内提供最准确、简洁的纯文本回答。