# 知识检索
从知识库中检索相关的知识片段。支持三种检索方式:向量检索(语义相似度)、关键词检索(全文匹配)和混合检索(两者结合)。可选启用 AI 摘要功能,对检索结果生成简洁的回答。
# 创建知识库
在使用知识检索之前,需要先在【知识库管理】中创建知识库。创建时需配置以下选项:
名称:知识库的名称。
描述:知识库的描述说明。
文件:上传要索引的文档文件。
LLM 凭据:选择一个 LLM API Key 凭据,该提供商的嵌入模型将用于对文档内容进行向量化。可在【凭据管理】中创建 LLM API Key 凭据。
向量数据库:选择用于存储嵌入向量的向量数据库,默认提供内置向量数据库(
builtin-vec-db)。分块大小(Chunk Size):每个文档分块的最大字符数,默认 1024。
分块重叠(Chunk Overlap):相邻分块之间重叠的字符数,默认 50。
分隔符(Separator):用于分割文档的分隔符,默认
\n\n(双换行)。Top K:检索时默认返回的片段数量。
分数阈值(Score Threshold):检索结果的最小相关度分数阈值。
创建知识库后,系统会自动执行以下操作:
- 根据配置的分块大小、重叠和分隔符,将上传的文档分割为多个片段。
- 使用所选 LLM 提供商的嵌入模型为每个片段生成嵌入向量。
- 将向量存储到向量数据库中,用于语义检索。
- 为每个片段构建全文索引,用于关键词检索。
您可以随时查看知识库的分片详情,也可以更新或删除知识库。
# 入参
Knowledge(必填):选择要检索的知识库。知识库在【知识库管理】中创建和管理,可上传文档并配置分块策略。
Input(必填):要在知识库中搜索的查询文本。可使用变量表达式集成其他应用节点的输出。
Search Method:检索算法,默认为
vector。方法 说明 vector 语义向量检索 — 使用嵌入模型查找语义相似的文档,适合自然语言查询。 keyword 全文关键词检索 — 查找包含查询关键词的文档,适合精确术语匹配。 hybrid 混合检索 — 结合向量检索和关键词检索,加权评分(向量权重 0.7,关键词权重 0.3),适合综合检索。 Top K:返回的最大知识片段数量。
LLM Model:选择用于 AI 摘要的大语言模型。启用 AI 摘要后,检索到的文档将由该模型总结为简洁回答。
AI Summarize:是否启用 AI 摘要。启用后,大语言模型将根据检索到的知识片段生成摘要回答。
# 出参
返回包含 AI 生成的回答(如启用摘要)和检索到的文档片段列表:
{
"answer": "法国的首都是巴黎,以埃菲尔铁塔闻名。",
"docs": [
{
"segmentId": 1,
"score": 0.95,
"pageContent": "巴黎是法国的首都,以埃菲尔铁塔闻名..."
},
{
"segmentId": 5,
"score": 0.82,
"pageContent": "法国是西欧国家,首都巴黎..."
}
]
}
| 字段 | 说明 |
|---|---|
| answer | AI 生成的摘要回答(未启用 AI 摘要时为空) |
| docs | 检索到的知识片段数组 |
| docs[].segmentId | 知识库中的片段 ID |
| docs[].score | 相关度评分(0–1,越高越相关) |
| docs[].pageContent | 知识片段的文本内容 |
# 工作原理
# 向量检索
- 输入查询通过配置的 LLM 提供商的嵌入模型转换为向量。
- 将该向量与知识库中预索引的文档向量进行对比。
- 返回余弦相似度最高的 Top K 个片段。
# 关键词检索
- 输入查询使用支持中英文的 Unicode 分词器进行分词。
- 对索引的文档片段执行全文搜索。
- 返回相关度最高的 Top K 个匹配片段。
# 混合检索
- 同时执行向量检索和关键词检索(各检索 2×TopK 条结果)。
- 按 SegmentID 合并结果。
- 计算加权最终得分:
0.7 × 向量分数 + 0.3 × 关键词分数。 - 按最终得分降序排序,返回 Top K 个片段。