Files
dify-docs/zh/use-dify/nodes/knowledge-retrieval.mdx
2026-02-13 00:29:37 +08:00

125 lines
5.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 知识检索
icon: "database"
---
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/nodes/knowledge-retrieval)。</Note>
使用知识检索节点将已有知识库集成到你的工作流中。该节点在指定知识库中检索与查询相关的信息,并将检索结果作为上下文内容输出,供下游节点(如 LLM使用。
以下是在对话流中使用知识检索节点的示例:
1. **用户输入**节点收集用户查询。
2. **知识检索**节点在选定的知识库中搜索与用户查询相关的内容,并输出检索结果。
3. **LLM** 节点根据用户查询和检索到的知识生成响应。
4. **回答**节点将 LLM 的响应返回给用户。
![知识检索节点用例](/images/knowledge_retrieval_node_example.png)
使用知识检索节点前,请确保至少有一个可用的知识库。了解如何创建知识库,请参阅[知识库](/zh/use-dify/knowledge/readme#创建知识库)。
<Info>
在 Dify Cloud 上,知识检索操作受订阅计划的频率限制。详见[知识库请求频率限制](/zh/use-dify/knowledge/knowledge-request-rate-limit)。
</Info>
## 配置知识检索节点
要使知识检索节点正常工作,你需要指定:
- *检索什么*(查询内容)
- *在哪里检索*(知识库)
- *如何处理检索结果*(节点级检索设置)
你还可以使用文档元数据来启用基于筛选的检索,进一步提升检索精度。
### 指定查询内容
设置节点需要在选定知识库中检索的查询内容。
- **查询文本**:选择一个文本变量。例如,在对话流中使用 `userinput.query` 引用用户输入,或在工作流中使用自定义的文本类型用户输入变量。
- **查询图片**:选择一个图片变量,例如用户通过用户输入节点上传的图片,通过图片进行检索。图片大小限制为 2 MB。
<Tip>
对于自托管部署,可通过环境变量 `ATTACHMENT_IMAGE_FILE_SIZE_LIMIT` 调整图片大小限制。
</Tip>
<Info>
当添加了至少一个多模态知识库时,才会出现**查询图片**选项。
此类知识库带有 **Vision** 标签,表示其使用了多模态嵌入模型。
</Info>
### 选择检索的知识库
添加一个或多个已有知识库,供节点检索与查询相关的内容。
当添加了多个知识库时,会同时从所有知识库中检索,然后合并结果并根据[节点级检索设置](#配置节点级检索设置)进行处理。
<Info>
带有 **Vision** 标签的知识库支持跨模态检索——基于语义相关性同时检索文本和图片。
</Info>
你可以点击已添加知识库旁的**编辑**图标来修改其[设置](/zh/use-dify/knowledge/manage-knowledge/introduction)。
### 配置节点级检索设置
进一步调整节点在从知识库获取检索结果后的处理方式。
<Info>
检索设置分为知识库级和知识检索节点级两层。
可以将其理解为两道连续的筛选:知识库设置决定初始结果池,节点设置进一步重排或缩小结果范围。
</Info>
- **Rerank 设置**
- **权重分数**:重排时语义相似度与关键词匹配的相对权重。语义权重越高越偏向语义相关性,关键词权重越高越偏向精确匹配。
<Info>
仅当所有已添加的知识库均为高质量模式时,才可使用**权重分数**。
</Info>
- **Rerank 模型**:使用 Rerank 模型根据与查询的相关性对所有结果重新评分和排序。
<Note>
如果添加了多模态知识库,请同时选择多模态 Rerank 模型(带有 **Vision** 标签)。否则,检索到的图片将被排除在重排序和最终输出之外。
</Note>
- **Top K**:重排后返回的最大结果数。选择 Rerank 模型时,该值将根据模型的最大输入容量(模型一次可处理的文本量)自动调整。
- **Score 阈值**:返回结果的最低相似度分数。低于该阈值的结果将被排除。较高的阈值意味着更严格的相关性,较低的阈值则包含更广泛的匹配。
### 启用元数据过滤
使用已有的[文档元数据](/zh/use-dify/knowledge/metadata)将检索范围限定在知识库内的特定文档,以提升检索精度。
启用元数据过滤后,知识检索节点仅搜索符合指定元数据条件的文档,而非整个知识库。这在内容多样的大型知识库中尤其有用。
## 输出
知识检索节点将检索结果输出为名为 `result` 的变量,它是一个包含检索到的文档分段的数组,包含内容、元数据、标题和其他属性。
当检索结果包含图片附件时,`result` 变量还包含一个名为 `files` 的字段,其中包含图片详情。
## 与 LLM 节点搭配使用
要在 LLM 节点中使用检索结果作为上下文:
1. 在**高级设置** > **上下文**中,选择知识检索节点的 `result` 变量。
2. 在系统指令中,引用 `Context` 变量。
3. 可选:如果 LLM 支持视觉能力,启用 **视觉** 以便其处理检索结果中的图片附件。
<Info>
你无需将检索结果变量指定为视觉输入。启用 **视觉** 后LLM 会自动访问检索到的图片。
</Info>
在对话流中,默认情况下引用知识的响应旁会显示引用来源。你可以在画布右上角的**功能**中关闭**引用和归属**来禁用此功能。