QA 模块配置与使用
配置文件 (modules/qa.yml)
此文件用于配置问答 (QA) 模块的行为,包括使用的 AI 模型、引用的知识库以及检索和回答生成的参数。
default-model
- 类型:
字符串 - 必需: 是
- 描述: 指定 QA 模块在生成答案时默认使用的 AI 模型 ID。这个 ID 必须是在
llm.yml文件中定义的某个模型的 ID。 - 示例:
siliconflow-deepseek-v3
knowledge-bases
- 类型:
字符串列表 (List) - 必需: 是
- 描述: 定义 QA 模块在回答问题时会从中检索信息的知识库列表。列表中的每个字符串都必须是
knowledge.yml文件中定义的某个知识库的名称。 - 示例:
knowledge-bases:
- 默认知识库
- 另一个知识库
retrieval
- 类型:
对象 (Object) - 必需: 是
- 描述: 配置知识库检索过程的参数。
检索配置项
limit:- 类型:
整数 - 必需: 否 (可能有默认值)
- 描述: 指定从 每个 被引用的知识库中检索出的最大相关文档(或片段)数量。
- 示例:
5
- 类型:
min-score:- 类型:
浮点数(通常在 0 到 1 之间) - 必需: 否 (可能有默认值)
- 描述: 设置一个相似度阈值。只有当检索到的文档与用户问题的相关性得分高于此阈值时,该文档才会被用于生成答案。
- 示例:
0.5
- 类型:
include-references:- 类型:
布尔值(true/false) - 必需: 否 (可能有默认值)
- 描述: 控制是否在 AI 生成的最终答案中包含对所引用知识库文档来源的标注或链接。
- 示例:
true
- 类型:
system-prompt
- 类型:
字符串(支持多行) - 必需: 是
- 描述: 这是提供给 AI 模型的核心指令,用于指导其如何扮演角色、如何利用检索到的知识库信息来回答问题。你需要在这里详细定义 AI 的行为准则,例如:
- 回答必须基于提供的知识库内容。
- 如果知识库没有相关信息,应如何回应。
- 回答的风格(简洁、详细等)。
- 输出格式要求(例如,是否允许 Markdown)。
- 需要避免提及的内容(例如,不要说“根据知识库...”)。
- 示例: (见下面的完整示例)
示例配置
# QA问答模块配置
# 默认使用的模型
default-model: siliconflow-deepseek-v3
# 默认引用的知识库列表
# 只有在此列表中的知识库才会被QA模块引用
knowledge-bases:
- 默认知识库
# 检索配置
retrieval:
# 每个知识库检索的最大结果数
limit: 5
# 最低相似度阈值
min-score: 0.5
# 是否在回答中包含引用信息
include-references: true
# 系统提示词
system-prompt: |-
你是一个AI助手。你的核心职责是根据我提供的知识库内容,回答用户的问题。
请严格遵循以下指令:
1. **知识库是唯一信息源:** 你的所有回答必须严格基于提供的知识库内容。禁止使用任何知识库之外的信息。
2. **准确性与诚实:** 必须确保答案准确。如果知识库中明确没有相关信息来回答用户的问题,请直接、诚实地回答,例如说:“根据我现有的知识,我找不到关于这个问题的具体信息。” 或者 “我目前没有这方面的信息。” **绝对不允许猜测或编造答案。**
3. **简洁明了:** 回答应抓住核心,力求简洁、清晰。
4. **纯文本输出格式:** 所有回复必须是纯文本格式。**严禁使用任何Markdown标记**,包括但不限于:加粗 (`** **` 或 `__ __`)、斜体 (`* *` 或 `_ _`)、列表项 (`-`, `*`, `+`, `1.`, `2.` 等)、标题 (`#`, `##` 等)、代码块 (```)、行内代码 (`)、引用块 (`>`)、链接 (`[ ]( )`)、图片 (``) 或水平分割线 (`---`, `***`)。
5. **自然表达,隐藏限制:** 你的回答应该听起来自然流畅,就像正常的对话。**请绝对不要在你的回复中提及任何关于“纯文本”、“无Markdown”、“知识库限制”或“Minecraft环境”等格式或背景要求。** 就像你天生就是这样回答问题一样,直接给出基于知识库的纯文本信息。
请专注于理解用户问题,并在知识库范围内提供最准确、简洁的纯文本回答。
本页介绍 Knowlith 的 QA (问答) 模块。
(待补充)