diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..beb4ab6b Binary files /dev/null and b/.DS_Store differ diff --git a/docs.json b/docs.json index 7a562537..656d4669 100644 --- a/docs.json +++ b/docs.json @@ -1442,6 +1442,11 @@ } ] }, + "contextual": { + "options": [ + "copy" + ] + }, "redirects": [ { "source": "plugins/schema-definition/model", diff --git a/en/guides/knowledge-base/indexing-and-retrieval/rerank.mdx b/en/guides/knowledge-base/indexing-and-retrieval/rerank.mdx index 8075614b..ca45d75a 100644 --- a/en/guides/knowledge-base/indexing-and-retrieval/rerank.mdx +++ b/en/guides/knowledge-base/indexing-and-retrieval/rerank.mdx @@ -10,7 +10,7 @@ version: 'English' **重排序模型会计算候选文档列表与用户问题的语义匹配度,根据语义匹配度重新进行排序,从而改进语义排序的结果**。其原理是计算用户问题与给定的每个候选文档之间的相关性分数,并返回按相关性从高到低排序的文档列表。常见的 Rerank 模型如:Cohere rerank、bge-reranker 等。 - + 在大多数情况下,在重排序之前会有一次前置检索,这是由于计算查询与数百万个文档之间的相关性得分将会非常低效。所以,**重排序一般都放在搜索流程的最后阶段,非常适合用于合并和排序来自不同检索系统的结果**。 @@ -30,7 +30,7 @@ version: 'English' Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere”页面填入 Rerank 模型的 API 秘钥: - + ### @@ -46,7 +46,7 @@ Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere” 进入“数据集->创建数据集->检索设置”页面并在添加 Rerank 设置。除了在创建数据集可以设置 Rerank ,你也可以在已创建的数据集设置内更改 Rerank 配置,在应用编排的数据集召回模式设置中更改 Rerank 配置。 - + **TopK:** 用于设置 Rerank 后返回相关文档的数量。 @@ -57,8 +57,8 @@ Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere” 进入“提示词编排->上下文->设置”页面中设置为多路召回模式时需开启 Rerank 模型。 -查看更多关于多路召回模式的说明,[《多路召回》](/zh-cn/user-guide/knowledge-base/integrate-knowledge-within-application)。 +查看更多关于多路召回模式的说明,[《多路召回》](/zh-hans/user-guide/knowledge-base/integrate-knowledge-within-application)。 - + diff --git a/en/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx b/en/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx index 1479ca26..1543cb1b 100644 --- a/en/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx +++ b/en/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx @@ -12,7 +12,7 @@ version: 'English' 在下图中,当用户提问时 “美国总统是谁?” 时,系统并不是将问题直接交给大模型来回答,而是先将用户问题在知识库中(如下图中的维基百科)进行向量搜索,通过语义相似度匹配的方式查询到相关的内容(拜登是美国现任第46届总统…),然后再将用户问题和搜索到的相关知识提供给大模型,使得大模型获得足够完备的知识来回答问题,以此获得更可靠的问答结果。 - + **为什么需要这样做呢?** diff --git a/en/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx b/en/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx index 7cc3d174..600d3f49 100644 --- a/en/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx +++ b/en/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx @@ -6,19 +6,19 @@ version: 'English' 当用户构建知识库问答类的 AI 应用时,如果在应用内关联了多个知识库,此时需要应用 Dify 的召回策略决定从哪些知识库中检索内容。 - + ### 召回设置 根据用户意图同时匹配所有知识库,从多路知识库查询相关文本片段,经过重排序步骤,从多路查询结果中选择匹配用户问题的最佳结果,需配置 Rerank 模型 API。在多路召回模式下,检索器会在所有与应用关联的知识库中去检索与用户问题相关的文本内容,并将多路召回的相关文档结果合并,并通过 Rerank 模型对检索召回的文档进行语义重排序。 -在多路召回模式下,建议配置 Rerank 模型。你可以阅读 [重排序](/zh-cn/user-guide/knowledge-base/indexing-and-retrieval/rerank) 了解更多。 +在多路召回模式下,建议配置 Rerank 模型。你可以阅读 [重排序](/zh-hans/user-guide/knowledge-base/indexing-and-retrieval/rerank) 了解更多。 以下是多路召回模式的技术流程图: - + 由于多路召回模式不依赖于模型的推理能力或知识库描述,该模式在多知识库检索时能够获得质量更高的召回效果,除此之外加入 Rerank 步骤也能有效改进文档召回效果。因此,当创建的知识库问答应用关联了多个知识库时,我们更推荐将召回模式配置为多路召回。 diff --git a/en/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx b/en/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx index a418df0a..6acd7b70 100644 --- a/en/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx +++ b/en/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx @@ -24,7 +24,7 @@ Click on Knowledge in the main navigation bar of Dify. On this page, you can see * The upload size limit for a single document is 15MB; - + *** @@ -59,7 +59,7 @@ Two strategies are supported: The Automated mode is designed for users unfamiliar with segmentation and preprocessing techniques. In this mode, Dify automatically segments and sanitizes content files, streamlining the document preparation process. - Automatic segmentation and cleaning + Automatic segmentation and cleaning @@ -81,7 +81,7 @@ Two strategies are supported: * Delete all URLs and email addresses. - + @@ -99,14 +99,14 @@ You need to choose the **indexing method** for the text to specify the data matc The High-Quality indexing method offers three retrieval settings: vector retrieval, full-text retrieval, and hybrid retrieval. For more details on retrieval settings, please check ["Retrieval Settings"](#4-retrieval-settings). - + This mode employs an offline vector engine and keyword indexing, which reduces accuracy but eliminates additional token consumption and associated costs. The indexing method is limited to inverted indexing. For detailed specifications, please refer to the section below. - + @@ -129,7 +129,7 @@ In high-quality indexing mode, Dify offers three retrieval settings: **Definition**: The system vectorizes the user's input query to generate a query vector. It then computes the distance between this query vector and the text vectors in the knowledge base to identify the most semantically proximate text chunks. - + **Vector Search Settings:** @@ -149,7 +149,7 @@ In high-quality indexing mode, Dify offers three retrieval settings: **Definition:** Indexing all terms in the document, allowing users to query any terms and return text fragments containing those terms. - + **Rerank Model**: After configuring the API key for the Rerank model on the "Model Provider" page, you can enable the “Rerank Model” in the retrieval settings. The system will then perform semantic reordering of the retrieved document results after hybrid retrieval, optimizing the ranking results. Once the Rerank model is established, the TopK and Score Threshold settings will only take effect during the reranking step. @@ -166,7 +166,7 @@ In high-quality indexing mode, Dify offers three retrieval settings: **Definition:** This process performs both full-text search and vector search simultaneously, incorporating a reordering step to select the best results that match the user's query from both types of search outcomes. In this mode, users can specify "weight settings" without needing to configure the Rerank model API, or they can opt for a Rerank model for retrieval. - + **Weight Settings:** This feature enables users to set custom weights for semantic priority and keyword priority. Keyword search refers to performing a full-text search within the knowledge base, while semantic search involves vector search within the knowledge base. @@ -210,7 +210,7 @@ An inverted index is an index structure designed for rapid keyword retrieval in **TopK:** This parameter filters the text chucks that are most similar to the user's question. The system dynamically adjusts the number of snippets based on the context window size of the selected model. The default value is 3, meaning a higher value results in more text segments being retrieved. - + After specifying the retrieval settings, you can refer to [Retrieval Test/Citation Attribution](/en/guides/knowledge-base/retrieval-test-and-citation) to check the matching between keywords and content chunks. diff --git a/invalid_links_report.md b/invalid_links_report.md index 9ade9175..09edf2ad 100644 --- a/invalid_links_report.md +++ b/invalid_links_report.md @@ -841,7 +841,7 @@ | 行号 | 链接文本 | 链接 URL | |------|----------|----------| -| 6 | 快速接入 | /zh-cn/user-guide/tools/quick-tool-integration | +| 6 | 快速接入 | /zh-hans/user-guide/tools/quick-tool-integration | ### 文件: zh-hans/guides/tools/extensions/code-based/moderation.mdx @@ -853,33 +853,33 @@ | 行号 | 链接文本 | 链接 URL | |------|----------|----------| -| 6 | API 扩展 | /zh-cn/user-guide/tools/extensions/api-based/api-based-extension | -| 6 | API 扩展 | /zh-cn/user-guide/tools/extensions/api-based/api-based-extension | +| 6 | API 扩展 | /zh-hans/user-guide/tools/extensions/api-based/api-based-extension | +| 6 | API 扩展 | /zh-hans/user-guide/tools/extensions/api-based/api-based-extension | ### 文件: zh-hans/guides/tools/extensions/api-based/api-based-extension.mdx | 行号 | 链接文本 | 链接 URL | |------|----------|----------| | 266 | 外部数据工具 | ../../knowledge-base/external-data-tool.md "mention" | -| 272 | 使用 Cloudflare Workers 部署 API Tools | /zh-cn/user-guide/tools/extensions/api-based/cloudflare-workers | +| 272 | 使用 Cloudflare Workers 部署 API Tools | /zh-hans/user-guide/tools/extensions/api-based/cloudflare-workers | ### 文件: zh-hans/guides/tools/community/alphavantage.mdx | 行号 | 链接文本 | 链接 URL | |------|----------|----------| -| 22 | 变量 | /zh-cn/user-guide/build-app/flow-app/variables | +| 22 | 变量 | /zh-hans/user-guide/build-app/flow-app/variables | ### 文件: zh-hans/guides/tools/dify/dall-e.mdx | 行号 | 链接文本 | 链接 URL | |------|----------|----------| -| 24 | 变量 | /zh-cn/user-guide/build-app/flow-app/variables | +| 24 | 变量 | /zh-hans/user-guide/build-app/flow-app/variables | ### 文件: zh-hans/guides/tools/dify/stable-diffusion.mdx | 行号 | 链接文本 | 链接 URL | |------|----------|----------| -| 76 | 变量 | /zh-cn/user-guide/build-app/flow-app/variables | +| 76 | 变量 | /zh-hans/user-guide/build-app/flow-app/variables | ### 文件: zh-hans/guides/management/app-management.mdx @@ -987,7 +987,7 @@ |------|----------|----------| | 41 | 支持 | user-guide/getting-started/readme/model-providers | | 85 | 提示词专家模式(已下线) | user-guide/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/ | -| 132 | "知识库" | /zh-cn/user-guide/knowledge-base/ | +| 132 | "知识库" | /zh-hans/user-guide/knowledge-base/ | ### 文件: zh-hans/guides/workflow/nodes/variable-assigner.mdx diff --git a/ja-jp/guides/knowledge-base/api-documentation/external-knowledge-api.json b/ja-jp/guides/knowledge-base/api-documentation/external-knowledge-api.json index 82a9653a..24430268 100644 --- a/ja-jp/guides/knowledge-base/api-documentation/external-knowledge-api.json +++ b/ja-jp/guides/knowledge-base/api-documentation/external-knowledge-api.json @@ -7,7 +7,7 @@ "post": { "summary": "知识召回 API", "deprecated": false, - "description": "该 API 用于连接团队内独立维护的知识库,如需了解更多操作指引,请参考阅读[连接外部知识库](/zh-cn/user-guide/knowledge-base/knowledge-base-creation/connect-external-knowledge-base)。你可以在 Authorization HTTP 头部中使用 API-Key 来验证权限,认证逻辑由开发者在检索 API 中定义,如下所示:\n\n```text\nAuthorization: Bearer {API_KEY}\n```", + "description": "该 API 用于连接团队内独立维护的知识库,如需了解更多操作指引,请参考阅读[连接外部知识库](/zh-hans/user-guide/knowledge-base/knowledge-base-creation/connect-external-knowledge-base)。你可以在 Authorization HTTP 头部中使用 API-Key 来验证权限,认证逻辑由开发者在检索 API 中定义,如下所示:\n\n```text\nAuthorization: Bearer {API_KEY}\n```", "tags": [], "requestBody": { "content": { diff --git a/ja-jp/guides/knowledge-base/indexing-and-retrieval/hybrid-search.mdx b/ja-jp/guides/knowledge-base/indexing-and-retrieval/hybrid-search.mdx index c0553edf..4432ddfa 100644 --- a/ja-jp/guides/knowledge-base/indexing-and-retrieval/hybrid-search.mdx +++ b/ja-jp/guides/knowledge-base/indexing-and-retrieval/hybrid-search.mdx @@ -33,7 +33,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 在混合检索中,你需要在数据库中提前建立向量索引和关键词索引,在用户问题输入时,分别通过两种检索器在文档中检索出最相关的文本。 - + “混合检索”实际上并没有明确的定义,本文以向量检索和关键词检索的组合为示例。如果我们使用其他搜索算法的组合,也可以被称为“混合检索”。比如,我们可以将用于检索实体关系的知识图谱技术与向量检索技术结合。 @@ -45,7 +45,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 定义:通过生成查询嵌入并查询与其向量表示最相似的文本分段。 - + **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。 @@ -59,7 +59,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 定义:索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段。 - + **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。 @@ -71,7 +71,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果,需配置 Rerank 模型 API。 - + **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。 @@ -83,7 +83,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 进入“数据集->创建数据集”页面并在检索设置中设置不同的检索模式: - + ### 数据集设置中修改检索模式 @@ -91,7 +91,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 进入“数据集->选择数据集->设置”页面中可以对已创建的数据集修改不同的检索模式。 - + ### 提示词编排中修改检索模式 @@ -99,5 +99,5 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 进入“提示词编排->上下文->选择数据集->设置”页面中可以在创建应用时修改不同的检索模式。 - + diff --git a/ja-jp/guides/knowledge-base/indexing-and-retrieval/rerank.mdx b/ja-jp/guides/knowledge-base/indexing-and-retrieval/rerank.mdx index f102548f..1f85bb37 100644 --- a/ja-jp/guides/knowledge-base/indexing-and-retrieval/rerank.mdx +++ b/ja-jp/guides/knowledge-base/indexing-and-retrieval/rerank.mdx @@ -10,7 +10,7 @@ version: '简体中文' **重排序模型会计算候选文档列表与用户问题的语义匹配度,根据语义匹配度重新进行排序,从而改进语义排序的结果**。其原理是计算用户问题与给定的每个候选文档之间的相关性分数,并返回按相关性从高到低排序的文档列表。常见的 Rerank 模型如:Cohere rerank、bge-reranker 等。 - + 在大多数情况下,在重排序之前会有一次前置检索,这是由于计算查询与数百万个文档之间的相关性得分将会非常低效。所以,**重排序一般都放在搜索流程的最后阶段,非常适合用于合并和排序来自不同检索系统的结果**。 @@ -30,7 +30,7 @@ version: '简体中文' Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere”页面填入 Rerank 模型的 API 秘钥: - + ### @@ -46,7 +46,7 @@ Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere” 进入“数据集->创建数据集->检索设置”页面并在添加 Rerank 设置。除了在创建数据集可以设置 Rerank ,你也可以在已创建的数据集设置内更改 Rerank 配置,在应用编排的数据集召回模式设置中更改 Rerank 配置。 - + **TopK:** 用于设置 Rerank 后返回相关文档的数量。 @@ -60,5 +60,5 @@ Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere” 查看更多关于多路召回模式的说明,[《多路召回》](/ja-jp/guides/knowledge-base/integrate-knowledge-within-application)。 - + diff --git a/ja-jp/guides/knowledge-base/indexing-and-retrieval/rerank.mdx.bak b/ja-jp/guides/knowledge-base/indexing-and-retrieval/rerank.mdx.bak index 0f0bab5a..71e40b50 100644 --- a/ja-jp/guides/knowledge-base/indexing-and-retrieval/rerank.mdx.bak +++ b/ja-jp/guides/knowledge-base/indexing-and-retrieval/rerank.mdx.bak @@ -10,7 +10,7 @@ version: '简体中文' **重排序模型会计算候选文档列表与用户问题的语义匹配度,根据语义匹配度重新进行排序,从而改进语义排序的结果**。其原理是计算用户问题与给定的每个候选文档之间的相关性分数,并返回按相关性从高到低排序的文档列表。常见的 Rerank 模型如:Cohere rerank、bge-reranker 等。 - + 在大多数情况下,在重排序之前会有一次前置检索,这是由于计算查询与数百万个文档之间的相关性得分将会非常低效。所以,**重排序一般都放在搜索流程的最后阶段,非常适合用于合并和排序来自不同检索系统的结果**。 @@ -30,7 +30,7 @@ version: '简体中文' Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere”页面填入 Rerank 模型的 API 秘钥: - + ### @@ -46,7 +46,7 @@ Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere” 进入“数据集->创建数据集->检索设置”页面并在添加 Rerank 设置。除了在创建数据集可以设置 Rerank ,你也可以在已创建的数据集设置内更改 Rerank 配置,在应用编排的数据集召回模式设置中更改 Rerank 配置。 - + **TopK:** 用于设置 Rerank 后返回相关文档的数量。 @@ -57,8 +57,8 @@ Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere” 进入“提示词编排->上下文->设置”页面中设置为多路召回模式时需开启 Rerank 模型。 -查看更多关于多路召回模式的说明,[《多路召回》](/zh-cn/user-guide/knowledge-base/integrate-knowledge-within-application)。 +查看更多关于多路召回模式的说明,[《多路召回》](/zh-hans/user-guide/knowledge-base/integrate-knowledge-within-application)。 - + diff --git a/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx b/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx index 7c503941..c92291ba 100644 --- a/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx +++ b/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx @@ -12,7 +12,7 @@ version: '简体中文' 在下图中,当用户提问时 “美国总统是谁?” 时,系统并不是将问题直接交给大模型来回答,而是先将用户问题在知识库中(如下图中的维基百科)进行向量搜索,通过语义相似度匹配的方式查询到相关的内容(拜登是美国现任第46届总统…),然后再将用户问题和搜索到的相关知识提供给大模型,使得大模型获得足够完备的知识来回答问题,以此获得更可靠的问答结果。 - + **为什么需要这样做呢?** diff --git a/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx b/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx index 1e80fedc..bb96708c 100644 --- a/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx +++ b/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx @@ -6,7 +6,7 @@ version: '简体中文' 当用户构建知识库问答类的 AI 应用时,如果在应用内关联了多个知识库,此时需要应用 Dify 的召回策略决定从哪些知识库中检索内容。 - + ### 召回设置 @@ -18,7 +18,7 @@ version: '简体中文' 以下是多路召回模式的技术流程图: - + 由于多路召回模式不依赖于模型的推理能力或知识库描述,该模式在多知识库检索时能够获得质量更高的召回效果,除此之外加入 Rerank 步骤也能有效改进文档召回效果。因此,当创建的知识库问答应用关联了多个知识库时,我们更推荐将召回模式配置为多路召回。 diff --git a/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx.bak b/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx.bak index 97e68f5a..036035a5 100644 --- a/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx.bak +++ b/ja-jp/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx.bak @@ -6,19 +6,19 @@ version: '简体中文' 当用户构建知识库问答类的 AI 应用时,如果在应用内关联了多个知识库,此时需要应用 Dify 的召回策略决定从哪些知识库中检索内容。 - + ### 召回设置 根据用户意图同时匹配所有知识库,从多路知识库查询相关文本片段,经过重排序步骤,从多路查询结果中选择匹配用户问题的最佳结果,需配置 Rerank 模型 API。在多路召回模式下,检索器会在所有与应用关联的知识库中去检索与用户问题相关的文本内容,并将多路召回的相关文档结果合并,并通过 Rerank 模型对检索召回的文档进行语义重排序。 -在多路召回模式下,建议配置 Rerank 模型。你可以阅读 [重排序](/zh-cn/user-guide/knowledge-base/indexing-and-retrieval/rerank) 了解更多。 +在多路召回模式下,建议配置 Rerank 模型。你可以阅读 [重排序](/zh-hans/user-guide/knowledge-base/indexing-and-retrieval/rerank) 了解更多。 以下是多路召回模式的技术流程图: - + 由于多路召回模式不依赖于模型的推理能力或知识库描述,该模式在多知识库检索时能够获得质量更高的召回效果,除此之外加入 Rerank 步骤也能有效改进文档召回效果。因此,当创建的知识库问答应用关联了多个知识库时,我们更推荐将召回模式配置为多路召回。 diff --git a/ja-jp/guides/knowledge-base/knowledge-and-documents-maintenance.mdx b/ja-jp/guides/knowledge-base/knowledge-and-documents-maintenance.mdx index 3d88e0fb..ecd98235 100644 --- a/ja-jp/guides/knowledge-base/knowledge-and-documents-maintenance.mdx +++ b/ja-jp/guides/knowledge-base/knowledge-and-documents-maintenance.mdx @@ -10,7 +10,7 @@ version: '简体中文' 在 Dify 团队首页中,点击顶部的 “知识库” tab 页,选择需要管理的知识库,轻点左侧导航中的**设置**进行调整。你可以调整知识库名称、描述、可见权限、索引模式、Embedding 模型和检索设置。 - + **知识库名称**,用于区分不同的知识库。 @@ -32,7 +32,7 @@ version: '简体中文' Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库内的文档、分段进行增删改查等日常管理维护操作,请参考[知识库 API 文档](/ja-jp/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api)。 - + ## 维护知识库中的文本 @@ -44,7 +44,7 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 点击 「知识库」 > 「文档列表 ,然后轻点 「 添加文件 」,即可在已创建的知识库内上传新的文档。 - + *** @@ -62,7 +62,7 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 知识库内已上传的每个文档都会以文本分段(Chunks)的形式进行存储,你可以在分段列表内查看每一个分段的具体文本内容。 - + *** @@ -78,19 +78,19 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 * **过短的文本分段**,导致语义缺失; - + * **过长的文本分段**,导致语义噪音影响匹配准确性; - + * **明显的语义截断**,在使用最大分段长度限制时会出现强制性的语义截断,导致召回时缺失内容; - + *** @@ -100,23 +100,23 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 在分段列表内点击 「 添加分段 」 ,可以在文档内自行添加一个或批量添加多个自定义分段。 - + 批量添加分段时,你需要先下载 CSV 格式的分段上传模板,并按照模板格式在 Excel 内编辑所有的分段内容,再将 CSV 文件保存后上传。 - + *** -### ![]()编辑文本分段 +### ![]()编辑文本分段 在分段列表内,你可以对已添加的分段内容直接进行编辑修改。包括分段的文本内容和关键词。 - + *** @@ -130,5 +130,5 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 - + diff --git a/ja-jp/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx b/ja-jp/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx index b1f2d79f..cedd6b40 100644 --- a/ja-jp/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx +++ b/ja-jp/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx @@ -26,7 +26,7 @@ version: '简体中文' - 单文档的上传大小限制为 15MB; - + *** @@ -61,7 +61,7 @@ version: '简体中文' 自动模式适合对分段规则与预处理规则尚不熟悉的初级用户。在该模式下,Dify 将为你自动分段与清洗内容文件。 - Automatic segmentation and cleaning + Automatic segmentation and cleaning @@ -83,7 +83,7 @@ version: '简体中文' * 删除所有 URL 和电子邮件地址; - + @@ -103,14 +103,14 @@ version: '简体中文' > 如需了解更多,请参考[《Embedding 技术与 Dify》](https://mp.weixin.qq.com/s/vmY\_CUmETo2IpEBf1nEGLQ)。 高质量索引方式提供向量检索、全文检索和混合检索三种检索设置。关于更多检索设置的说明,请阅读 [检索设置](/ja-jp/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text)。 - + 使用离线的向量引擎与关键词索引方式,降低了准确度但无需额外花费 Token,产生费用。检索方式仅提供倒排索引,详细说明请阅读[下文](/ja-jp/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion)。 - + @@ -133,7 +133,7 @@ version: '简体中文' **定义:** 向量化用户输入的问题并生成查询向量,比较查询向量与知识库内对应的文本向量距离,寻找最近的分段内容。 - + **向量检索设置:** @@ -153,7 +153,7 @@ version: '简体中文' **定义:** 关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。 - + **Rerank 模型:** 使用第三方 Rerank 模型对全文检索召回后的分段再一次进行语义重排序,优化排序结果。在“模型供应商”页面配置 Rerank 模型的 API 秘钥之后,在检索设置中打开“Rerank 模型”。 @@ -170,7 +170,7 @@ version: '简体中文' **定义:** 同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果。在此模式下可以指定“权重设置”(无需配置 Rerank 模型 API)或选择 Rerank 模型进行检索。 - + 在混合检索设置内可以选择启用**“权重设置”**或**“Rerank 模型”**。 @@ -218,7 +218,7 @@ version: '简体中文' **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。 - + 指定检索设置后,你可以参考[召回测试/引用归属](/ja-jp/guides/knowledge-base/retrieval-test-and-citation)查看关键词与内容块的匹配情况。 diff --git a/ja-jp/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx.bak b/ja-jp/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx.bak index b4d9941d..4b9e2d9e 100644 --- a/ja-jp/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx.bak +++ b/ja-jp/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx.bak @@ -19,14 +19,14 @@ version: '简体中文' - 拖拽或选中文件进行上传,批量上传的文件数量取决于[订阅计划](https://dify.ai/pricing); - 如果还没有准备好文档,可以先创建一个空知识库; -- 如果你在创建知识库时选择了使用外部数据源(Notion 或同步 Web 站点),该知识库的类型不可更改;此举是为了防止单一知识库存在多数据源而造成的管理困难。如果你需要使用多个数据源,建议创建多个知识库并使用 [多路召回](/zh-cn/user-guide/knowledge-base/indexing-and-retrieval/rerank) 模式在同一个应用内引用多个知识库。 +- 如果你在创建知识库时选择了使用外部数据源(Notion 或同步 Web 站点),该知识库的类型不可更改;此举是为了防止单一知识库存在多数据源而造成的管理困难。如果你需要使用多个数据源,建议创建多个知识库并使用 [多路召回](/zh-hans/user-guide/knowledge-base/indexing-and-retrieval/rerank) 模式在同一个应用内引用多个知识库。 **上传文档存在以下限制:** - 单文档的上传大小限制为 15MB; - + *** @@ -61,7 +61,7 @@ version: '简体中文' 自动模式适合对分段规则与预处理规则尚不熟悉的初级用户。在该模式下,Dify 将为你自动分段与清洗内容文件。 - Automatic segmentation and cleaning + Automatic segmentation and cleaning @@ -83,7 +83,7 @@ version: '简体中文' * 删除所有 URL 和电子邮件地址; - + @@ -103,14 +103,14 @@ version: '简体中文' > 如需了解更多,请参考[《Embedding 技术与 Dify》](https://mp.weixin.qq.com/s/vmY\_CUmETo2IpEBf1nEGLQ)。 高质量索引方式提供向量检索、全文检索和混合检索三种检索设置。关于更多检索设置的说明,请阅读 [检索设置](create-knowledge-and-upload-documents.md#id-4-jian-suo-she-zhi)。 - + 使用离线的向量引擎与关键词索引方式,降低了准确度但无需额外花费 Token,产生费用。检索方式仅提供倒排索引,详细说明请阅读[下文](create-knowledge-and-upload-documents.md#dao-pai-suo-yin)。 - + @@ -133,7 +133,7 @@ version: '简体中文' **定义:** 向量化用户输入的问题并生成查询向量,比较查询向量与知识库内对应的文本向量距离,寻找最近的分段内容。 - + **向量检索设置:** @@ -153,7 +153,7 @@ version: '简体中文' **定义:** 关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。 - + **Rerank 模型:** 使用第三方 Rerank 模型对全文检索召回后的分段再一次进行语义重排序,优化排序结果。在“模型供应商”页面配置 Rerank 模型的 API 秘钥之后,在检索设置中打开“Rerank 模型”。 @@ -170,7 +170,7 @@ version: '简体中文' **定义:** 同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果。在此模式下可以指定“权重设置”(无需配置 Rerank 模型 API)或选择 Rerank 模型进行检索。 - + 在混合检索设置内可以选择启用**“权重设置”**或**“Rerank 模型”**。 @@ -218,10 +218,10 @@ version: '简体中文' **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。 - + -指定检索设置后,你可以参考[召回测试/引用归属](/zh-cn/user-guide/knowledge-base/retrieval-test-and-citation)查看关键词与内容块的匹配情况。 +指定检索设置后,你可以参考[召回测试/引用归属](/zh-hans/user-guide/knowledge-base/retrieval-test-and-citation)查看关键词与内容块的匹配情况。 ## 5 完成上传 diff --git a/scripts/check_links-backup.py b/scripts/check_links-backup.py new file mode 100644 index 00000000..d5abb6af --- /dev/null +++ b/scripts/check_links-backup.py @@ -0,0 +1,228 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Link Checker for Markdown/MDX files + +This script checks both online links and relative file paths in markdown files. +It verifies that online links are accessible and that relative paths exist in the filesystem. +""" + +import re +import requests +import os +from pathlib import Path +import concurrent.futures +import argparse +import sys +from colorama import init, Fore, Style + +# Initialize colorama for cross-platform colored terminal output +init() + +class LinkChecker: + def __init__(self, base_dir, timeout=10, max_workers=10): + self.base_dir = Path(base_dir) + self.timeout = timeout + self.max_workers = max_workers + self.results = {"valid": [], "invalid": [], "skipped": []} + self.headers = { + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" + } + + def extract_links_from_markdown(self, file_path): + """Extract all links from a Markdown/MDX file, with line and column info""" + with open(file_path, 'r', encoding='utf-8') as file: + content = file.read() + + link_infos = [] + # Markdown links [text](url) + for match in re.finditer(r'\[.*?\]\((.*?)\)', content): + url = match.group(1) + start = match.start(1) + line = content.count('\n', 0, start) + 1 + col = start - content.rfind('\n', 0, start) + link_infos.append((url, line, col)) + # HTML links + for match in re.finditer(r']*?\s+)?href="([^"]*)"', content): + url = match.group(1) + start = match.start(1) + line = content.count('\n', 0, start) + 1 + col = start - content.rfind('\n', 0, start) + link_infos.append((url, line, col)) + return link_infos + + def is_external_link(self, url): + """Check if a link is an external URL""" + return url.startswith(('http://', 'https://', 'ftp://')) + + def is_anchor_link(self, url): + """Check if a link is a page anchor""" + return url.startswith('#') + + def is_mail_link(self, url): + """Check if a link is a mailto link""" + return url.startswith('mailto:') + + def check_online_link(self, link): + """Check if an online link is accessible""" + try: + response = requests.head(link, allow_redirects=True, timeout=self.timeout, headers=self.headers) + + # If HEAD request fails, try GET request + if response.status_code >= 400: + response = requests.get(link, timeout=self.timeout, headers=self.headers) + + if response.status_code < 400: + return (link, True, f"HTTP {response.status_code}") + else: + return (link, False, f"HTTP {response.status_code}") + except requests.exceptions.Timeout: + return (link, False, "Timeout") + except requests.exceptions.ConnectionError: + return (link, False, "Connection Error") + except Exception as e: + return (link, False, str(e)) + + def check_local_path(self, link, file_path): + """Check if a local file path exists""" + try: + current_file_dir = Path(file_path).parent + + # Handle different types of relative paths + if link.startswith('/'): + # Path relative to the base directory (remove leading '/') + target_path = self.base_dir / link.lstrip('/') + else: + # Path relative to the current file + target_path = (current_file_dir / link).resolve() + + # Handle paths without extensions (try adding .mdx or .md) + if not os.path.splitext(link)[1]: + # Path has no extension, try adding .mdx or .md + if target_path.with_suffix('.mdx').exists(): + return (link, True, str(target_path.with_suffix('.mdx'))) + elif target_path.with_suffix('.md').exists(): + return (link, True, str(target_path.with_suffix('.md'))) + else: + # Check if the directory exists + if target_path.exists() and target_path.is_dir(): + # Check for index.mdx or index.md in the directory + if (target_path / 'index.mdx').exists(): + return (link, True, str(target_path / 'index.mdx')) + elif (target_path / 'index.md').exists(): + return (link, True, str(target_path / 'index.md')) + + # Check if the path exists directly + if target_path.exists(): + return (link, True, str(target_path)) + else: + return (link, False, f"File not found: {target_path}") + + except Exception as e: + return (link, False, str(e)) + + def check_link(self, link, file_path): + """Check a link based on its type""" + if self.is_external_link(link): + return self.check_online_link(link) + elif self.is_anchor_link(link) or self.is_mail_link(link): + return (link, None, "Skipped (anchor or mail link)") + else: + return self.check_local_path(link, file_path) + + def check_links_in_file(self, file_path): + """Check all links in a file, with line/col info""" + link_infos = self.extract_links_from_markdown(file_path) + print(f"Found {len(link_infos)} links in {file_path}") + with concurrent.futures.ThreadPoolExecutor(max_workers=self.max_workers) as executor: + future_to_info = {executor.submit(self.check_link, url, file_path): (url, line, col) for url, line, col in link_infos} + for future in concurrent.futures.as_completed(future_to_info): + url, line, col = future_to_info[future] + link, is_valid, status = future.result() + if is_valid is None: + self.results["skipped"].append((link, status, file_path, line, col)) + elif is_valid: + self.results["valid"].append((link, status, file_path, line, col)) + else: + self.results["invalid"].append((link, status, file_path, line, col)) + + def print_report(self): + """Print a colored report of the link check results, with file/line info for invalid links""" + print("\n" + "="*60) + print(f"{Fore.CYAN}LINK CHECKER REPORT{Style.RESET_ALL}") + print("="*60) + print(f"\n{Fore.GREEN}✅ Valid Links ({len(self.results['valid'])}):{Style.RESET_ALL}") + for link, status, file_path, line, col in self.results["valid"]: + print(f" - {link} -> {status} ({file_path}:{line}:{col})") + print(f"\n{Fore.RED}❌ Invalid Links ({len(self.results['invalid'])}):{Style.RESET_ALL}") + for link, status, file_path, line, col in self.results["invalid"]: + # Cursor/VSCode 终端友好格式 + print(f"{file_path}:{line}:{col}: {Fore.RED}无效链接: {link} -> {status}{Style.RESET_ALL}") + print(f"\n{Fore.YELLOW}⏩ Skipped Links ({len(self.results['skipped'])}):{Style.RESET_ALL}") + for link, reason, file_path, line, col in self.results["skipped"]: + print(f" - {link} ({reason}) ({file_path}:{line}:{col})") + print("\n" + "-"*60) + print(f"{Fore.CYAN}SUMMARY:{Style.RESET_ALL}") + print(f"Total links: {len(self.results['valid']) + len(self.results['invalid']) + len(self.results['skipped'])}") + print(f"{Fore.GREEN}Valid: {len(self.results['valid'])}{Style.RESET_ALL}") + print(f"{Fore.RED}Invalid: {len(self.results['invalid'])}{Style.RESET_ALL}") + print(f"{Fore.YELLOW}Skipped: {len(self.results['skipped'])}{Style.RESET_ALL}") + print("-"*60) + + def check_links_in_directory(self, directory, file_pattern="*.md*"): + """Check links in all markdown files in a directory (md/mdx)""" + mdx_files = list(Path(directory).glob(f"**/{file_pattern}")) + print(f"Found {len(mdx_files)} {file_pattern} files in {directory}") + for file_path in mdx_files: + print(f"\nChecking {file_path}...") + self.check_links_in_file(file_path) + +def main(): + parser = argparse.ArgumentParser(description='Check links in markdown files') + parser.add_argument('path', nargs='?', default=None, help='Path to the markdown file or directory to check') + parser.add_argument('--base-dir', help='Base directory for resolving relative paths (default: parent dir of the file)') + parser.add_argument('--timeout', type=int, default=10, help='Timeout for HTTP requests in seconds (default: 10)') + parser.add_argument('--workers', type=int, default=10, help='Number of worker threads (default: 10)') + parser.add_argument('--pattern', default="*.mdx", help='File pattern to match when checking directories (default: *.mdx)') + + args = parser.parse_args() + + # 新增:如果没有传入 path,则提示输入 + if not args.path: + args.path = input("请输入要检查的文件或目录路径: ").strip() + + file_path = Path(args.path) + if not file_path.exists(): + print(f"{Fore.RED}Error: Path '{args.path}' does not exist{Style.RESET_ALL}") + return 1 + + # If base_dir is not specified, use parent of parent directory (for typical docs structure) + if args.base_dir: + base_dir = args.base_dir + elif file_path.is_file(): + base_dir = file_path.parent.parent + else: + base_dir = file_path + + checker = LinkChecker( + base_dir=base_dir, + timeout=args.timeout, + max_workers=args.workers + ) + + print(f"Base directory: {base_dir}") + + if file_path.is_file(): + print(f"Checking links in file: {file_path}") + checker.check_links_in_file(file_path) + else: + print(f"Checking links in directory: {file_path}") + checker.check_links_in_directory(file_path, args.pattern) + + checker.print_report() + + # Return non-zero exit code if invalid links were found + return 1 if checker.results["invalid"] else 0 + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/check_links.py b/scripts/check_links.py new file mode 100644 index 00000000..7f953944 --- /dev/null +++ b/scripts/check_links.py @@ -0,0 +1,241 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Link Checker for Markdown/MDX files + +This script checks both online links and relative file paths in markdown files. +It verifies that online links are accessible and that relative paths exist in the filesystem. +""" + +import re +import requests +import os +from pathlib import Path +import concurrent.futures +import argparse +import sys +from colorama import init, Fore, Style + +# Initialize colorama for cross-platform colored terminal output +init() + +class LinkChecker: + def __init__(self, base_dir, timeout=10, max_workers=10): + self.base_dir = Path(base_dir) + self.timeout = timeout + self.max_workers = max_workers + self.results = {"valid": [], "invalid": [], "skipped": []} + self.headers = { + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" + } + + def extract_links_from_markdown(self, file_path): + """Extract all links from a Markdown/MDX file, with line and column info""" + with open(file_path, 'r', encoding='utf-8') as file: + content = file.read() + + link_infos = [] + # Markdown links [text](url) + for match in re.finditer(r'\[.*?\]\((.*?)\)', content): + url = match.group(1) + start = match.start(1) + line = content.count('\n', 0, start) + 1 + col = start - content.rfind('\n', 0, start) + link_infos.append((url, line, col)) + # HTML links + for match in re.finditer(r']*?\s+)?href="([^"]*)"', content): + url = match.group(1) + start = match.start(1) + line = content.count('\n', 0, start) + 1 + col = start - content.rfind('\n', 0, start) + link_infos.append((url, line, col)) + return link_infos + + def is_external_link(self, url): + """Check if a link is an external URL""" + return url.startswith(('http://', 'https://', 'ftp://')) + + def is_anchor_link(self, url): + """Check if a link is a page anchor""" + return url.startswith('#') + + def is_mail_link(self, url): + """Check if a link is a mailto link""" + return url.startswith('mailto:') + + def check_online_link(self, link): + """Check if an online link is accessible""" + try: + response = requests.head(link, allow_redirects=True, timeout=self.timeout, headers=self.headers) + + # If HEAD request fails, try GET request + if response.status_code >= 400: + response = requests.get(link, timeout=self.timeout, headers=self.headers) + + if response.status_code < 400: + return (link, True, f"HTTP {response.status_code}") + else: + return (link, False, f"HTTP {response.status_code}") + except requests.exceptions.Timeout: + return (link, False, "Timeout") + except requests.exceptions.ConnectionError: + return (link, False, "Connection Error") + except Exception as e: + return (link, False, str(e)) + + def check_local_path(self, link, file_path): + """Check if a local file path exists""" + try: + # 如果有锚点,去掉锚点部分 + if '#' in link: + link = link.split('#')[0] + current_file_dir = Path(file_path).parent + lang_dirs = ["zh-hans", "en", "ja-jp"] + # Handle different types of relative paths + if link.startswith('/'): + # 检查是否以 /zh-hans/、/en/、/ja-jp/ 开头 + for lang in lang_dirs: + prefix = f'/{lang}/' + if link.startswith(prefix): + link = link[len(prefix):] # 去掉前导 /zh-hans/ 等 + break + target_path = self.base_dir / link.lstrip('/') + else: + # Path relative to the current file + target_path = (current_file_dir / link).resolve() + # Handle paths without extensions (try adding .mdx or .md) + if not os.path.splitext(link)[1]: + # Path has no extension, try adding .mdx or .md + if target_path.with_suffix('.mdx').exists(): + return (link, True, str(target_path.with_suffix('.mdx'))) + elif target_path.with_suffix('.md').exists(): + return (link, True, str(target_path.with_suffix('.md'))) + else: + # Check if the directory exists + if target_path.exists() and target_path.is_dir(): + # Check for index.mdx or index.md in the directory + if (target_path / 'index.mdx').exists(): + return (link, True, str(target_path / 'index.mdx')) + elif (target_path / 'index.md').exists(): + return (link, True, str(target_path / 'index.md')) + # Check if the path exists directly + if target_path.exists(): + return (link, True, str(target_path)) + else: + return (link, False, f"File not found: {target_path}") + except Exception as e: + return (link, False, str(e)) + + def check_link(self, link, file_path): + """Check a link based on its type""" + if self.is_external_link(link): + return self.check_online_link(link) + elif self.is_anchor_link(link) or self.is_mail_link(link): + return (link, None, "Skipped (anchor or mail link)") + else: + return self.check_local_path(link, file_path) + + def check_links_in_file(self, file_path): + """Check all links in a file, with line/col info""" + link_infos = self.extract_links_from_markdown(file_path) + print(f"Found {len(link_infos)} links in {file_path}") + with concurrent.futures.ThreadPoolExecutor(max_workers=self.max_workers) as executor: + future_to_info = {executor.submit(self.check_link, url, file_path): (url, line, col) for url, line, col in link_infos} + for future in concurrent.futures.as_completed(future_to_info): + url, line, col = future_to_info[future] + link, is_valid, status = future.result() + if is_valid is None: + self.results["skipped"].append((link, status, file_path, line, col)) + elif is_valid: + self.results["valid"].append((link, status, file_path, line, col)) + else: + self.results["invalid"].append((link, status, file_path, line, col)) + + def print_report(self): + """Print a colored report of the link check results, with file/line info for invalid links""" + print("\n" + "="*60) + print(f"{Fore.CYAN}LINK CHECKER REPORT{Style.RESET_ALL}") + print("="*60) + print(f"\n{Fore.GREEN}✅ Valid Links ({len(self.results['valid'])}):{Style.RESET_ALL}") + for link, status, file_path, line, col in self.results["valid"]: + print(f" - {link} -> {status} ({file_path}:{line}:{col})") + print(f"\n{Fore.RED}❌ Invalid Links ({len(self.results['invalid'])}):{Style.RESET_ALL}") + for link, status, file_path, line, col in self.results["invalid"]: + # Cursor/VSCode 终端友好格式 + print(f"{file_path}:{line}:{col}: {Fore.RED}无效链接: {link} -> {status}{Style.RESET_ALL}") + print(f"\n{Fore.YELLOW}⏩ Skipped Links ({len(self.results['skipped'])}):{Style.RESET_ALL}") + for link, reason, file_path, line, col in self.results["skipped"]: + print(f" - {link} ({reason}) ({file_path}:{line}:{col})") + print("\n" + "-"*60) + print(f"{Fore.CYAN}SUMMARY:{Style.RESET_ALL}") + print(f"Total links: {len(self.results['valid']) + len(self.results['invalid']) + len(self.results['skipped'])}") + print(f"{Fore.GREEN}Valid: {len(self.results['valid'])}{Style.RESET_ALL}") + print(f"{Fore.RED}Invalid: {len(self.results['invalid'])}{Style.RESET_ALL}") + print(f"{Fore.YELLOW}Skipped: {len(self.results['skipped'])}{Style.RESET_ALL}") + print("-"*60) + + def check_links_in_directory(self, directory, file_pattern="*.md*"): + """Check links in all markdown files in a directory (md/mdx)""" + mdx_files = list(Path(directory).glob(f"**/{file_pattern}")) + print(f"Found {len(mdx_files)} {file_pattern} files in {directory}") + for file_path in mdx_files: + print(f"\nChecking {file_path}...") + self.check_links_in_file(file_path) + +def main(): + parser = argparse.ArgumentParser(description='Check links in markdown files') + parser.add_argument('path', nargs='?', default=None, help='Path to the markdown file or directory to check') + parser.add_argument('--base-dir', help='Base directory for resolving relative paths (default: parent dir of the file)') + parser.add_argument('--timeout', type=int, default=10, help='Timeout for HTTP requests in seconds (default: 10)') + parser.add_argument('--workers', type=int, default=10, help='Number of worker threads (default: 10)') + parser.add_argument('--pattern', default="*.mdx", help='File pattern to match when checking directories (default: *.mdx)') + + args = parser.parse_args() + + # 新增:如果没有传入 path,则提示输入 + if not args.path: + args.path = input("请输入要检查的文件或目录路径: ").strip() + + file_path = Path(args.path) + if not file_path.exists(): + print(f"{Fore.RED}Error: Path '{args.path}' does not exist{Style.RESET_ALL}") + return 1 + + # If base_dir is not specified, use parent of parent directory (for typical docs structure) + if args.base_dir: + base_dir = args.base_dir + else: + # 智能向上查找最近的语言目录(zh-hans、en、ja-jp) + lang_dirs = ["zh-hans", "en", "ja-jp"] + current = file_path.resolve() + found = False + for parent in [current] + list(current.parents): + if parent.name in lang_dirs: + base_dir = str(parent) + found = True + break + if not found: + base_dir = file_path.parent + + checker = LinkChecker( + base_dir=base_dir, + timeout=args.timeout, + max_workers=args.workers + ) + + print(f"Base directory: {base_dir}") + + if file_path.is_file(): + print(f"Checking links in file: {file_path}") + checker.check_links_in_file(file_path) + else: + print(f"Checking links in directory: {file_path}") + checker.check_links_in_directory(file_path, args.pattern) + + checker.print_report() + + # Return non-zero exit code if invalid links were found + return 1 if checker.results["invalid"] else 0 + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/doc_migration_helper.py b/scripts/doc_migration_helper.py index d1c44ed5..2aaddd7d 100644 --- a/scripts/doc_migration_helper.py +++ b/scripts/doc_migration_helper.py @@ -190,7 +190,7 @@ class DocMigrationHelper: 根据本地图片路径找到对应的在线URL Args: - local_path: 本地图片路径,例如 /zh-cn/user-guide/.gitbook/assets/image (66).png + local_path: 本地图片路径,例如 /zh-hans/user-guide/.gitbook/assets/image (66).png Returns: online_url: 在线图片URL @@ -461,7 +461,7 @@ class DocMigrationHelper: changes = [] # 1. 查找并替换Markdown格式图片 - # ![alt text](/zh-cn/user-guide/.gitbook/assets/image.png) + # ![alt text](/zh-hans/user-guide/.gitbook/assets/image.png) md_img_pattern = re.compile(r'!\[([^\]]*)\]\((/[^)]+)\)') for match in md_img_pattern.finditer(content): alt_text = match.group(1) diff --git a/scripts/interactive_image_path_fixer.py b/scripts/interactive_image_path_fixer.py index ab8d27fa..44b6cc9c 100644 --- a/scripts/interactive_image_path_fixer.py +++ b/scripts/interactive_image_path_fixer.py @@ -75,7 +75,7 @@ def find_relative_images(file_path): # 检查 Frame 组件中的相对路径 for match in FRAME_IMAGE_RE.finditer(content): image_path = match.group(1) - # 如 /ja-jp/img/... 或 /en-us/img/... 或 /zh-cn/... 这样的路径 + # 如 /ja-jp/img/... 或 /en-us/img/... 或 /zh-hans/... 这样的路径 if image_path.startswith('/'): line_no = content[:match.start()].count('\n') + 1 position = match.start() diff --git a/scripts/sync_image_links.py b/scripts/sync_image_links.py index ad3ed388..9d0e24bc 100644 --- a/scripts/sync_image_links.py +++ b/scripts/sync_image_links.py @@ -37,7 +37,7 @@ class Colors: # 1. Markdown格式: ![alt text](https://assets-docs.dify.ai/...) # 2. HTML格式: ... # 3. Frame标签中的图片: ...... -# 4. 相对路径图片: ![alt](/zh-cn/img/...) +# 4. 相对路径图片: ![alt](/zh-hans/img/...) # Markdown格式图片 MD_IMG_PATTERN = re.compile(r'!\[(.*?)\]\((https?://[^)]+|/[^)]+)\)') @@ -49,7 +49,7 @@ HTML_IMG_PATTERN = re.compile(r']*>') ASSETS_URL_PREFIX = 'https://assets-docs.dify.ai/' # 相对路径特征 -RELATIVE_PATH_PREFIX = '/zh-cn/' +RELATIVE_PATH_PREFIX = '/zh-hans/' def find_corresponding_file(source_file: str, source_dir: str, target_dir: str) -> Optional[str]: """查找源文件在目标目录中的对应文件""" diff --git a/zh-hans.md b/zh-hans.md new file mode 100644 index 00000000..ca0da50a --- /dev/null +++ b/zh-hans.md @@ -0,0 +1,127 @@ +- [customer-service-bot.mdx:155](zh-hans/workshop/intermediate/customer-service-bot.mdx) - 无效链接: ../../guides/workflow/variables.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/workflow/variables.md +- [localai.mdx:20](zh-hans/development/models-integration/localai.mdx) - 无效链接: https://github.com/go-skynet/LocalAI/blob/master/examples/langchain-chroma/README.md -> HTTP 404 +- [xinference.mdx:6](zh-hans/development/models-integration/xinference.mdx) - 无效链接: https://github.com/xorbitsai/inference -> Connection Error +- [xinference.mdx:53](zh-hans/development/models-integration/xinference.mdx) - 无效链接: https://github.com/xorbitsai/inference -> Connection Error +- [xinference.mdx:12](zh-hans/development/models-integration/xinference.mdx) - 无效链接: https://github.com/xorbitsai/inference/blob/main/README\_zh\_CN.md#%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2 -> Connection Error +- [xinference.mdx:51](zh-hans/development/models-integration/xinference.mdx) - 无效链接: https://github.com/xorbitsai/inference -> Connection Error +- [xinference.mdx:37](zh-hans/development/models-integration/xinference.mdx) - 无效链接: https://inference.readthedocs.io/en/latest/models/builtin/index.html -> Connection Error +- [gpustack.mdx:11](zh-hans/development/models-integration/gpustack.mdx) - 无效链接: https://docs.gpustack.ai -> Connection Error +- [replicate.mdx:19](zh-hans/development/models-integration/replicate.mdx) - 无效链接: https://assets-docs.dify.ai/dify-enterprise-mintlify/zh_CN/development/models-integration/95e2ad371c82ef7ef641192f2bf1a1f8.png -> Connection Error +- [README.mdx:8](zh-hans/plugins/publish-plugins/publish-to-dify-marketplace/README.mdx) - 无效链接: https://github.com/langgenius/dify-plugins -> Connection Error +- [tool-plugin.mdx:168](zh-hans/plugins/quick-start/develop-plugins/tool-plugin.mdx) - 无效链接: ../../schema-definition/general-specifications.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/plugins/schema-definition/general-specifications.md +- [integrate-the-predefined-model.mdx:16](zh-hans/plugins/quick-start/develop-plugins/model-plugin/integrate-the-predefined-model.mdx) - 无效链接: ../../../schema-definition/model/model-designing-rules.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/plugins/schema-definition/model/model-designing-rules.md +- [integrate-the-predefined-model.mdx:188](zh-hans/plugins/quick-start/develop-plugins/model-plugin/integrate-the-predefined-model.mdx) - 无效链接: ../../../schema-definition/model/model-designing-rules.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/plugins/schema-definition/model/model-designing-rules.md +- [develop-a-slack-bot-plugin.mdx:41](zh-hans/plugins/best-practice/develop-a-slack-bot-plugin.mdx) - 无效链接: ../initialize-development-tools -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/plugins/initialize-development-tools +- [develop-a-slack-bot-plugin.mdx:75](zh-hans/plugins/best-practice/develop-a-slack-bot-plugin.mdx) - 无效链接: ../../../schema-definition/reverse-invocation-of-the-dify-service/app -> File not found: /Users/allen/Documents/dify-docs-mintlify/schema-definition/reverse-invocation-of-the-dify-service/app +- [how-to-use-json-schema-in-dify.mdx:224](zh-hans/learn-more/how-to-use-json-schema-in-dify.mdx) - 无效链接: https://platform.openai.com/docs/guides/structured-outputs/supported-schemas -> HTTP 403 +- [how-to-use-json-schema-in-dify.mdx:226](zh-hans/learn-more/how-to-use-json-schema-in-dify.mdx) - 无效链接: https://platform.openai.com/docs/guides/structured-outputs/additionalproperties-false-must-always-be-set-in-objects -> HTTP 403 +- [plugins.mdx:16](zh-hans/learn-more/faq/plugins.mdx) - 无效链接: /zh_hans/plugins/publish-plugins/signing-plugins-for-third-party-signature-verification.mdx -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/zh_hans/plugins/publish-plugins/signing-plugins-for-third-party-signature-verification.mdx +- [llms-use-faq.mdx:105](zh-hans/learn-more/faq/llms-use-faq.mdx) - 无效链接: getting-started/faq/install-faq -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/getting-started/faq/install-faq +- [llms-use-faq.mdx:113](zh-hans/learn-more/faq/llms-use-faq.mdx) - 无效链接: advanced/datasets -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/advanced/datasets +- [llms-use-faq.mdx:58](zh-hans/learn-more/faq/llms-use-faq.mdx) - 无效链接: https://platform.openai.com/docs/guides/rate-limits -> HTTP 403 +- [llms-use-faq.mdx:13](zh-hans/learn-more/faq/llms-use-faq.mdx) - 无效链接: https://platform.openai.com/docs/models/overview -> HTTP 403 +- [llms-use-faq.mdx:125](zh-hans/learn-more/faq/llms-use-faq.mdx) - 无效链接: https://platform.openai.com/account/billing/overview -> HTTP 403 +- [llms-use-faq.mdx:125](zh-hans/learn-more/faq/llms-use-faq.mdx) - 无效链接: https://openai.com/pricing -> HTTP 403 +- [llms-use-faq.mdx:30](zh-hans/learn-more/faq/llms-use-faq.mdx) - 无效链接: https://en.wikipedia.org/wiki/Cosine\_similarity -> HTTP 404 +- [how-to-use-json-schema-in-dify.mdx:230](zh-hans/learn-more/extended-reading/how-to-use-json-schema-in-dify.mdx) - 无效链接: https://platform.openai.com/docs/guides/structured-outputs/additionalproperties-false-must-always-be-set-in-objects -> HTTP 403 +- [how-to-use-json-schema-in-dify.mdx:13](zh-hans/learn-more/extended-reading/how-to-use-json-schema-in-dify.mdx) - 无效链接: https://platform.openai.com/docs/guides/structured-outputs/introduction -> HTTP 403 +- [how-to-use-json-schema-in-dify.mdx:229](zh-hans/learn-more/extended-reading/how-to-use-json-schema-in-dify.mdx) - 无效链接: https://platform.openai.com/docs/guides/structured-outputs/supported-schemas -> HTTP 403 +- [how-to-use-json-schema-in-dify.mdx:235](zh-hans/learn-more/extended-reading/how-to-use-json-schema-in-dify.mdx) - 无效链接: https://cookbook.openai.com/examples/structured\_outputs\_intro -> HTTP 404 +- [README.mdx:5](zh-hans/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/README.mdx) - 无效链接: ../../../../guides/application-orchestrate/conversation-application.md "mention" -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/application-orchestrate/conversation-application.md "mention" +- [README.mdx:41](zh-hans/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/README.mdx) - 无效链接: prompt-engineering-template.md "mention" -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/prompt-engineering-template.md "mention" +- [README.mdx:148](zh-hans/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/README.mdx) - 无效链接: ../../../../guides/biao-zhu/logs.md "mention" -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/biao-zhu/logs.md "mention" +- [README.mdx:119](zh-hans/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/README.mdx) - 无效链接: prompt-engineering-template.md "mention" -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/prompt-engineering-template.md "mention" +- [dify-on-teams.mdx:19](zh-hans/learn-more/use-cases/dify-on-teams.mdx) - 无效链接: https://azure.microsoft.com/en-us/free -> Timeout +- [how-to-connect-aws-bedrock.mdx:22](zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.mdx) - 无效链接: ../../guides/knowledge-base/external-knowledge-api-documentation -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/knowledge-base/external-knowledge-api-documentation +- [how-to-connect-aws-bedrock.mdx:121](zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.mdx) - 无效链接: how-to-connect-aws-bedrock.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.md +- [how-to-connect-aws-bedrock.mdx:148](zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.mdx) - 无效链接: how-to-connect-aws-bedrock.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.md +- [how-to-connect-aws-bedrock.mdx:132](zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.mdx) - 无效链接: how-to-connect-aws-bedrock.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.md +- [how-to-connect-aws-bedrock.mdx:133](zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.mdx) - 无效链接: how-to-connect-aws-bedrock.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.md +- [how-to-connect-aws-bedrock.mdx:151](zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.mdx) - 无效链接: how-to-connect-aws-bedrock.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/use-cases/how-to-connect-aws-bedrock.md +- [dify-on-dingtalk.mdx:161](zh-hans/learn-more/use-cases/dify-on-dingtalk.mdx) - 无效链接: ../../.gitbook/assets/dify-on-dingtalk-demo.gif -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/.gitbook/assets/dify-on-dingtalk-demo.gif +- [dify-model-arena.mdx:42](zh-hans/learn-more/use-cases/dify-model-arena.mdx) - 无效链接: /zh_CN/guides/application-orchestrate/multiple-llms-debugging -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/zh_CN/guides/application-orchestrate/multiple-llms-debugging +- [dify-model-arena.mdx:8](zh-hans/learn-more/use-cases/dify-model-arena.mdx) - 无效链接: /zh_CN/guides/application-orchestrate/multiple-llms-debugging -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/zh_CN/guides/application-orchestrate/multiple-llms-debugging +- [practical-implementation-of-building-llm-applications-using-a-full-set-of-open-source-tools.mdx:210](zh-hans/learn-more/use-cases/practical-implementation-of-building-llm-applications-using-a-full-set-of-open-source-tools.mdx) - 无效链接: advanced/model-configuration/xinference -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/advanced/model-configuration/xinference +- [practical-implementation-of-building-llm-applications-using-a-full-set-of-open-source-tools.mdx:246](zh-hans/learn-more/use-cases/practical-implementation-of-building-llm-applications-using-a-full-set-of-open-source-tools.mdx) - 无效链接: http://localhost:9997 -> Connection Error +- [practical-implementation-of-building-llm-applications-using-a-full-set-of-open-source-tools.mdx:181](zh-hans/learn-more/use-cases/practical-implementation-of-building-llm-applications-using-a-full-set-of-open-source-tools.mdx) - 无效链接: https://www.cnblogs.com/tuilk/p/16287472.html -> HTTP 404 +- [integrate-deepseek-to-build-an-ai-app.mdx:32](zh-hans/learn-more/use-cases/integrate-deepseek-to-build-an-ai-app.mdx) - 无效链接: broken-reference -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/use-cases/broken-reference +- [integrate-deepseek-to-build-an-ai-app.mdx:22](zh-hans/learn-more/use-cases/integrate-deepseek-to-build-an-ai-app.mdx) - 无效链接: broken-reference -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/use-cases/broken-reference +- [integrate-deepseek-to-build-an-ai-app.mdx:90](zh-hans/learn-more/use-cases/integrate-deepseek-to-build-an-ai-app.mdx) - 无效链接: broken-reference -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/learn-more/use-cases/broken-reference +- [build-an-notion-ai-assistant.mdx:66](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/PN9F3/train-3.png -> HTTP 403 +- [build-an-notion-ai-assistant.mdx:52](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/M8Xtz/connect-with-notion-4.png -> HTTP 403 +- [build-an-notion-ai-assistant.mdx:58](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/Nkjuj/train-1.png -> HTTP 403 +- [build-an-notion-ai-assistant.mdx:62](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/OYoCv/train-2.png -> HTTP 403 +- [build-an-notion-ai-assistant.mdx:76](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/R6DT5/create-app-2.png -> HTTP 403 +- [build-an-notion-ai-assistant.mdx:72](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/QWRHo/create-app-1.png -> HTTP 403 +- [build-an-notion-ai-assistant.mdx:108](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/xk2Fx/using-api-2.png -> HTTP 403 +- [build-an-notion-ai-assistant.mdx:102](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/wp0Cy/using-api-1.png -> HTTP 403 +- [build-an-notion-ai-assistant.mdx:114](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/yPXHL/using-api-3.png -> HTTP 403 +- [build-an-notion-ai-assistant.mdx:139](zh-hans/learn-more/use-cases/build-an-notion-ai-assistant.mdx) - 无效链接: https://pan.wsyfin.com/f/zpnI4/using-api-4.png -> HTTP 429 +- [dify-on-wechat.mdx:394](zh-hans/learn-more/use-cases/dify-on-wechat.mdx) - 无效链接: https://dldir1.qq.com/wework/work\_weixin/WeCom\_4.0.8.6027.exe -> HTTP 404 +- [dify-on-whatsapp.mdx:20](zh-hans/learn-more/use-cases/dify-on-whatsapp.mdx) - 无效链接: https://www.twilio.com/try-twilio -> Connection Error +- [environments.mdx:562](zh-hans/getting-started/install-self-hosted/environments.mdx) - 无效链接: https://github.com/langgenius/dify/blob/main/api/core/tools/provider/_position.yaml -> HTTP 404 +- [advanced-tool-integration.mdx:5](zh-hans/guides/tools/advanced-tool-integration.mdx) - 无效链接: user-guide/tools/quick-tool-integration -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/tools/quick-tool-integration +- [moderation.mdx:34](zh-hans/guides/tools/extensions/code-based/moderation.mdx) - 无效链接: guides/extension/code-based-extension -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/extension/code-based-extension +- [external-data-tool.mdx:6](zh-hans/guides/tools/extensions/api-based/external-data-tool.mdx) - 无效链接: user-guide/tools/extensions/api-based/api-based-extension -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/tools/extensions/api-based/api-based-extension +- [external-data-tool.mdx:10](zh-hans/guides/tools/extensions/api-based/external-data-tool.mdx) - 无效链接: user-guide/tools/extensions/api-based/api-based-extension -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/tools/extensions/api-based/api-based-extension +- [api-based-extension.mdx:272](zh-hans/guides/tools/extensions/api-based/api-based-extension.mdx) - 无效链接: user-guide/tools/extensions/api-based/cloudflare-workers -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/tools/extensions/api-based/cloudflare-workers +- [searchapi.mdx:28](zh-hans/guides/tools/tool-configuration/searchapi.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tool-searchapi-flow.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tool-searchapi-flow.png +- [searchapi.mdx:18](zh-hans/guides/tools/tool-configuration/searchapi.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tool-searchapi.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tool-searchapi.png +- [dall-e.mdx:18](zh-hans/guides/tools/tool-configuration/dall-e.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-dalle.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-dalle.png +- [dall-e.mdx:24](zh-hans/guides/tools/tool-configuration/dall-e.mdx) - 无效链接: user-guide/build-app/flow-app/variables -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/build-app/flow-app/variables +- [dall-e.mdx:26](zh-hans/guides/tools/tool-configuration/dall-e.mdx) - 无效链接: user-guide/.gitbook/assets/zh-dalle3-node.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-dalle3-node.png +- [dall-e.mdx:32](zh-hans/guides/tools/tool-configuration/dall-e.mdx) - 无效链接: user-guide/.gitbook/assets/zh-agent-dalle3.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-agent-dalle3.png +- [alphavantage.mdx:22](zh-hans/guides/tools/tool-configuration/alphavantage.mdx) - 无效链接: user-guide/build-app/flow-app/variables -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/build-app/flow-app/variables +- [stable-diffusion.mdx:76](zh-hans/guides/tools/tool-configuration/stable-diffusion.mdx) - 无效链接: user-guide/build-app/flow-app/variables -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/build-app/flow-app/variables +- [stable-diffusion.mdx:43](zh-hans/guides/tools/tool-configuration/stable-diffusion.mdx) - 无效链接: https://huggingface.co/JamesFlare/pastel-mix -> HTTP 401 +- [comfyui.mdx:13](zh-hans/guides/tools/tool-configuration/comfyui.mdx) - 无效链接: img/0503c5838f163b54884ca58240281f3f.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/img/0503c5838f163b54884ca58240281f3f.png +- [serper.mdx:18](zh-hans/guides/tools/tool-configuration/serper.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tool-serper.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tool-serper.png +- [bing.mdx:18](zh-hans/guides/tools/tool-configuration/bing.mdx) - 无效链接: img/5e8f18c29c50f14c5c83d7b45c546725.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/img/5e8f18c29c50f14c5c83d7b45c546725.png +- [bing.mdx:12](zh-hans/guides/tools/tool-configuration/bing.mdx) - 无效链接: https://platform.openai.com/ -> HTTP 403 +- [google.mdx:18](zh-hans/guides/tools/tool-configuration/google.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-google.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-google.png +- [perplexity.mdx:28](zh-hans/guides/tools/tool-configuration/perplexity.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-chatflow-perplexity.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-chatflow-perplexity.png +- [perplexity.mdx:34](zh-hans/guides/tools/tool-configuration/perplexity.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-agent-perplexity.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-agent-perplexity.png +- [perplexity.mdx:18](zh-hans/guides/tools/tool-configuration/perplexity.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-perplexity.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-perplexity.png +- [perplexity.mdx:12](zh-hans/guides/tools/tool-configuration/perplexity.mdx) - 无效链接: https://www.perplexity.ai/settings/api -> HTTP 403 +- [searchapi.mdx:18](zh-hans/guides/tools/community/searchapi.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tool-searchapi.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tool-searchapi.png +- [searchapi.mdx:28](zh-hans/guides/tools/community/searchapi.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tool-searchapi-flow.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tool-searchapi-flow.png +- [alphavantage.mdx:22](zh-hans/guides/tools/community/alphavantage.mdx) - 无效链接: user-guide/build-app/flow-app/variables -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/build-app/flow-app/variables +- [comfyui.mdx:13](zh-hans/guides/tools/community/comfyui.mdx) - 无效链接: img/0503c5838f163b54884ca58240281f3f.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/img/0503c5838f163b54884ca58240281f3f.png +- [serper.mdx:18](zh-hans/guides/tools/community/serper.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tool-serper.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tool-serper.png +- [dall-e.mdx:18](zh-hans/guides/tools/dify/dall-e.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-dalle.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-dalle.png +- [dall-e.mdx:32](zh-hans/guides/tools/dify/dall-e.mdx) - 无效链接: user-guide/.gitbook/assets/zh-agent-dalle3.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-agent-dalle3.png +- [dall-e.mdx:26](zh-hans/guides/tools/dify/dall-e.mdx) - 无效链接: user-guide/.gitbook/assets/zh-dalle3-node.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-dalle3-node.png +- [dall-e.mdx:24](zh-hans/guides/tools/dify/dall-e.mdx) - 无效链接: user-guide/build-app/flow-app/variables -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/build-app/flow-app/variables +- [dall-e.mdx:12](zh-hans/guides/tools/dify/dall-e.mdx) - 无效链接: https://platform.openai.com/ -> HTTP 403 +- [stable-diffusion.mdx:76](zh-hans/guides/tools/dify/stable-diffusion.mdx) - 无效链接: user-guide/build-app/flow-app/variables -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/build-app/flow-app/variables +- [stable-diffusion.mdx:43](zh-hans/guides/tools/dify/stable-diffusion.mdx) - 无效链接: https://huggingface.co/JamesFlare/pastel-mix -> HTTP 401 +- [bing.mdx:18](zh-hans/guides/tools/dify/bing.mdx) - 无效链接: img/5e8f18c29c50f14c5c83d7b45c546725.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/img/5e8f18c29c50f14c5c83d7b45c546725.png +- [google.mdx:18](zh-hans/guides/tools/dify/google.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-google.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-google.png +- [perplexity.mdx:18](zh-hans/guides/tools/dify/perplexity.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-perplexity.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-perplexity.png +- [perplexity.mdx:34](zh-hans/guides/tools/dify/perplexity.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-agent-perplexity.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-agent-perplexity.png +- [perplexity.mdx:28](zh-hans/guides/tools/dify/perplexity.mdx) - 无效链接: user-guide/.gitbook/assets/zh-tools-chatflow-perplexity.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/zh-tools-chatflow-perplexity.png +- [perplexity.mdx:12](zh-hans/guides/tools/dify/perplexity.mdx) - 无效链接: https://www.perplexity.ai/settings/api -> HTTP 403 +- [customizable-model.mdx:306](zh-hans/guides/model-configuration/customizable-model.mdx) - 无效链接: https://github.com/langgenius/dify/blob/main/api/core/model\_runtime/docs/zh\_Hans/interfaces -> HTTP 404 +- [customizable-model.mdx:306](zh-hans/guides/model-configuration/customizable-model.mdx) - 无效链接: https://github.com/langgenius/dify-runtime/blob/main/lib/model_providers/anthropic/llm/llm.py -> HTTP 404 +- [predefined-model.mdx:175](zh-hans/guides/model-configuration/predefined-model.mdx) - 无效链接: https://github.com/langgenius/dify/blob/main/api/core/model\_runtime/docs/zh\_Hans/interfaces -> HTTP 404 +- [predefined-model.mdx:175](zh-hans/guides/model-configuration/predefined-model.mdx) - 无效链接: https://github.com/langgenius/dify-runtime/blob/main/lib/model_providers/anthropic/llm/llm.py -> HTTP 404 +- [new-provider.mdx:146](zh-hans/guides/model-configuration/new-provider.mdx) - 无效链接: https://github.com/langgenius/dify/blob/main/api/core/model\_runtime/model\_providers/anthropic/anthropic.py -> HTTP 404 +- [new-provider.mdx:88](zh-hans/guides/model-configuration/new-provider.mdx) - 无效链接: https://github.com/langgenius/dify/blob/main/api/core/model\_runtime/docs/zh\_Hans/schema -> HTTP 404 +- [new-provider.mdx:43](zh-hans/guides/model-configuration/new-provider.mdx) - 无效链接: https://github.com/langgenius/dify/blob/main/api/core/model\_runtime/docs/zh\_Hans/schema.md#aimodelentity -> HTTP 404 +- [new-provider.mdx:39](zh-hans/guides/model-configuration/new-provider.mdx) - 无效链接: https://github.com/langgenius/dify/blob/main/api/core/model\_runtime/docs/zh\_Hans/schema -> HTTP 404 +- [new-provider.mdx:128](zh-hans/guides/model-configuration/new-provider.mdx) - 无效链接: https://github.com/langgenius/dify/blob/main/api/core/model\_runtime/docs/zh\_Hans/schema -> HTTP 404 +- [readme.mdx:26](zh-hans/guides/model-configuration/readme.mdx) - 无效链接: advanced/retrieval-augment/rerank -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/advanced/retrieval-augment/rerank +- [readme.mdx:22](zh-hans/guides/model-configuration/readme.mdx) - 无效链接: https://platform.openai.com/account/api-keys -> HTTP 403 +- [interfaces.mdx:230](zh-hans/guides/model-configuration/interfaces.mdx) - 无效链接: https://github.com/langgenius/dify-runtime/blob/main/lib/model_providers/anthropic/llm/llm.py -> HTTP 404 +- [load-balancing.mdx:14](zh-hans/guides/model-configuration/load-balancing.mdx) - 无效链接: ../../getting-started/cloud.md -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/getting-started/cloud.md +- [agent.mdx:67](zh-hans/guides/application-orchestrate/agent.mdx) - 无效链接: https://assets-docs.dify.ai/dify-enterprise-mintlify/zh_CN/guides/application-orchestrate/cd4a7ffded1a86d5e4aed1b9df36dc64.png -> Connection Error +- [agent.mdx:71](zh-hans/guides/application-orchestrate/agent.mdx) - 无效链接: https://assets-docs.dify.ai/dify-enterprise-mintlify/zh_CN/guides/application-orchestrate/44b15a78c45e21afafd110864f78f33e.png -> Connection Error +- [moderation-tool.mdx:12](zh-hans/guides/application-orchestrate/app-toolkits/moderation-tool.mdx) - 无效链接: https://platform.openai.com/docs/guides/moderation/overview -> HTTP 403 +- [create-flow-app.mdx:15](zh-hans/guides/workflow/create-flow-app.mdx) - 无效链接: img/8eb5a12939c298bc7cb9a778d10d42db.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/img/8eb5a12939c298bc7cb9a778d10d42db.png +- [create-flow-app.mdx:27](zh-hans/guides/workflow/create-flow-app.mdx) - 无效链接: user-guide/.gitbook/assets/workflow.png -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/user-guide/.gitbook/assets/workflow.png +- [additional-feature.mdx:129](zh-hans/guides/workflow/additional-feature.mdx) - 无效链接: ../extension/api-based-extension/external-data-tool -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/extension/api-based-extension/external-data-tool +- [file-upload.mdx:38](zh-hans/guides/workflow/file-upload.mdx) - 无效链接: guides/workflow/concepts -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/workflow/concepts +- [file-upload.mdx:38](zh-hans/guides/workflow/file-upload.mdx) - 无效链接: guides/workflow/key-concepts -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/workflow/key-concepts +- [code.mdx:22](zh-hans/guides/workflow/node/code.mdx) - 无效链接: ../key-concepts -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/workflow/key-concepts +- [README.mdx:7](zh-hans/guides/workflow/node/README.mdx) - 无效链接: variable-assignment -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/workflow/node/variable-assignment +- [llm.mdx:87](zh-hans/guides/workflow/node/llm.mdx) - 无效链接: user-guide/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/ -> File not found: /Users/allen/Documents/dify-docs-mintlify/zh-hans/guides/workflow/node/user-guide/learn-more/extended-reading/prompt-engineering/prompt-engineering-1 \ No newline at end of file diff --git a/zh-hans/community/contribution.mdx b/zh-hans/community/contribution.mdx index 447e2f9a..a5a72ebe 100644 --- a/zh-hans/community/contribution.mdx +++ b/zh-hans/community/contribution.mdx @@ -9,7 +9,7 @@ title: 成为贡献者 这份指南,就像 Dify 本身一样,是一个不断改进的工作。如果有时它落后于实际项目,我们非常感谢你的理解,并欢迎任何反馈以供我们改进。 -在许可方面,请花一分钟阅读我们简短的 [许可证和贡献者协议](https://github.com/langgenius/dify/blob/main/LICENSE)。社区还遵守 [行为准则](https://github.com/langgenius/.github/blob/main/CODE_OF_CONDUCT)。 +在许可方面,请花一分钟阅读我们简短的 [许可证和贡献者协议](https://github.com/langgenius/dify/blob/main/LICENSE)。社区还遵守 [行为准则](https://github.com/langgenius/dify/blob/ecade13455d7cb93cc1a9c39358aeff7f419c423/.github/CODE_OF_CONDUCT.md?plain=1#L4)。 ## 在开始之前 @@ -101,7 +101,7 @@ Dify 依赖以下工具和库: ### 4. 安装 -Dify 由后端和前端组成。通过 `cd api/` 导航到后端目录,然后按照 [后端 README](https://github.com/langgenius/dify/blob/main/api/README) 进行安装。在另一个终端中,通过 `cd web/` 导航到前端目录,然后按照 [前端 README](https://github.com/langgenius/dify/blob/main/web/README) 进行安装。 +Dify 由后端和前端组成。通过 `cd api/` 导航到后端目录,然后按照 [后端 README](https://github.com/langgenius/dify/blob/main/api/README.md) 进行安装。在另一个终端中,通过 `cd web/` 导航到前端目录,然后按照 [前端 README](https://github.com/langgenius/dify/blob/main/web/README.md) 进行安装。 查看 [安装常见问题解答](/zh-hans/learn-more/faq/install-faq) 以获取常见问题列表和故障排除步骤。 @@ -175,7 +175,7 @@ Dify 的后端使用 Python 编写,使用 [Flask](https://flask.palletsproject 最后,是时候向我们的仓库提交一个拉取请求(PR)了。对于重要的功能,我们首先将它们合并到 `deploy/dev` 分支进行测试,然后再合并到 `main` 分支。如果你遇到合并冲突或者不知道如何提交拉取请求的问题,请查看 [GitHub 的拉取请求教程](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests)。 -就是这样!一旦你的 PR 被合并,你将成为我们 [README](https://github.com/langgenius/dify/blob/main/README_CN) 中的贡献者。 +就是这样!一旦你的 PR 被合并,你将成为我们 [README](https://github.com/langgenius/dify/blob/main/README_CN.md) 中的贡献者。 ## 获取帮助 diff --git a/zh-hans/community/docs-contribution.mdx b/zh-hans/community/docs-contribution.mdx index ac21da76..dc9698b0 100644 --- a/zh-hans/community/docs-contribution.mdx +++ b/zh-hans/community/docs-contribution.mdx @@ -71,4 +71,4 @@ git clone https://github.com//dify-docs.git ## 获取帮助 -如果你在贡献过程中遇到困难或者有任何问题,可以通过相关的 GitHub 问题提出你的疑问,或者加入我们的 [Discord](https://discord.com/invite/8Tpq4AcN9c) 进行快速交流。 +如果你在贡献过程中遇到困难或者有任何问题,可以通过相关的 GitHub 问题提出你的疑问。 diff --git a/zh-hans/development/backend/sandbox/README.mdx b/zh-hans/development/backend/sandbox/README.mdx index d408d7a5..8fa54ed2 100644 --- a/zh-hans/development/backend/sandbox/README.mdx +++ b/zh-hans/development/backend/sandbox/README.mdx @@ -69,7 +69,7 @@ DifySandbox 已预先配置了以下 Python 依赖: 若需要额外的 Python 依赖,请遵循以下步骤 1. 找到项目根目录下的 `dependencies/python-requirements.txt` 文件。 -2. 在文件中添加所需的依赖包名及版本。若涉及权限变更,请参考[常见问题](https://github.com/langgenius/dify-sandbox/blob/main/FAQ)。 +2. 在文件中添加所需的依赖包名及版本。若涉及权限变更,请参考[常见问题](https://github.com/langgenius/dify-sandbox/blob/main/FAQ.md)。 3. 重新构建 DifySandbox。 diff --git a/zh-hans/development/models-integration/localai.mdx b/zh-hans/development/models-integration/localai.mdx index 756995eb..ae443921 100644 --- a/zh-hans/development/models-integration/localai.mdx +++ b/zh-hans/development/models-integration/localai.mdx @@ -17,7 +17,7 @@ Dify 支持以本地部署的方式接入 LocalAI 部署的大型语言模型推 可参考官方 [Getting Started](https://localai.io/basics/getting_started/) 进行部署,也可参考下方步骤进行快速接入: -(以下步骤来自 [LocalAI Data query example](https://github.com/go-skynet/LocalAI/blob/master/examples/langchain-chroma/README)) +(以下步骤来自 [LocalAI Data query example](https://github.com/go-skynet/LocalAI/blob/master/examples/langchain-chroma/README.md)) 1. 首先拉取 LocalAI 代码仓库,并进入指定目录 diff --git a/zh-hans/development/models-integration/ollama.mdx b/zh-hans/development/models-integration/ollama.mdx index 671a10a8..848f9963 100644 --- a/zh-hans/development/models-integration/ollama.mdx +++ b/zh-hans/development/models-integration/ollama.mdx @@ -137,4 +137,4 @@ Ollama 默认绑定 127.0.0.1 端口 11434。通过 `OLLAMA_HOST` 环境变量 如需获取 Ollama 更多信息,请参考 - [Ollama](https://github.com/jmorganca/ollama) -- [Ollama FAQ](https://github.com/ollama/ollama/blob/main/docs/faq) +- [Ollama FAQ](https://github.com/ollama/ollama/blob/main/docs/faq.md) diff --git a/zh-hans/development/models-integration/xinference.mdx b/zh-hans/development/models-integration/xinference.mdx index 962d7e30..afe1df86 100644 --- a/zh-hans/development/models-integration/xinference.mdx +++ b/zh-hans/development/models-integration/xinference.mdx @@ -9,7 +9,7 @@ title: 接入 Xinference 部署的本地模型 ### 开始部署 -部署 Xinference 有两种方式,分别为[本地部署](https://github.com/xorbitsai/inference/blob/main/README\_zh\_CN.md#%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2)和[分布式部署](https://github.com/xorbitsai/inference/blob/main/README\_zh\_CN.md#%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2),以下以本地部署为例。 +部署 Xinference 有两种方式,分别为[本地部署](https://github.com/xorbitsai/inference)和[分布式部署](https://github.com/xorbitsai/inference/blob/main/README\_zh\_CN.md#%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2),以下以本地部署为例。 1. 首先通过 PyPI 安装 Xinference: @@ -48,6 +48,6 @@ title: 接入 Xinference 部署的本地模型 "保存" 后即可在应用中使用该模型。 -Dify 同时支持将 [Xinference embed 模型](https://github.com/xorbitsai/inference/blob/main/README\_zh\_CN.md#%E5%86%85%E7%BD%AE%E6%A8%A1%E5%9E%8B) 作为 Embedding 模型使用,只需在配置框中选择 `Embeddings` 类型即可。 +Dify 同时支持将 [Xinference embed 模型](https://github.com/xorbitsai/inference) 作为 Embedding 模型使用,只需在配置框中选择 `Embeddings` 类型即可。 -如需获取 Xinference 更多信息,请参考:[Xorbits Inference](https://github.com/xorbitsai/inference/blob/main/README\_zh\_CN) +如需获取 Xinference 更多信息,请参考:[Xorbits Inference](https://github.com/xorbitsai/inference) diff --git a/zh-hans/getting-started/dify-premium.mdx b/zh-hans/getting-started/dify-premium.mdx index 745b8c1d..eeab566f 100644 --- a/zh-hans/getting-started/dify-premium.mdx +++ b/zh-hans/getting-started/dify-premium.mdx @@ -2,7 +2,7 @@ title: Dify Premium --- -Dify Premium 是一款 [AWS AMI](https://docs.aws.amazon.com/zh\_cn/AWSEC2/latest/UserGuide/ec2-instances-and-amis.html) 产品,允许自定义品牌,并可作为 EC2 一键部署到你的 AWS VPC 上。前往 [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-t22mebxzwjhu6) 进行订阅并使用,它适合以下场景: +Dify Premium 是一款 AWS AMI 产品,允许自定义品牌,并可作为 EC2 一键部署到你的 AWS VPC 上。前往 [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-t22mebxzwjhu6) 进行订阅并使用,它适合以下场景: * 在中小型企业内,需在服务器上创建一个或多应用程序,并且关心数据私有化。 * 你对 [Dify Cloud](/zh-hans/getting-started/cloud)订阅计划感兴趣,但所需的用例资源超出了[计划](https://dify.ai/pricing)内所提供的资源。 diff --git a/zh-hans/getting-started/install-self-hosted/readme.mdx b/zh-hans/getting-started/install-self-hosted/readme.mdx index 926981b0..6d1e2546 100644 --- a/zh-hans/getting-started/install-self-hosted/readme.mdx +++ b/zh-hans/getting-started/install-self-hosted/readme.mdx @@ -13,4 +13,4 @@ Dify 社区版即开源版本,你可以通过以下两种方式之一部署 Di 为了确保正确审查,所有代码贡献 - 包括来自具有直接提交更改权限的贡献者 - 都必须提交 PR 请求并在合并分支之前得到核心开发人员的批准。 -我们欢迎所有人提交 PR!如果你愿意提供帮助,可以在 [贡献指南](https://github.com/langgenius/dify/blob/main/CONTRIBUTING_CN) 中了解有关如何为项目做出贡献的更多信息。 +我们欢迎所有人提交 PR!如果你愿意提供帮助,可以在 [贡献指南](https://github.com/langgenius/dify/blob/main/CONTRIBUTING_CN.md) 中了解有关如何为项目做出贡献的更多信息。 diff --git a/zh-hans/guides/application-publishing/launch-your-webapp-quickly/flow-app.mdx b/zh-hans/guides/application-publishing/launch-your-webapp-quickly/flow-app.mdx index 2e4a4a92..ec11c8ef 100644 --- a/zh-hans/guides/application-publishing/launch-your-webapp-quickly/flow-app.mdx +++ b/zh-hans/guides/application-publishing/launch-your-webapp-quickly/flow-app.mdx @@ -6,7 +6,7 @@ version: '简体中文' 调试完成之后点击右上角的「发布」可以将该工作流保存并快速发布成为不同类型的应用。 - + 对话型应用支持发布为: diff --git a/zh-hans/guides/knowledge-base/api-documentation/external-knowledge-api-documentation.mdx.bak b/zh-hans/guides/knowledge-base/api-documentation/external-knowledge-api-documentation.mdx.bak index 08efeaf9..bae29688 100644 --- a/zh-hans/guides/knowledge-base/api-documentation/external-knowledge-api-documentation.mdx.bak +++ b/zh-hans/guides/knowledge-base/api-documentation/external-knowledge-api-documentation.mdx.bak @@ -11,7 +11,7 @@ POST /retrieval ## 请求头 -该 API 用于连接团队内独立维护的知识库,如需了解更多操作指引,请参考阅读 [连接外部知识库](/zh-cn/user-guide/knowledge-base/knowledge-base-creation/connect-external-knowledge-base)。你可以在 HTTP 请求头的 `Authorization` 字段中使用 `API-Key` 来验证权限。身份验证逻辑由您在检索 API 中定义,如下所示: +该 API 用于连接团队内独立维护的知识库,如需了解更多操作指引,请参考阅读 [连接外部知识库](/zh-hans/user-guide/knowledge-base/knowledge-base-creation/connect-external-knowledge-base)。你可以在 HTTP 请求头的 `Authorization` 字段中使用 `API-Key` 来验证权限。身份验证逻辑由您在检索 API 中定义,如下所示: ``` Authorization: Bearer {API_KEY} diff --git a/zh-hans/guides/knowledge-base/api-documentation/external-knowledge-api.json b/zh-hans/guides/knowledge-base/api-documentation/external-knowledge-api.json index 82a9653a..24430268 100644 --- a/zh-hans/guides/knowledge-base/api-documentation/external-knowledge-api.json +++ b/zh-hans/guides/knowledge-base/api-documentation/external-knowledge-api.json @@ -7,7 +7,7 @@ "post": { "summary": "知识召回 API", "deprecated": false, - "description": "该 API 用于连接团队内独立维护的知识库,如需了解更多操作指引,请参考阅读[连接外部知识库](/zh-cn/user-guide/knowledge-base/knowledge-base-creation/connect-external-knowledge-base)。你可以在 Authorization HTTP 头部中使用 API-Key 来验证权限,认证逻辑由开发者在检索 API 中定义,如下所示:\n\n```text\nAuthorization: Bearer {API_KEY}\n```", + "description": "该 API 用于连接团队内独立维护的知识库,如需了解更多操作指引,请参考阅读[连接外部知识库](/zh-hans/user-guide/knowledge-base/knowledge-base-creation/connect-external-knowledge-base)。你可以在 Authorization HTTP 头部中使用 API-Key 来验证权限,认证逻辑由开发者在检索 API 中定义,如下所示:\n\n```text\nAuthorization: Bearer {API_KEY}\n```", "tags": [], "requestBody": { "content": { diff --git a/zh-hans/guides/knowledge-base/connect-external-knowledge-base.mdx b/zh-hans/guides/knowledge-base/connect-external-knowledge-base.mdx index 9015c173..408d9737 100644 --- a/zh-hans/guides/knowledge-base/connect-external-knowledge-base.mdx +++ b/zh-hans/guides/knowledge-base/connect-external-knowledge-base.mdx @@ -1,6 +1,5 @@ --- title: 连接外部知识库 -version: '简体中文' --- > 为做出区别,独立于 Dify 平台之外的知识库在本文内均被统称为 **“外部知识库”** 。 @@ -110,7 +109,11 @@ version: '简体中文' #### AWS Bedrock -[how-to-connect-aws-bedrock.md](../../learn-more/use-cases/how-to-connect-aws-bedrock.md "mention") + #### LlamaCloud diff --git a/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text.mdx.bak b/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text.mdx.bak deleted file mode 100644 index 88c4b11b..00000000 --- a/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text.mdx.bak +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: 2. 指定分段模式 ---- - -将内容上传至知识库后,接下来需要对内容进行分段与数据清洗。**该阶段是内容的预处理与数据结构化过程,长文本将会被划分为多个内容分段。** - - - -* **分段** - -由于大语言模型的上下文窗口有限,无法一次性处理和传输整个知识库的内容,因此需要对文档中的长文本分段为内容块。即便部分大模型已支持上传完整的文档文件,但实验表明,检索效率依然弱于检索单个内容分段。 - -LLM 能否精准地回答出知识库中的内容,关键在于知识库对内容块的检索与召回效果。类似于在手册中查找关键章节即可快速得到答案,而无需逐字逐句分析整个文档。经过分段后,知识库能够基于用户问题,采用分段 TopK 召回模式,召回与问题高度相关的内容块,补全关键信息从而提高回答的精准性。 - -在进行问题与内容块的语义匹配时,合理的分段大小非常关键,它能够帮助模型准确地找到与问题最相关的内容,减少噪音信息。过大或过小的分段都可能影响召回的效果。 - -Dify 提供了 **"通用分段"** 和 **"父子分段"** 两种分段模式,分别适应不同类型的文档结构和应用场景,满足不同的知识库检索和召回的效率与准确性要求。 - -* **清洗** - -为了保证文本召回的效果,通常需要在将数据录入知识库之前便对其进行清理。例如,文本内容中存在无意义的字符或者空行可能会影响问题回复的质量,需要对其清洗。Dify 已内置的自动清洗策略,详细说明请参考 [ETL](chunking-and-cleaning-text.md#etl)。 - - -LLM 收到用户问题后,能否精准地回答出知识库中的内容,取决于知识库对内容块的检索和召回效果。匹配与问题相关度高的文本分段对 AI 应用生成准确且全面的回应至关重要。 - -好比在智能客服场景下,仅需帮助 LLM 定位至工具手册的关键章节内容块即可快速得到用户问题的答案,而无需重复分析整个文档。在节省分析过程中所耗费的 Tokens 的同时,提高 AI 应用的问答质量。 - -### 分段模式 - -知识库支持两种分段模式:**通用模式**与**父子模式**。如果你是首次创建知识库,建议选择父子模式。 - - -**注意**:原 **"自动分段与清洗"** 模式已自动更新为 **"通用"** 模式。无需进行任何更改,原知识库保持默认设置即可继续使用。选定分段模式并完成知识库的创建后,后续无法变更。知识库内新增的文档也将遵循同样的分段模式。 - - -![通用模式与父子分段模式](https://assets-docs.dify.ai/2024/12/b3052a6aae6e4d0e5701dde3a859e326.png) - -#### 通用模式 - -系统按照用户自定义的规则将内容拆分为独立的分段。当用户输入问题后,系统自动分析问题中的关键词,并计算关键词与知识库中各内容分段的相关度。根据相关度排序,选取最相关的内容分段并发送给 LLM,辅助其处理与更有效地回答。 - -在该模式下,你需要根据不同的文档格式或场景要求,参考以下设置项,手动设置文本的**分段规则**。 - -* **分段标识符**,默认值为 `\n`,即按照文章段落进行分块。你可以遵循[正则表达式语法](https://regexr.com/)自定义分块规则,系统将在文本出现分段标识符时自动执行分段。例如 的含义是按照句子进行分段。下图是不同语法的文本分段效果: - -![不同分段标识符语法的分段效果](https://assets-docs.dify.ai/2024/12/2c19c1c1a0446c00e3c07d6f4c8968e4.png) - -* **分段最大长度**,指定分段内的文本字符数最大上限,超出该长度时将强制分段。默认值为 500 Tokens,分段长度的最大上限为 4000 Tokens; -* **分段重叠长度**,指的是在对数据进行分段时,段与段之间存在一定的重叠部分。这种重叠可以帮助提高信息的保留和分析的准确性,提升召回效果。建议设置为分段长度 Tokens 数的 10-25%; - -**文本预处理规则,** 过滤知识库内部分无意义的内容。提供以下选项: - -* 替换连续的空格、换行符和制表符 -* 删除所有 URL 和电子邮件地址 - -配置完成后,点击"预览区块"即可查看分段后的效果。你可以直观的看到每个区块的字符数。如果重新修改了分段规则,需要重新点击按钮以查看新的内容分段。 - -若同时批量上传了多个文档,轻点顶部的文档标题,快速切换并查看其它文档的分段效果。 - -![通用模式](https://assets-docs.dify.ai/2024/12/b3ec2ce860550563234ca22967abdd17.png) - -分段规则设置完成后,接下来需指定索引方式。支持"高质量索引"和"经济索引",详细说明请参考[设定索引方法](setting-indexing-methods)。 - -#### **父子模式** - -与**通用模式**相比,父子模式采用双层分段结构来平衡检索的精确度和上下文信息,让精准匹配与全面的上下文信息二者兼得。 - -其中,父区块(Parent-chunk)保持较大的文本单位(如段落),提供丰富的上下文信息;子区块(Child-chunk)则是较小的文本单位(如句子),用于精确检索。系统首先通过子区块进行精确检索以确保相关性,然后获取对应的父区块来补充上下文信息,从而在生成响应时既保证准确性又能提供完整的背景信息。你可以通过设置分隔符和最大长度来自定义父子区块的分段方式。 - -例如在 AI 智能客服场景下,用户输入的问题将定位至解决方案文档内某个具体的句子,随后将该句子所在的段落或章节,联同发送至 LLM,补全该问题的完整背景信息,给出更加精准的回答。 - -其基本机制包括: - -* **子分段匹配查询**: - * 将文档拆分为较小、集中的信息单元(例如一句话),更加精准的匹配用户所输入的问题。 - * 子分段能快速提供与用户需求最相关的初步结果。 -* **父分段提供上下文**: - * 将包含匹配子分段的更大部分(如段落、章节甚至整个文档)视作父分段并提供给大语言模型(LLM)。 - * 父分段能为 LLM 提供完整的背景信息,避免遗漏重要细节,帮助 LLM 输出更贴合知识库内容的回答。 - -![父子召回原理图](https://assets-docs.dify.ai/2024/12/3e6820c10bd7c5f6884930e3a14e7b66.png) - -在该模式下,你需要根据不同的文档格式或场景要求,手动分别设置父子分段的**分段规则**。 - -**父分段:** - -父分段设置提供以下分段选项: - -* **段落** - -根据预设的分隔符规则和最大块长度将文本拆分为段落。每个段落视为父分段,适用于文本量较大,内容清晰且段落相对独立的文档。支持以下设置项: - -* **分段标识符**,默认值为 `\n`,即按照文本段落分段。你可以遵循[正则表达式语法](https://regexr.com/)自定义分块规则,系统将在文本出现分段标识符时自动执行分段。 -* **分段最大长度**,指定分段内的文本字符数最大上限,超出该长度时将强制分段。默认值为 500 Tokens,分段长度的最大上限为 4000 Tokens; - -* **全文** - -不进行段落分段,而是直接将全文视为单一父分段。出于性能原因,仅保留文本内的前 10000 Tokens 字符,适用于文本量较小,但段落间互有关联,需要完整检索全文的场景。 - -![父子模式下的段落和全文预览](https://assets-docs.dify.ai/2024/12/e3814336710d445a99a9ded3d251622b.png) - -**子分段:** - -子分段文本是在父文本分段基础上,由分隔符规则切分而成,用于查找和匹配与问题关键词最相关和直接的信息。如果使用默认的子分段规则,通常呈现以下分段效果: - -* 当父分段为段落时,子分段对应各个段落中的单个句子。 -* 父分段为全文时,子分段对应全文中各个单独的句子。 - -在子分段内填写以下分段设置: - -* **分段标识符**,默认值为 ,即按照句子进行分段。你可以遵循[正则表达式语法](https://regexr.com/)自定义分块规则,系统将在文本出现分段标识符时自动执行分段。 -* **分段最大长度**,指定分段内的文本字符数最大上限,超出该长度时将强制分段。默认值为 200 Tokens,分段长度的最大上限为 4000 Tokens; - -你还可以使用**文本预处理规则**过滤知识库内部分无意义的内容: - -* 替换连续的空格、换行符和制表符 -* 删除所有 URL 和电子邮件地址 - -配置完成后,点击"预览区块"即可查看分段后的效果。你可以查看父分段的整体字符数。背景标蓝的字符为子分块,同时显示当前子段的字符数。 - -如果重新修改了分段规则,需要重新点击"预览区块"按钮以查看新的内容分段。若同时批量上传了多个文档,轻点顶部的文档标题,快速切换至其它文档并预览内容的分段效果。 - -![父子分段模式](https://assets-docs.dify.ai/2024/12/af5c9a68f85120a6ea687bf93ecfb80a.png) - -为了确保内容检索的准确性,父子分段模式仅支持使用["高质量索引"](chunking-and-cleaning-text.md#gao-zhi-liang-suo-yin)。 - -### 两种模式的区别是什么? - -两者的主要区别在于内容区块的分段形式。**通用模式**的分段结果为多个独立的内容分段,而**父子模式**采用双层结构进行内容分段,即单个父分段的内容(文档全文或段落)内包含多个子分段内容(句子)。 - -不同的分段方式将影响 LLM 对于知识库内容的检索效果。在相同文档中,采用父子检索所提供的上下文信息会更全面,且在精准度方面也能保持较高水平,大大优于传统的单层通用检索方式。 - -![通用模式与父子模式的内容检索效果对比](https://assets-docs.dify.ai/2024/12/0b614c6a07c6ea2151fe17d85ce6a1d1.png) - -### 阅读更多 - -选定分段模式后,接下来你可以参考以下文档分别设定索引方式和检索方式,完成知识库的创建。 - - - 了解更多高质量索引和经济索引的详细信息 - diff --git a/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/readme.mdx.bak b/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/readme.mdx.bak deleted file mode 100644 index bf07796f..00000000 --- a/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/readme.mdx.bak +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 知识库创建步骤 ---- - -创建知识库并上传文档大致分为以下步骤: - -1. 创建知识库。通过上传本地文件、导入在线数据或创建一个空的知识库。 - - -选择通过上传本地文件或导入在线数据的方式创建知识库 - - -2. 指定分段模式。该阶段是内容的预处理与数据结构化过程,长文本将会被划分为多个内容分段。你可以在此环节预览文本的分段效果。 - - -了解如何设置文本分段和清洗规则 - - -3. 设定索引方法和检索设置。知识库在接收到用户查询问题后,按照预设的检索方式在已有的文档内查找相关内容,提取出高度相关的信息片段供语言模型生成高质量答案。 - - -了解如何配置检索方式和相关设置 - - -5. 等待分段嵌入 -6. 完成上传,在应用内关联知识库并使用。你可以参考[在应用内集成知识库](../integrate-knowledge-within-application),搭建出能够基于知识库进行问答的 LLM 应用。如需修改或管理知识库,请参考[知识库管理与文档维护](../knowledge-and-documents-maintenance/)。 - -![完成知识库的创建](https://assets-docs.dify.ai/2024/12/a3362a1cd384cb2b539c9858de555518.png) - -### 参考阅读 - -#### ETL - -在 RAG 的生产级应用中,为了获得更好的数据召回效果,需要对多源数据进行预处理和清洗,即 ETL (_extract, transform, load_)。为了增强非结构化/半结构化数据的预处理能力,Dify 支持了可选的 ETL 方案:**Dify ETL** 和[ ](https://docs.unstructured.io/welcome)[**Unstructured ETL** ](https://unstructured.io/)。Unstructured 能够高效地提取并转换你的数据为干净的数据用于后续的步骤。Dify 各版本的 ETL 方案选择: - -* SaaS 版不可选,默认使用 Unstructured ETL; -* 社区版可选,默认使用 Dify ETL ,可通过[环境变量](/zh-hans/getting-started/install-self-hosted/environments#zhi-shi-ku-pei-zhi)开启 Unstructured ETL; - -文件解析支持格式的差异: - -| DIFY ETL | Unstructured ETL | -| --- | --- | -| txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv | txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv、eml、msg、pptx、ppt、xml、epub | - -不同的 ETL 方案在文件提取效果的方面也会存在差异,想了解更多关于 Unstructured ETL 的数据处理方式,请参考[官方文档](https://docs.unstructured.io/open-source/core-functionality/partitioning)。 - -#### **Embedding** - -**Embedding 嵌入**是一种将离散型变量(如单词、句子或者整个文档)转化为连续的向量表示的技术。它可以将高维数据(如单词、短语或图像)映射到低维空间,提供一种紧凑且有效的表示方式。这种表示不仅减少了数据的维度,还保留了重要的语义信息,使得后续的内容检索更加高效。 - -**Embedding 模型**是一种专门用于将文本向量化的大语言模型,它擅长将文本转换为密集的数值向量,有效捕捉语义信息。 - -> 如需了解更多,请参考:[《Dify:Embedding 技术与 Dify 知识库设计/规划》](https://mp.weixin.qq.com/s/vmY_CUmETo2IpEBf1nEGLQ)。 - -#### **元数据** - -如需使用元数据功能管理知识库,请参阅 [元数据](https://docs.dify.ai/zh-hans/guides/knowledge-base/metadata)。 \ No newline at end of file diff --git a/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods.mdx.bak b/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods.mdx.bak deleted file mode 100644 index 079ecbb0..00000000 --- a/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods.mdx.bak +++ /dev/null @@ -1,167 +0,0 @@ ---- -title: 3. 设定索引方法与检索设置 ---- - -选定内容的分段模式后,接下来设定对于结构化内容的**索引方法**与**检索设置**。 - -## 设定索引方法 - -正如搜索引擎通过高效的索引算法匹配与用户问题最相关的网页内容,索引方式是否合理将直接影响 LLM 对知识库内容的检索效率以及回答的准确性。 - -提供 **高质量** 与 **经济** 两种索引方法,其中分别提供不同的检索设置选项: - - - 原 Q&A 模式(仅适用于社区版)已成为高质量索引方法下的一个可选项。 - - - - - **高质量** - - 在高质量模式下,使用 Embedding 嵌入模型将已分段的文本块转换为数字向量,帮助更加有效地压缩与存储大量文本信息;**使得用户问题与文本之间的匹配能够更加精准**。 - - 将内容块向量化并录入至数据库后,需要通过有效的检索方式调取与用户问题相匹配的内容块。高质量模式提供向量检索、全文检索和混合检索三种检索设置。关于各个设置的详细说明,请继续阅读[检索设置](#指定检索方式)。 - - 选择高质量模式后,当前知识库的索引方式无法在后续降级为 **“经济”索引模式**。如需切换,建议重新创建知识库并重选索引方式。 - - > 如需了解更多关于嵌入技术与向量的说明,请参考[《Embedding 技术与 Dify》](https://mp.weixin.qq.com/s/vmY_CUmETo2IpEBf1nEGLQ)。 - - ![高质量模式](https://assets-docs.dify.ai/2024/12/51442c8fcd05479616a3dd8279a4853a.png) - - **启用 Q\&A 模式(可选,仅适用于[社区版](../../../getting-started/install-self-hosted/))** - - 开启该模式后,系统将对已上传的文本进行分段。总结内容后为每个分段自动生成 Q\&A 匹配对。与常见的 「Q to P」(用户问题匹配文本段落)策略不同,QA 模式采用 「Q to Q」(问题匹配问题)策略。 - - 这是因为 「常见问题」 文档里的文本**通常是具备完整语法结构的自然语言**,Q to Q 模式会令问题和答案的匹配更加清晰,并同时满足一些高频和高相似度问题的提问场景。 - - > **Q\&A 模式仅支持处理 「中英日」 三语。启用该模式后可能会消耗更多的 LLM Tokens,并且无法使用**[**经济型索引方法**](setting-indexing-methods.md#jing-ji)**。** - - ![Q\&A Chunking](https://assets-docs.dify.ai/2024/12/70960a237d4f5eaed2dbf46a2cca2bf7.png) - - 当用户提问时,系统会找出与之最相似的问题,然后返回对应的分段作为答案。这种方式更加精确,因为它直接针对用户问题进行匹配,可以更准确地帮助用户检索真正需要的信息。 - - ![Q to P 与 Q to Q 的索引模式区别](https://assets-docs.dify.ai/2024/12/8745ccabff56290eae329a9d3592f745.png) - - - **经济** - - 在经济模式下,每个区块内使用 10 个关键词进行检索,降低了准确度但无需产生费用。对于检索到的区块,仅提供倒排索引方式选择最相关的区块,详细说明请阅读[下文](#指定检索方式)。 - - 选择经济型索引方式后,若感觉实际的效果不佳,可以在知识库设置页中升级为 **“高质量”索引方式**。 - - ![经济模式](https://assets-docs.dify.ai/2024/12/3b86e6b484da39452c164cb6372a7242.png) - - - -## 指定检索方式 - -知识库在接收到用户查询问题后,按照预设的检索方式在已有的文档内查找相关内容,提取出高度相关的信息片段供语言模型生成高质量答案。这将决定 LLM 所能获取的背景信息,从而影响生成结果的准确性和可信度。 - -常见的检索方式包括基于向量相似度的语义检索,以及基于关键词的精准匹配:前者将文本内容块和问题查询转化为向量,通过计算向量相似度匹配更深层次的语义关联;后者通过倒排索引,即搜索引擎常用的检索方法,匹配问题与关键内容。 - -不同的索引方法对应差异化的检索设置。 - - - - **高质量索引** - - 在高质量索引方式下,Dify 提供向量检索、全文检索与混合检索设置: - - ![检索设置](https://assets-docs.dify.ai/2024/12/9b02fc353324221cc91f185a350775b6.png) - - **向量检索** - - **定义:** 向量化用户输入的问题并生成查询文本的数学向量,比较查询向量与知识库内对应的文本向量间的距离,寻找相邻的分段内容。 - - ![向量检索](https://assets-docs.dify.ai/2024/12/620044faa47a5037f85b32a27a56fce5.png) - - **向量检索设置:** - - **Rerank 模型:** 默认关闭。开启后将使用第三方 Rerank 模型再一次重排序由向量检索召回的内容分段,以优化排序结果。帮助 LLM 获取更加精确的内容,辅助其提升输出的质量。开启该选项前,需前往“设置” → “模型供应商”,提前配置 Rerank 模型的 API 秘钥。 - - > 开启该功能后,将消耗 Rerank 模型的 Tokens,详情请参考对应模型的价格说明。 - - **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。默认值为 3,数值越高,预期被召回的文本分段数量越多。 - - **Score 阈值:** 用于设置文本片段筛选的相似度阈值,只召回超过设置分数的文本片段,默认值为 0.5。数值越高说明对于文本与问题要求的相似度越高,预期被召回的文本数量也越少。 - - > TopK 和 Score 设置仅在 Rerank 步骤生效,因此需要添加并开启 Rerank 模型才能应用两者中的设置参数。 - - *** - - **全文检索** - - **定义:** 关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。 - - ![全文检索](https://assets-docs.dify.ai/2024/12/513bff1ca38ec746b3246502b0311b39.png) - - **Rerank 模型:** 默认关闭。开启后将使用第三方 Rerank 模型再一次重排序由全文检索召回的内容分段,以优化排序结果。向 LLM 发送经过重排序的分段,辅助其提升输出的内容质量。开启该选项前,需前往“设置” → “模型供应商”,提前配置 Rerank 模型的 API 秘钥。 - - > 开启该功能后,将消耗 Rerank 模型的 Tokens,详情请参考对应模型的价格说明。 - - **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。 - - **Score 阈值:** 用于设置文本片段筛选的相似度阈值,只召回超过设置分数的文本片段,默认值为 0.5。数值越高说明对于文本与问题要求的相似度越高,预期被召回的文本数量也越少。 - - > TopK 和 Score 设置仅在 Rerank 步骤生效,因此需要添加并开启 Rerank 模型才能应用两者中的设置参数。 - - *** - - **混合检索** - - **定义:** 同时执行全文检索和向量检索,或 Rerank 模型,从查询结果中选择匹配用户问题的最佳结果。 - - ![混合检索](https://assets-docs.dify.ai/2024/12/bd2621bfe8a1a8e21fca0743ec495a9e.png) - - 在混合检索设置内可以选择启用 **“权重设置”** 或 **“Rerank 模型”**。 - - * **权重设置** - - 允许用户赋予语义优先和关键词优先自定义的权重。关键词检索指的是在知识库内进行全文检索(Full Text Search),语义检索指的是在知识库内进行向量检索(Vector Search)。 - - * **将语义值拉至 1** - - **仅启用语义检索模式**。借助 Embedding 模型,即便知识库中没有出现查询中的确切词汇,也能通过计算向量距离的方式提高搜索的深度,返回正确内容。此外,当需要处理多语言内容时,语义检索能够捕捉不同语言之间的意义转换,提供更加准确的跨语言搜索结果。 - * **将关键词的值拉至 1** - - **仅启用关键词检索模式**。通过用户输入的信息文本在知识库全文匹配,适用于用户知道确切的信息或术语的场景。该方法所消耗的计算资源较低,适合在大量文档的知识库内快速检索。 - * **自定义关键词和语义权重** - - 除了将不同的数值拉至 1,你还可以不断调试二者的权重,找到符合业务场景的最佳权重比例。 - - > 语义检索指的是比对用户问题与知识库内容中的向量距离。距离越近,匹配的概率越大。参考阅读:[《Dify:Embedding 技术与 Dify 知识库设计/规划》](https://mp.weixin.qq.com/s/vmY_CUmETo2IpEBf1nEGLQ)。 - - *** - - * **Rerank 模型** - - 默认关闭。开启后将使用第三方 Rerank 模型再一次重排序由混合检索召回的内容分段,以优化排序结果。向 LLM 发送经过重排序的分段,辅助其提升输出的内容质量。开启该选项前,需前往“设置” → “模型供应商”,提前配置 Rerank 模型的 API 秘钥。 - - > 开启该功能后,将消耗 Rerank 模型的 Tokens,详情请参考对应模型的价格说明。 - - **“权重设置”** 和 **“Rerank 模型”** 设置内支持启用以下选项: - - **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。 - - **Score 阈值:** 用于设置文本片段筛选的相似度阈值,即:只召回超过设置分数的文本片段。系统默认关闭该设置,即不会对召回的文本片段相似值过滤。打开后默认值为 0.5。数值越高,预期被召回的文本数量越少。 - - - **倒排索引** - - 在经济索引方式下,仅提供**倒排索引方式**。这是一种用于快速检索文档中关键词的索引结构,常用于在线搜索引擎。倒排索引仅支持 **TopK** 设置项。 - - **TopK:** - - 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。 - - ![倒排索引](https://assets-docs.dify.ai/2024/12/b417cd028131d34779993fbcbb8dbdd7.png) - - - -## 阅读更多 - -指定检索设置后,你可以参考以下文档查看在实际场景下,关键词与内容块的匹配情况。 - - - 查看实际场景下的关键词与内容块匹配情况 - diff --git a/zh-hans/guides/knowledge-base/indexing-and-retrieval/hybrid-search.mdx b/zh-hans/guides/knowledge-base/indexing-and-retrieval/hybrid-search.mdx index c0553edf..4432ddfa 100644 --- a/zh-hans/guides/knowledge-base/indexing-and-retrieval/hybrid-search.mdx +++ b/zh-hans/guides/knowledge-base/indexing-and-retrieval/hybrid-search.mdx @@ -33,7 +33,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 在混合检索中,你需要在数据库中提前建立向量索引和关键词索引,在用户问题输入时,分别通过两种检索器在文档中检索出最相关的文本。 - + “混合检索”实际上并没有明确的定义,本文以向量检索和关键词检索的组合为示例。如果我们使用其他搜索算法的组合,也可以被称为“混合检索”。比如,我们可以将用于检索实体关系的知识图谱技术与向量检索技术结合。 @@ -45,7 +45,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 定义:通过生成查询嵌入并查询与其向量表示最相似的文本分段。 - + **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。 @@ -59,7 +59,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 定义:索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段。 - + **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。 @@ -71,7 +71,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果,需配置 Rerank 模型 API。 - + **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。 @@ -83,7 +83,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 进入“数据集->创建数据集”页面并在检索设置中设置不同的检索模式: - + ### 数据集设置中修改检索模式 @@ -91,7 +91,7 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 进入“数据集->选择数据集->设置”页面中可以对已创建的数据集修改不同的检索模式。 - + ### 提示词编排中修改检索模式 @@ -99,5 +99,5 @@ RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的 进入“提示词编排->上下文->选择数据集->设置”页面中可以在创建应用时修改不同的检索模式。 - + diff --git a/zh-hans/guides/knowledge-base/indexing-and-retrieval/rerank.mdx b/zh-hans/guides/knowledge-base/indexing-and-retrieval/rerank.mdx index 8c3b0797..34e38a4d 100644 --- a/zh-hans/guides/knowledge-base/indexing-and-retrieval/rerank.mdx +++ b/zh-hans/guides/knowledge-base/indexing-and-retrieval/rerank.mdx @@ -10,7 +10,7 @@ version: '简体中文' **重排序模型会计算候选文档列表与用户问题的语义匹配度,根据语义匹配度重新进行排序,从而改进语义排序的结果**。其原理是计算用户问题与给定的每个候选文档之间的相关性分数,并返回按相关性从高到低排序的文档列表。常见的 Rerank 模型如:Cohere rerank、bge-reranker 等。 - + 在大多数情况下,在重排序之前会有一次前置检索,这是由于计算查询与数百万个文档之间的相关性得分将会非常低效。所以,**重排序一般都放在搜索流程的最后阶段,非常适合用于合并和排序来自不同检索系统的结果**。 @@ -30,7 +30,7 @@ version: '简体中文' Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere”页面填入 Rerank 模型的 API 秘钥: - + ### @@ -46,7 +46,7 @@ Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere” 进入“数据集->创建数据集->检索设置”页面并在添加 Rerank 设置。除了在创建数据集可以设置 Rerank ,你也可以在已创建的数据集设置内更改 Rerank 配置,在应用编排的数据集召回模式设置中更改 Rerank 配置。 - + **TopK:** 用于设置 Rerank 后返回相关文档的数量。 @@ -60,5 +60,5 @@ Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere” 查看更多关于多路召回模式的说明,[《多路召回》](/zh-hans/guides/knowledge-base/integrate-knowledge-within-application)。 - + diff --git a/zh-hans/guides/knowledge-base/indexing-and-retrieval/rerank.mdx.bak b/zh-hans/guides/knowledge-base/indexing-and-retrieval/rerank.mdx.bak deleted file mode 100644 index 0f0bab5a..00000000 --- a/zh-hans/guides/knowledge-base/indexing-and-retrieval/rerank.mdx.bak +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: 重排序 -version: '简体中文' ---- - -### 为什么需要重排序? - -混合检索能够结合不同检索技术的优势获得更好的召回结果,但在不同检索模式下的查询结果需要进行合并和归一化(将数据转换为统一的标准范围或分布,以便更好地进行比较、分析和处理),然后再一起提供给大模型。这时候我们需要引入一个评分系统:重排序模型(Rerank Model)。 - -**重排序模型会计算候选文档列表与用户问题的语义匹配度,根据语义匹配度重新进行排序,从而改进语义排序的结果**。其原理是计算用户问题与给定的每个候选文档之间的相关性分数,并返回按相关性从高到低排序的文档列表。常见的 Rerank 模型如:Cohere rerank、bge-reranker 等。 - - - - - -在大多数情况下,在重排序之前会有一次前置检索,这是由于计算查询与数百万个文档之间的相关性得分将会非常低效。所以,**重排序一般都放在搜索流程的最后阶段,非常适合用于合并和排序来自不同检索系统的结果**。 - -不过,重排序并不是只适用于不同检索系统的结果合并,即使是在单一检索模式下,引入重排序步骤也能有效帮助改进文档的召回效果,比如我们可以在关键词检索之后加入语义重排序。 - -在具体实践过程中,除了将多路查询结果进行归一化之外,在将相关的文本分段交给大模型之前,我们一般会限制传递给大模型的分段个数(即 TopK,可以在重排序模型参数中设置),这样做的原因是大模型的输入窗口存在大小限制(一般为 4K、8K、16K、128K 的 Token 数量),你需要根据选用的模型输入窗口的大小限制,选择合适的分段策略和 TopK 值。 - -需要注意的是,即使模型上下文窗口很足够大,过多的召回分段会可能会引入相关度较低的内容,导致回答的质量降低,所以重排序的 TopK 参数并不是越大越好。 - -重排序并不是搜索技术的替代品,而是一种用于增强现有检索系统的辅助工具。**它最大的优势是不仅提供了一种简单且低复杂度的方法来改善搜索结果,允许用户将语义相关性纳入现有的搜索系统中,而且无需进行重大的基础设施修改。** - -以 Cohere Rerank 为例,你只需要注册账户和申请 API ,接入只需要两行代码。另外,他们也提供了多语言模型,也就是说你可以将不同语言的文本查询结果进行一次性排序。 - -### 如何配置 Rerank 模型? - -Dify 目前已支持 Cohere Rerank 模型,进入“模型供应商-> Cohere”页面填入 Rerank 模型的 API 秘钥: - - - - - -### - -### 如何获取 Cohere Rerank 模型? - -登录:[https://cohere.com/rerank](https://cohere.com/rerank),在页内注册并申请 Rerank 模型的使用资格,获取 API 秘钥。 - -### - -### 数据集检索模式中设置 Rerank 模型 - -进入“数据集->创建数据集->检索设置”页面并在添加 Rerank 设置。除了在创建数据集可以设置 Rerank ,你也可以在已创建的数据集设置内更改 Rerank 配置,在应用编排的数据集召回模式设置中更改 Rerank 配置。 - - - - - -**TopK:** 用于设置 Rerank 后返回相关文档的数量。 - -**Score 阈值:** 用于设置 Rerank 后返回相关文档的最低分值。设置 Rerank 模型后,TopK 和 Score 阈值设置仅在 Rerank 步骤生效。 - -### 数据集多路召回模式中设置 Rerank 模型 - -进入“提示词编排->上下文->设置”页面中设置为多路召回模式时需开启 Rerank 模型。 - -查看更多关于多路召回模式的说明,[《多路召回》](/zh-cn/user-guide/knowledge-base/integrate-knowledge-within-application)。 - - - - diff --git a/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx b/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx index 7c503941..c92291ba 100644 --- a/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx +++ b/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval-augment.mdx @@ -12,7 +12,7 @@ version: '简体中文' 在下图中,当用户提问时 “美国总统是谁?” 时,系统并不是将问题直接交给大模型来回答,而是先将用户问题在知识库中(如下图中的维基百科)进行向量搜索,通过语义相似度匹配的方式查询到相关的内容(拜登是美国现任第46届总统…),然后再将用户问题和搜索到的相关知识提供给大模型,使得大模型获得足够完备的知识来回答问题,以此获得更可靠的问答结果。 - + **为什么需要这样做呢?** diff --git a/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx b/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx index 6edd2274..440f1a9a 100644 --- a/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx +++ b/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx @@ -6,7 +6,7 @@ version: '简体中文' 当用户构建知识库问答类的 AI 应用时,如果在应用内关联了多个知识库,此时需要应用 Dify 的召回策略决定从哪些知识库中检索内容。 - + ### 召回设置 @@ -18,7 +18,7 @@ version: '简体中文' 以下是多路召回模式的技术流程图: - + 由于多路召回模式不依赖于模型的推理能力或知识库描述,该模式在多知识库检索时能够获得质量更高的召回效果,除此之外加入 Rerank 步骤也能有效改进文档召回效果。因此,当创建的知识库问答应用关联了多个知识库时,我们更推荐将召回模式配置为多路召回。 diff --git a/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx.bak b/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx.bak deleted file mode 100644 index 97e68f5a..00000000 --- a/zh-hans/guides/knowledge-base/indexing-and-retrieval/retrieval.mdx.bak +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: 召回模式 -version: '简体中文' ---- - -当用户构建知识库问答类的 AI 应用时,如果在应用内关联了多个知识库,此时需要应用 Dify 的召回策略决定从哪些知识库中检索内容。 - - - - - -### 召回设置 - -根据用户意图同时匹配所有知识库,从多路知识库查询相关文本片段,经过重排序步骤,从多路查询结果中选择匹配用户问题的最佳结果,需配置 Rerank 模型 API。在多路召回模式下,检索器会在所有与应用关联的知识库中去检索与用户问题相关的文本内容,并将多路召回的相关文档结果合并,并通过 Rerank 模型对检索召回的文档进行语义重排序。 - -在多路召回模式下,建议配置 Rerank 模型。你可以阅读 [重排序](/zh-cn/user-guide/knowledge-base/indexing-and-retrieval/rerank) 了解更多。 - -以下是多路召回模式的技术流程图: - - - - - -由于多路召回模式不依赖于模型的推理能力或知识库描述,该模式在多知识库检索时能够获得质量更高的召回效果,除此之外加入 Rerank 步骤也能有效改进文档召回效果。因此,当创建的知识库问答应用关联了多个知识库时,我们更推荐将召回模式配置为多路召回。 diff --git a/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance.mdx b/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance.mdx index eca1117c..97f9548e 100644 --- a/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance.mdx +++ b/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance.mdx @@ -10,7 +10,7 @@ version: '简体中文' 在 Dify 团队首页中,点击顶部的 “知识库” tab 页,选择需要管理的知识库,轻点左侧导航中的**设置**进行调整。你可以调整知识库名称、描述、可见权限、索引模式、Embedding 模型和检索设置。 - + **知识库名称**,用于区分不同的知识库。 @@ -32,7 +32,7 @@ version: '简体中文' Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库内的文档、分段进行增删改查等日常管理维护操作,请参考[知识库 API 文档](/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api)。 - + ## 维护知识库中的文本 @@ -44,7 +44,7 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 点击 「知识库」 > 「文档列表 ,然后轻点 「 添加文件 」,即可在已创建的知识库内上传新的文档。 - + *** @@ -62,7 +62,7 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 知识库内已上传的每个文档都会以文本分段(Chunks)的形式进行存储,你可以在分段列表内查看每一个分段的具体文本内容。 - + *** @@ -78,19 +78,19 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 * **过短的文本分段**,导致语义缺失; - + * **过长的文本分段**,导致语义噪音影响匹配准确性; - + * **明显的语义截断**,在使用最大分段长度限制时会出现强制性的语义截断,导致召回时缺失内容; - + *** @@ -100,23 +100,23 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 在分段列表内点击 「 添加分段 」 ,可以在文档内自行添加一个或批量添加多个自定义分段。 - + 批量添加分段时,你需要先下载 CSV 格式的分段上传模板,并按照模板格式在 Excel 内编辑所有的分段内容,再将 CSV 文件保存后上传。 - + *** -### ![]()编辑文本分段 +### 编辑文本分段 在分段列表内,你可以对已添加的分段内容直接进行编辑修改。包括分段的文本内容和关键词。 - + *** @@ -130,5 +130,5 @@ Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库 - + diff --git a/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/introduction.mdx.bak b/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/introduction.mdx.bak deleted file mode 100644 index 06de5e21..00000000 --- a/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/introduction.mdx.bak +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: 管理知识库 ---- - -> 知识库管理页仅面向团队所有者、团队管理员、拥有编辑权限的角色开放。 - -点击 Dify 平台顶部的“知识库”按钮,选择需要管理的知识库。轻点左侧导航中的**设置**进行调整。 - -你可以在此处调整知识库名称、描述、可见权限、索引模式、Embedding 模型和检索设置。 - -![知识库设置](https://assets-docs.dify.ai/2024/12/20fc93428f8f20f7acfce665c4ed4ddf.png) - -* **知识库名称**,用于区分不同的知识库。 -* **知识库描述**,用于描述知识库内文档代表的信息。 -* **可见权限**,提供 **“只有我”** 、**“所有团队成员”** 和 **“部分团队成员”** 三种权限范围。不具有权限的人将无法访问该知识库。若选择将知识库公开至其它成员,则意味着其它成员同样具备该知识库的查看、编辑和删除权限。 -* **索引方法**,详细说明请参考[索引方法文档](../create-knowledge-and-upload-documents/setting-indexing-methods)。 -* **Embedding 模型**, 修改知识库的嵌入模型,修改 Embedding 模型将对知识库内的所有文档重新嵌入,原先的嵌入将会被删除。 -* **检索设置**,详细说明请参考[检索设置文档](../create-knowledge-and-upload-documents/setting-indexing-methods)。 - -*** - -### 查看知识库内已关联的应用 - -知识库将会在左侧信息栏中显示已关联的应用数量。将鼠标悬停至圆形信息图标时将显示所有已关联的 Apps 列表,点击右侧的跳转按钮即可快速查看对应的应用。 - -![查看已关联应用](https://assets-docs.dify.ai/2024/12/28899b9b0eba8996f364fb74e5b94c7f.png) - -*** - -你可以通过网页维护或 API 两种方式维护知识库内的文档。 - -#### 维护知识库内文档 - -支持管理知识库内的文档和对应的文档分段。详细说明请参考以下文档: - - - 详细说明请参考此文档 - - -#### 使用 API 维护知识库 - -Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库内的文档、分段进行增删改查等日常管理维护操作,请参考以下文档: - - - 详细说明请参考此文档 - - -![](https://assets-docs.dify.ai/2025/03/59f9f945a1d20a26c87662292d577db2.png) diff --git a/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents.mdx.bak b/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents.mdx.bak deleted file mode 100644 index b46ab4df..00000000 --- a/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents.mdx.bak +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: 维护知识库内文档 ---- - -### 添加文档 - -知识库是文档的集合。文档支持本地上传,或导入其它在线数据源。知识库内的文档对应数据源中的一个文件单位,例如 Notion 库内的一篇文档或新的在线文档网页。 - -点击“知识库” → “文档列表” → “添加文件”,在已创建的知识库内上传新的文档。 - -![在知识库内上传新文档](https://assets-docs.dify.ai/2024/12/424ab491aaebe09b490a36d26c9fa8da.png) - -### 启用 / 禁用 / 归档 / 删除文档 - -**启用**:处于正常使用状态的文档,支持编辑内容与被知识库检索。对于已被禁用的文档,允许重新启用。已归档的文档需撤销归档状态后才能重新启用。 - -**禁用**:对于不希望在使用 AI 应用时被检索的文档,可以关闭文档右侧的蓝色开关按钮以禁用文档。禁用文档后,仍然可以编辑当前内容。 - -**归档**:对于一些不再使用的旧文档数据,如果不想删除可以将其归档。归档后的数据就只能查看或删除,无法重新编辑。你可以在知识库文档列表,点击归档按钮;或在文档详情页内进行归档。**归档操作支持撤销。** - -**删除**:⚠️ 危险操作。对于一些错误文档或明显有歧义的内容,可以点击文档右侧菜单按钮中的删除。删除后的内容将无法被找回,请进行谨慎操作。 - -> 以上选项均支持选中多个文档后批量操作。 - -![禁用或归档文档](https://assets-docs.dify.ai/2024/12/5e0e64859a1ac51602d167ec55ef9350.png) - -### 注意事项 - -* 对于 Sandbox/Free 版本用户,未使用知识库的将在 **7 天** 后自动禁用; -* 对于 Professional/Team 版本用户,未使用知识库的将在 **30 天** 后自动禁用。 - -![一键恢复被禁用的文档](https://assets-docs.dify.ai/2024/12/bf6485b17aec716741eb65e307c2274c.png) - -*** - -## 管理文本分段 - -### 查看文本分段 - -知识库内已上传的每个文档都会以文本分段(Chunks)形式进行存储。点击文档标题,在详情页中查看当前文档的分段列表,每页默认展示 10 个区块,你可以在网页底部调整每页的展示数量。 - -每个内容区块展示前 2 行的预览内容。若需要查看更加分段内的完整内容,轻点“展开分段”按钮即可查看。 - -![展开内容分段](https://assets-docs.dify.ai/2024/12/86cc80f17fab1eea75aa73ee681e4663.png) - -你可以通过筛选栏快速查看所有已启用 / 未启用的文档。 - -![筛选文档分段](https://assets-docs.dify.ai/2025/01/47ef07319175a102bfd1692dcc6cac9b.png) - -*** - -### 检查分段质量 - -文档分段对于知识库应用的问答效果有明显影响,在将知识库与应用关联之前,建议人工检查分段质量。 - -检查分段质量时,一般需要关注以下几种情况: - -* **过短的文本分段**,导致语义缺失; -* **过长的文本分段**,导致语义噪音影响匹配准确性; -* **明显的语义截断**,在使用最大分段长度限制时会出现强制性的语义截断,导致召回时缺失内容; - -![分段质量检查示例](https://assets-docs.dify.ai/2024/12/ee081e98c1649aea4a5c2b15b88e11aa.png) -![分段质量检查示例](https://assets-docs.dify.ai/2024/12/ac47381ae4be183768dd025c37c049fa.png) -![分段质量检查示例](https://assets-docs.dify.ai/2024/12/b8ab7ac84028b0b16c3948f35015e069.png) - -*** - -### 添加文本分段 - -知识库中的文档支持单独添加文本分段,不同的分段模式对应不同的分段添加方法。 - - -添加文本分段为付费功能,请前往[此处](https://dify.ai/pricing)升级账号以使用功能。 - - - - - 点击分段列表顶部的“添加分段”按钮,可以在文档内自行添加一个或批量添加多个自定义分段。 - - ![通用模式 - 添加分段](https://assets-docs.dify.ai/2024/12/552ff4ab9e77130ad09aaef878b19cc9.png) - - - 点击分段列表顶部的「 添加分段 」按钮,可以在文档内自行添加一个或批量添加多个自定义**父分段。** - - ![父子模式 — 添加分区](https://assets-docs.dify.ai/2024/12/ed4be3bf178e3a41d53bcc10255ad3b2.png) - - 填写内容后,勾选尾部“连续新增”钮后,可以继续添加文本。 - - - -*** - -### 编辑文本分段 - - - - 你可以对已添加的分段内容直接进行编辑或修改,包括修改分段内的文本内容或关键词。 - - ![编辑文档分段](https://assets-docs.dify.ai/2024/12/8220e412e4c5a2bf729fb5dfcc1b7f4c.png) - - - 父分段包含其本身所包含的子分段内容,两者相互独立。你可以单独修改父分段或子分段的内容。 - - ![修改父分段](https://assets-docs.dify.ai/2024/12/7eedfee59a3c978cc4a29d9cf06fbbcc.png) - - 修改父分段后,点击 **“保存”** 后将不会影响子分段的内容。如需重新生成子分段内容,轻点 **“保存并重新生成子分段”**。 - - - -### 修改已上传文档的文本分段 - -已创建的知识库支持重新配置文档分段。 - - - - - 可在单个分段内保留更多上下文,适合需要处理复杂或上下文相关任务的场景。 - - 分段数量减少,从而降低处理时间和存储需求。 - - - - 提供更高的粒度,适合精确提取或总结文本内容。 - - 减少超出模型 token 限制的风险,更适配限制严格的模型。 - - - -你可以访问 **分段设置**,点击 **保存并处理** 按钮以保存对分段设置的修改,并重新触发当前文档的分段流程。当你保存设置并完成嵌入处理后,文档的分段列表将自动更新。 - -![Chunk Settings](https://assets-docs.dify.ai/2025/01/36cb20be8aae1f368ebf501c0d579051.png) - -*** - -### 元数据管理 - -如需了解元数据的相关信息,请参阅 [元数据](../metadata)。 diff --git a/zh-hans/guides/knowledge-base/knowledge-base-creation/introduction.mdx.bak b/zh-hans/guides/knowledge-base/knowledge-base-creation/introduction.mdx.bak deleted file mode 100644 index cf63160a..00000000 --- a/zh-hans/guides/knowledge-base/knowledge-base-creation/introduction.mdx.bak +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: 创建步骤 ---- - -创建知识库并上传文档大致分为以下步骤: - -1. 创建知识库。通过上传本地文件、导入在线数据或创建一个空的知识库。 - - - 通过上传本地文件、导入在线数据或创建一个空的知识库。 - - -2. 指定分段模式。该阶段是内容的预处理与数据结构化过程,长文本将会被划分为多个内容分段。你可以在此环节预览文本的分段效果。 - - - 了解文本分段和数据清洗流程 - - -3. 设定索引方法和检索设置。知识库在接收到用户查询问题后,按照预设的检索方式在已有的文档内查找相关内容,提取出高度相关的信息片段供语言模型生成高质量答案。 - - - 了解如何设置索引方法和检索参数 - - -5. 等待分段嵌入 -6. 完成上传,在应用内关联知识库并使用。你可以参考[在应用内集成知识库](../integrate-knowledge-within-application),搭建出能够基于知识库进行问答的 LLM 应用。如需修改或管理知识库,请参考[知识库管理与文档维护](/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/introduction)。 - -![完成知识库的创建](https://assets-docs.dify.ai/2024/12/a3362a1cd384cb2b539c9858de555518.png) - -*** - -### 参考阅读 - -#### ETL - -在 RAG 的生产级应用中,为了获得更好的数据召回效果,需要对多源数据进行预处理和清洗,即 ETL (_extract, transform, load_)。为了增强非结构化/半结构化数据的预处理能力,Dify 支持了可选的 ETL 方案:**Dify ETL** 和[ ](https://docs.unstructured.io/welcome)[**Unstructured ETL** ](https://unstructured.io/)。Unstructured 能够高效地提取并转换你的数据为干净的数据用于后续的步骤。Dify 各版本的 ETL 方案选择: - -* SaaS 版不可选,默认使用 Unstructured ETL; -* 社区版可选,默认使用 Dify ETL ,可通过[环境变量](/zh-hans/getting-started/install-self-hosted/environments#zhi-shi-ku-pei-zhi)开启 Unstructured ETL; - -文件解析支持格式的差异: - -| DIFY ETL | Unstructured ETL | -| ---------------------------------------------- | ------------------------------------------------------------------------ | -| txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv | txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv、eml、msg、pptx、ppt、xml、epub | - -不同的 ETL 方案在文件提取效果的方面也会存在差异,想了解更多关于 Unstructured ETL 的数据处理方式,请参考[官方文档](https://docs.unstructured.io/open-source/core-functionality/partitioning)。 - -*** - -#### **Embedding** - -**Embedding 嵌入**是一种将离散型变量(如单词、句子或者整个文档)转化为连续的向量表示的技术。它可以将高维数据(如单词、短语或图像)映射到低维空间,提供一种紧凑且有效的表示方式。这种表示不仅减少了数据的维度,还保留了重要的语义信息,使得后续的内容检索更加高效。 - -**Embedding 模型**是一种专门用于将文本向量化的大语言模型,它擅长将文本转换为密集的数值向量,有效捕捉语义信息。 - -> 如需了解更多,请参考:[《Dify:Embedding 技术与 Dify 知识库设计/规划》](https://mp.weixin.qq.com/s/vmY_CUmETo2IpEBf1nEGLQ)。 - -*** - -#### **元数据** - -如需使用元数据功能管理知识库,请参阅 [元数据](../metadata)。 diff --git a/zh-hans/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx b/zh-hans/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx index 4b532d55..ed8529d9 100644 --- a/zh-hans/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx +++ b/zh-hans/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx @@ -26,7 +26,7 @@ version: '简体中文' - 单文档的上传大小限制为 15MB; - + *** @@ -61,7 +61,7 @@ version: '简体中文' 自动模式适合对分段规则与预处理规则尚不熟悉的初级用户。在该模式下,Dify 将为你自动分段与清洗内容文件。 - Automatic segmentation and cleaning + Automatic segmentation and cleaning @@ -83,7 +83,7 @@ version: '简体中文' * 删除所有 URL 和电子邮件地址; - + @@ -103,14 +103,14 @@ version: '简体中文' > 如需了解更多,请参考[《Embedding 技术与 Dify》](https://mp.weixin.qq.com/s/vmY\_CUmETo2IpEBf1nEGLQ)。 高质量索引方式提供向量检索、全文检索和混合检索三种检索设置。关于更多检索设置的说明,请阅读 [检索设置](/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text)。 - + 使用离线的向量引擎与关键词索引方式,降低了准确度但无需额外花费 Token,产生费用。检索方式仅提供倒排索引,详细说明请阅读[下文](/zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion)。 - + @@ -133,7 +133,7 @@ version: '简体中文' **定义:** 向量化用户输入的问题并生成查询向量,比较查询向量与知识库内对应的文本向量距离,寻找最近的分段内容。 - + **向量检索设置:** @@ -153,7 +153,7 @@ version: '简体中文' **定义:** 关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。 - + **Rerank 模型:** 使用第三方 Rerank 模型对全文检索召回后的分段再一次进行语义重排序,优化排序结果。在“模型供应商”页面配置 Rerank 模型的 API 秘钥之后,在检索设置中打开“Rerank 模型”。 @@ -170,7 +170,7 @@ version: '简体中文' **定义:** 同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果。在此模式下可以指定“权重设置”(无需配置 Rerank 模型 API)或选择 Rerank 模型进行检索。 - + 在混合检索设置内可以选择启用**“权重设置”**或**“Rerank 模型”**。 @@ -218,7 +218,7 @@ version: '简体中文' **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。 - + 指定检索设置后,你可以参考[召回测试/引用归属](/zh-hans/guides/knowledge-base/retrieval-test-and-citation)查看关键词与内容块的匹配情况。 diff --git a/zh-hans/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx.bak b/zh-hans/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx.bak deleted file mode 100644 index b4d9941d..00000000 --- a/zh-hans/guides/knowledge-base/knowledge-base-creation/upload-documents.mdx.bak +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: 创建知识库 & 上传文档 -version: '简体中文' ---- - -创建知识库并上传文档大致分为以下步骤: - -1. 在 Dify 团队内创建知识库,从本地选择你需要上传的文档; -2. 选择分段与清洗模式,预览效果; -3. 配置索引方式和检索设置; -4. 等待分段嵌入; -5. 完成上传,在应用内关联并使用 🎉 - -以下是各个步骤的详细说明: - -## 1 创建知识库 - -在 Dify 主导航栏中点击知识库,在该页面你可以看到团队内的知识库,点击“**创建知识库”** 进入创建向导。 - -- 拖拽或选中文件进行上传,批量上传的文件数量取决于[订阅计划](https://dify.ai/pricing); -- 如果还没有准备好文档,可以先创建一个空知识库; -- 如果你在创建知识库时选择了使用外部数据源(Notion 或同步 Web 站点),该知识库的类型不可更改;此举是为了防止单一知识库存在多数据源而造成的管理困难。如果你需要使用多个数据源,建议创建多个知识库并使用 [多路召回](/zh-cn/user-guide/knowledge-base/indexing-and-retrieval/rerank) 模式在同一个应用内引用多个知识库。 - -**上传文档存在以下限制:** - -- 单文档的上传大小限制为 15MB; - - - - - -*** - -## 2 选择分段与清洗策略 - -将内容上传至知识库后,需要先对内容进行分段与数据清洗,该阶段可以被理解为是对内容预处理与结构化。 - - - -* **分段** - - 大语言模型存在有限的上下文窗口,无法将知识库中的所有内容发送至 LLM。因此可以将整段长文本分段处理,再基于用户问题,召回与关联度最高的段落内容,即采用分段 TopK 召回模式。此外,将用户问题与文本分段进行语义匹配时,合适的分段大小有助于找到知识库内关联性最高的文本内容,减少信息噪音。 - -* **清洗** - - 为了保证文本召回的效果,通常需要在将数据录入知识库之前便对其进行清理。例如,如果文本内容中存在无意义的字符或者空行,可能会影响问题回复的质量。关于 Dify 内置的清洗策略,详细说明请参考 [ETL](create-knowledge-and-upload-documents.md#etl)。 - - - -支持以下两种策略: - -* **自动分段与清洗** -* **自定义** - - - - - - #### 自动分段与清洗 - - 自动模式适合对分段规则与预处理规则尚不熟悉的初级用户。在该模式下,Dify 将为你自动分段与清洗内容文件。 - - - Automatic segmentation and cleaning - - - - - - #### 自定义 - - 自定义模式适合对于文本处理有明确需求的进阶用户。在自定义模式下,你可以根据不同的文档格式和场景要求,手动配置文本的分段规则和清洗策略。 - - **分段规则:** - - * **分段标识符**,指定标识符,系统将在文本中出现该标识符时分段。例如填写 `\n`([正则表达式](https://regexr.com/)中的换行符),文本换行时将自动分段; - * **分段最大长度**,根据分段的文本字符数最大上限来进行分段,超出该长度时将强制分段。一个分段的最大长度为 4000 Tokens; - * **分段重叠长度**,分段重叠指的是在对数据进行分段时,段与段之间存在一定的重叠部分。这种重叠可以帮助提高信息的保留和分析的准确性,提升召回效果。建议设置为分段长度 Tokens 数的 10-25%; - - **文本预处理规则:** 文本预处理规则可以帮助过滤知识库内部分无意义的内容。 - - * 替换连续的空格、换行符和制表符; - * 删除所有 URL 和电子邮件地址; - - - - - - - -## 3 索引方式 - -指定内容的预处理方法(分段与清洗)后,接下来需要指定对结构化内容的索引方式。索引方式将直接影响 LLM 对知识库内容的检索效率以及回答的准确性。 - -系统提供以下三种索引方式,你可以根据实际需求调整每种方式内的[检索设置](create-knowledge-and-upload-documents.md#id-4-jian-suo-she-zhi): - -* 高质量 -* 经济 - - - - 在高质量模式下,将首先调用 Embedding 嵌入模型(支持切换)将已分段的文本转换为数字向量,帮助开发者更有效地实现大量文本信息的压缩与存储;同时还能够在用户与 LLM 对话时提供更高的准确度。 - > 如需了解更多,请参考[《Embedding 技术与 Dify》](https://mp.weixin.qq.com/s/vmY\_CUmETo2IpEBf1nEGLQ)。 - 高质量索引方式提供向量检索、全文检索和混合检索三种检索设置。关于更多检索设置的说明,请阅读 [检索设置](create-knowledge-and-upload-documents.md#id-4-jian-suo-she-zhi)。 - - - - - - - 使用离线的向量引擎与关键词索引方式,降低了准确度但无需额外花费 Token,产生费用。检索方式仅提供倒排索引,详细说明请阅读[下文](create-knowledge-and-upload-documents.md#dao-pai-suo-yin)。 - - - - - - - -*** - -## 4 检索设置 - -在**高质量索引方式**下,Dify 提供以下 3 种检索方案: - -* **向量检索** -* **全文检索** -* **混合检索** - - - - - - **定义:** 向量化用户输入的问题并生成查询向量,比较查询向量与知识库内对应的文本向量距离,寻找最近的分段内容。 - - - - - - **向量检索设置:** - - **Rerank 模型:** 使用第三方 Rerank 模型对向量检索召回后的分段再一次进行语义重排序,优化排序结果。在“模型供应商”页面配置 Rerank 模型的 API 秘钥之后,在检索设置中打开“Rerank 模型”。 - - **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。默认值为 3,数值越高,预期被召回的文本分段数量越多。 - - **Score 阈值:** 用于设置文本片段筛选的相似度阈值,只召回超过设置分数的文本片段,默认值为 0.5。数值越高说明对于文本与问题要求的相似度越高,预期被召回的文本数量也越少。 - - > TopK 和 Score 设置仅在 Rerank 步骤生效,因此需要添加并开启 Rerank 模型才能应用两者中的设置。 - - - - - - **定义:** 关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。 - - - - - - **Rerank 模型:** 使用第三方 Rerank 模型对全文检索召回后的分段再一次进行语义重排序,优化排序结果。在“模型供应商”页面配置 Rerank 模型的 API 秘钥之后,在检索设置中打开“Rerank 模型”。 - - **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。 - - **Score 阈值:** 用于设置文本片段筛选的相似度阈值,只召回超过设置分数的文本片段,默认值为 0.5。数值越高说明对于文本与问题要求的相似度越高,预期被召回的文本数量也越少。 - - > TopK 和 Score 设置仅在 Rerank 步骤生效,因此需要添加并开启 Rerank 模型才能应用两者中的设置。 - - - - - **定义:** 同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果。在此模式下可以指定“权重设置”(无需配置 Rerank 模型 API)或选择 Rerank 模型进行检索。 - - - - - - 在混合检索设置内可以选择启用**“权重设置”**或**“Rerank 模型”**。 - - **权重设置:** 允许用户赋予语义优先和关键词优先自定义的权重。关键词检索指的是在知识库内进行全文检索(Full Text Search),语义检索指的是在知识库内进行向量检索(Vector Search)。 - - * **语义值为 1** - - 仅启用语义检索模式。借助 Embedding 模型,即便知识库中没有出现查询中的确切词汇,也能通过计算向量距离的方式提高搜索的深度,返回正确内容。此外,当需要处理多语言内容时,语义检索能够捕捉不同语言之间的意义转换,提供更加准确的跨语言搜索结果。 - - > 语义检索指的是比对用户问题与知识库内容中的向量距离。距离越近,匹配的概率越大。参考阅读:[《Dify:Embedding 技术与 Dify 数据集设计/规划》](https://mp.weixin.qq.com/s/vmY\_CUmETo2IpEBf1nEGLQ)。 - - * **关键词值为 1** - - 仅启用关键词检索模式。通过用户输入的信息文本在知识库全文匹配,适用于用户知道确切的信息或术语的场景。该方法所消耗的计算资源较低,适合在大量文档的知识库内快速检索。 - - * **自定义关键词和语义权重** - - 除了仅启用语义检索或关键词检索模式,我们还提供了灵活的自定义权重设置。你可以通过不断调试二者的权重,找到符合业务场景的最佳权重比例。 - - *** - - **Rerank 模型:** 你可以在“模型供应商”页面配置 Rerank 模型的 API 秘钥之后,在检索设置中打开“Rerank 模型”,系统会在混合检索后对已召回的文档结果再一次进行语义重排序,优化排序结果。 - - *** - - **“权重设置”** 和 **“Rerank 模型”** 设置内支持启用以下选项: - - **TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。 - - **Score 阈值:**用于设置文本片段筛选的相似度阈值,即:只召回超过设置分数的文本片段。系统默认关闭该设置,即不会对召回的文本片段相似值过滤。打开后默认值为 0.5。数值越高,预期被召回的文本数量越少。 - - - - - -*** - -在**经济索引方式**下,Dify 仅提供 1 种检索设置: - -#### **倒排索引** - -倒排索引是一种用于快速检索文档中关键词的索引结构,它的基本原理是将文档中的关键词映射到包含这些关键词的文档列表,从而提高搜索效率。具体原理请参考[《倒排索引》](https://zh.wikipedia.org/wiki/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95)。 - -**TopK:** 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。 - - - - - -指定检索设置后,你可以参考[召回测试/引用归属](/zh-cn/user-guide/knowledge-base/retrieval-test-and-citation)查看关键词与内容块的匹配情况。 - -## 5 完成上传 - -配置完上文所述的各项配置后,轻点“保存并处理”即可完成知识库的创建。你可以参考 [在应用内集成知识库](integrate-knowledge-within-application),搭建出能够基于知识库进行问答的 LLM 应用。 - -*** - -## 参考阅读 - -#### ETL - -在 RAG 的生产级应用中,为了获得更好的数据召回效果,需要对多源数据进行预处理和清洗,即 ETL (_extract, transform, load_)。为了增强非结构化/半结构化数据的预处理能力,Dify 支持了可选的 ETL 方案:**Dify ETL** 和[ ](https://docs.unstructured.io/welcome)[**Unstructured ETL** ](https://unstructured.io/)。 - -> Unstructured 能够高效地提取并转换您的数据为干净的数据用于后续的步骤。Dify 各版本的 ETL 方案选择: - -文件解析支持格式的差异: - -| DIFY ETL | Unstructured ETL | -| ---------------------------------------------- | ------------------------------------------------------------------------ | -| txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv | txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv、eml、msg、pptx、ppt、xml、epub | - -不同的 ETL 方案在文件提取效果的方面也会存在差异,想了解更多关于 Unstructured ETL 的数据处理方式,请参考[官方文档](https://docs.unstructured.io/open-source/core-functionality/partitioning)。 - -**Embedding 模型** - -**Embedding 嵌入**是一种将离散型变量(如单词、句子或者整个文档)转化为连续的向量表示的技术。它可以将高维数据(如单词、短语或图像)映射到低维空间,提供一种紧凑且有效的表示方式。这种表示不仅减少了数据的维度,还保留了重要的语义信息,使得后续的内容检索更加高效。 - -**Embedding 模型**是一种专门用于将文本向量化的大语言模型,它擅长将文本转换为密集的数值向量,有效捕捉语义信息。 - -> 如需了解更多,请参考:[《Dify:Embedding 技术与 Dify 数据集设计/规划》](https://mp.weixin.qq.com/s/vmY\_CUmETo2IpEBf1nEGLQ)。 diff --git a/zh-hans/guides/knowledge-base/readme.mdx b/zh-hans/guides/knowledge-base/readme.mdx index d2e419ce..2467747c 100644 --- a/zh-hans/guides/knowledge-base/readme.mdx +++ b/zh-hans/guides/knowledge-base/readme.mdx @@ -30,7 +30,7 @@ LLM 接收到用户的问题后,将首先基于关键词在知识库内检索 将文件上传至“知识库”即可自动完成数据处理。 -> 如果你的团队内部已建有独立知识库,可以通过[连接外部知识库](./knowledge-base-creation/connect-external-knowledge-base)与 Dify 建立连接。 +> 如果你的团队内部已建有独立知识库,可以通过[连接外部知识库](/zh-hans/guides/knowledge-base/connect-external-knowledge-base)与 Dify 建立连接。 ![](https://assets-docs.dify.ai/2025/04/4c2c02ef54a41d45aae3bead7cdd7319.png) @@ -42,4 +42,4 @@ LLM 接收到用户的问题后,将首先基于关键词在知识库内检索 在 Dify 中,知识库(Knowledge)是一系列文档(Documents)的集合,一个文档内可能包含多组内容分段(Chunks),知识库可以被整体集成至一个应用中作为检索上下文使用。文档可以由开发者或运营人员上传,或由其它数据源同步。 -如果你已自建文档库,可以通过[连接外部知识库](./knowledge-base-creation/connect-external-knowledge-base)功能将自有知识库与 Dify 平台相关联。无需重复将内容上传至 Dify 平台内的知识库即可让 AI 应用实时读取自建知识库中的内容。 +如果你已自建文档库,可以通过[连接外部知识库](/zh-hans/guides/knowledge-base/connect-external-knowledge-base)功能将自有知识库与 Dify 平台相关联。无需重复将内容上传至 Dify 平台内的知识库即可让 AI 应用实时读取自建知识库中的内容。 diff --git a/zh-hans/guides/management/personal-account-management.mdx b/zh-hans/guides/management/personal-account-management.mdx index 574ed7e7..dc988525 100644 --- a/zh-hans/guides/management/personal-account-management.mdx +++ b/zh-hans/guides/management/personal-account-management.mdx @@ -50,7 +50,7 @@ Dify 不同版本支持的登录方式如下: * Bahasa Indonesia * Українська(Україна) -Dify 欢迎更多社区志愿者一同参与贡献更多语言版本,前往[ Github 代码仓库](https://github.com/langgenius/dify/blob/main/CONTRIBUTING)进行贡献! +Dify 欢迎更多社区志愿者一同参与贡献更多语言版本,前往[ GitHub 代码仓库](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md)进行贡献! ### 查看账号关联的应用数据 diff --git a/zh-hans/guides/monitoring/annotation-reply.mdx b/zh-hans/guides/monitoring/annotation-reply.mdx index 9e4dae02..b75fbb4c 100644 --- a/zh-hans/guides/monitoring/annotation-reply.mdx +++ b/zh-hans/guides/monitoring/annotation-reply.mdx @@ -21,7 +21,7 @@ version: '简体中文' 5. 关闭标注回复功能后,系统将一直不再继续从标注内匹配回复。 - 标注回复流程 + 标注回复流程 ### 提示词编排中开启标注回复 @@ -29,7 +29,7 @@ version: '简体中文' 进入"应用构建->添加功能"开启标注回复开关: - 提示词编排中开启标注回复 + 提示词编排中开启标注回复 开启时需要先设置标注回复的参数,可设置参数包括:Score 阈值 和 Embedding 模型 @@ -41,7 +41,7 @@ version: '简体中文' 点击保存并启用时,该设置会立即生效,系统将对所有已保存的标注利用 Embedding 模型生成嵌入保存。 - 标注回复参数设置 + 标注回复参数设置 ### 在会话调试页添加标注 @@ -49,19 +49,19 @@ version: '简体中文' 你可以在调试与预览页面直接在模型回复信息上添加或编辑标注。 - 添加标注回复 + 添加标注回复 编辑成你需要的高质量回复并保存。 - 编辑标注回复 + 编辑标注回复 再次输入同样的用户问题,系统将使用已保存的标注直接回复用户问题。 - 通过已保存的标注回复用户问题 + 通过已保存的标注回复用户问题 ### 日志与标注中开启标注回复 @@ -69,7 +69,7 @@ version: '简体中文' 进入"应用构建->日志与标注->标注"开启标注回复开关: - 日志与标注中开启标注回复 + 日志与标注中开启标注回复 ### 在标注后台设置标注回复参数 @@ -81,7 +81,7 @@ version: '简体中文' **Embedding 模型**:用于对标注文本进行向量化,切换模型时会重新生成嵌入。 - 设置标注回复参数 + 设置标注回复参数 ### 批量导入标注问答对 @@ -89,7 +89,7 @@ version: '简体中文' 在批量导入功能内,你可以下载标注导入模板,按模板格式编辑标注问答对,编辑好后在此批量导入。 - 批量导入标注问答对 + 批量导入标注问答对 ### 批量导出标注问答对 @@ -97,7 +97,7 @@ version: '简体中文' 通过标注批量导出功能,你可以一次性导出系统内已保存的所有标注问答对。 - 批量导出标注问答对 + 批量导出标注问答对 ### 查看标注回复命中历史 @@ -105,5 +105,5 @@ version: '简体中文' 在标注命中历史功能内,你可以查看所有命中该条标注的编辑历史、命中的用户问题、回复答案、命中来源、匹配相似分数、命中时间等信息,你可以根据这些系统信息持续改进你的标注内容。 - 查看标注回复命中历史 + 查看标注回复命中历史 diff --git a/zh-hans/guides/monitoring/logs.mdx b/zh-hans/guides/monitoring/logs.mdx index 17cec412..6311aac5 100644 --- a/zh-hans/guides/monitoring/logs.mdx +++ b/zh-hans/guides/monitoring/logs.mdx @@ -26,7 +26,7 @@ version: '简体中文' - 标记日志以改进 + 标记日志以改进 点击一条日志会在界面右侧打开日志详情面板,在该面板中运营人员可以对一次互动进行标注: diff --git a/zh-hans/guides/tools/advanced-tool-integration.mdx b/zh-hans/guides/tools/advanced-tool-integration.mdx index 30760cd5..a8966814 100644 --- a/zh-hans/guides/tools/advanced-tool-integration.mdx +++ b/zh-hans/guides/tools/advanced-tool-integration.mdx @@ -2,7 +2,7 @@ title: 高级接入工具 --- -在开始接入工具之前,请确保你已经阅读过[快速接入](/zh-cn/user-guide/tools/quick-tool-integration),并对 Dify 的工具接入流程有了基本的了解。 +在开始接入工具之前,请确保你已经阅读过[快速接入](/zh-hans/user-guide/tools/quick-tool-integration),并对 Dify 的工具接入流程有了基本的了解。 ### 工具接口 diff --git a/zh-hans/guides/tools/community/alphavantage.mdx b/zh-hans/guides/tools/community/alphavantage.mdx index 9400371d..ef707fd7 100644 --- a/zh-hans/guides/tools/community/alphavantage.mdx +++ b/zh-hans/guides/tools/community/alphavantage.mdx @@ -19,7 +19,7 @@ AlphaVantage 一个在线平台,它提供金融市场数据和API,便于个 - **Chatflow / Workflow 应用** -Chatflow 和 Workflow 应用均支持添加 `AlphaVantage` 工具节点。添加后,需要在节点内的 “输入变量 → 股票代码” 通过[变量](/zh-cn/user-guide/build-app/flow-app/variables)引用用户输入的查询内容。最后在 “结束” 节点内使用变量引用 `AlphaVantage` 节点输出的内容。 +Chatflow 和 Workflow 应用均支持添加 `AlphaVantage` 工具节点。添加后,需要在节点内的 “输入变量 → 股票代码” 通过[变量](/zh-hans/user-guide/build-app/flow-app/variables)引用用户输入的查询内容。最后在 “结束” 节点内使用变量引用 `AlphaVantage` 节点输出的内容。 - **Agent 应用** diff --git a/zh-hans/guides/tools/community/comfyui.mdx b/zh-hans/guides/tools/community/comfyui.mdx index 1b642444..24188bc2 100644 --- a/zh-hans/guides/tools/community/comfyui.mdx +++ b/zh-hans/guides/tools/community/comfyui.mdx @@ -10,7 +10,7 @@ version: '简体中文' ## 2. 导出工作流的 API 文件。 -![](/zh-cn/img/0503c5838f163b54884ca58240281f3f.png) +![](/zh-hans/img/0503c5838f163b54884ca58240281f3f.png) 如图所示,在工具栏中选择 `Save(API Format)`,如果没有该选择,则需要在设置中开启 `Dev Mode`。 diff --git a/zh-hans/guides/tools/community/searchapi.mdx b/zh-hans/guides/tools/community/searchapi.mdx index c7d896d5..d8b18372 100644 --- a/zh-hans/guides/tools/community/searchapi.mdx +++ b/zh-hans/guides/tools/community/searchapi.mdx @@ -15,7 +15,7 @@ SearchApi 是一个强大的实时 SERP API,可提供来自 Google 搜索、Go 在 Dify 导航页内轻点 `工具 > SearchApi > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tool-searchapi.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tool-searchapi.png) ## 3. 使用工具 @@ -25,7 +25,7 @@ SearchApi 是一个强大的实时 SERP API,可提供来自 Google 搜索、Go Chatflow 和 Workflow 应用均支持添加 `SearchApi` 系列工具节点,提供 Google Jobs API,Google News API,Google Search API,YouTube 脚本 API 四种工具。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tool-searchapi-flow.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tool-searchapi-flow.png) * **Agent 应用** diff --git a/zh-hans/guides/tools/community/serper.mdx b/zh-hans/guides/tools/community/serper.mdx index 4dd16792..1ca083b7 100644 --- a/zh-hans/guides/tools/community/serper.mdx +++ b/zh-hans/guides/tools/community/serper.mdx @@ -15,7 +15,7 @@ Serper 是一个强大的实时搜索引擎工具API,可提供来自 Google 在 Dify 导航页内轻点 `工具 > Serper > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tool-serper.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tool-serper.png) ## 3. 使用工具 diff --git a/zh-hans/guides/tools/community/siliconflow.mdx b/zh-hans/guides/tools/community/siliconflow.mdx index 6b9f1564..a656bbd2 100644 --- a/zh-hans/guides/tools/community/siliconflow.mdx +++ b/zh-hans/guides/tools/community/siliconflow.mdx @@ -16,7 +16,7 @@ SiliconCloud 基于优秀的开源基础模型,提供高性价比的 GenAI 服 在 Dify 的工具页中点击 `SiliconCloud > 去授权` 填写 API Key。 - + ### 3. 使用工具 @@ -28,7 +28,7 @@ Chatflow 和 Workflow 应用均支持添加 `SiliconFlow` 工具节点。 将用户输入的内容通过[变量](../../workflow/variables)传递至 Siliconflow 工具的 Flux 或 Stable Diffusion 节点内的“提示词”“负面提示词”框中,按照需求调整内置参数,最后在“结束”节点的回复框中选中 Siliconflow 工具节点的输出内容(文本、图片等)。 - + * **Agent 应用** @@ -36,9 +36,9 @@ Chatflow 和 Workflow 应用均支持添加 `SiliconFlow` 工具节点。 在 Agent 应用内添加 `Stable Diffusion` 或 `Flux` 工具,然后在对话框内发送图片描述,调用工具生成 AI 图像。 - + - + diff --git a/zh-hans/guides/tools/dify/bing.mdx b/zh-hans/guides/tools/dify/bing.mdx index bf7f9737..86782c95 100644 --- a/zh-hans/guides/tools/dify/bing.mdx +++ b/zh-hans/guides/tools/dify/bing.mdx @@ -15,7 +15,7 @@ Bing 搜索工具能够帮助你在使用 LLM 应用的时候,获取联网搜 在 Dify 导航页内轻点 `工具 > Azure > 去授权` 填写 API Key。 -![](/zh-cn/img/5e8f18c29c50f14c5c83d7b45c546725.png) +![](/zh-hans/img/5e8f18c29c50f14c5c83d7b45c546725.png) ## 3. 使用工具 diff --git a/zh-hans/guides/tools/dify/dall-e.mdx b/zh-hans/guides/tools/dify/dall-e.mdx index b5fd6502..fabef17b 100644 --- a/zh-hans/guides/tools/dify/dall-e.mdx +++ b/zh-hans/guides/tools/dify/dall-e.mdx @@ -15,18 +15,18 @@ DALL-E 是由 OpenAI 开发的一种基于文本提示生成图像的工具。Di 在 Dify 导航页内轻点 `工具 > DALL-E > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-dalle.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-dalle.png) ## 3. 使用工具 * **Chatflow / Workflow 应用** -Chatflow 和 Workflow 应用均支持添加 `DALL-E 绘图` 工具节点。添加后,需要在节点内的 “输入变量 → 提示词” 内填写[变量](/zh-cn/user-guide/build-app/flow-app/variables)引用用户输入的提示词,或者是上一节点生成的内容。最后在 “结束” 节点内使用变量引用 `DALL-E 绘图` 输出的图像。 +Chatflow 和 Workflow 应用均支持添加 `DALL-E 绘图` 工具节点。添加后,需要在节点内的 “输入变量 → 提示词” 内填写[变量](/zh-hans/user-guide/build-app/flow-app/variables)引用用户输入的提示词,或者是上一节点生成的内容。最后在 “结束” 节点内使用变量引用 `DALL-E 绘图` 输出的图像。 -![](/zh-cn/user-guide/.gitbook/assets/zh-dalle3-node.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-dalle3-node.png) * **Agent 应用** 在 Agent 应用内添加 `DALL-E` 工具,然后在对话框内发送图片描述,调用工具生成 AI 图像。 -![](/zh-cn/user-guide/.gitbook/assets/zh-agent-dalle3.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-agent-dalle3.png) diff --git a/zh-hans/guides/tools/dify/google.mdx b/zh-hans/guides/tools/dify/google.mdx index d82da634..d2489ab8 100644 --- a/zh-hans/guides/tools/dify/google.mdx +++ b/zh-hans/guides/tools/dify/google.mdx @@ -15,7 +15,7 @@ Google 搜索工具能够帮助你在使用 LLM 应用的时候,获取联网 在 Dify 导航页内轻点 `工具 > Google > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-google.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-google.png) ## 3. 使用工具 diff --git a/zh-hans/guides/tools/dify/perplexity.mdx b/zh-hans/guides/tools/dify/perplexity.mdx index de985210..f9a5e94f 100644 --- a/zh-hans/guides/tools/dify/perplexity.mdx +++ b/zh-hans/guides/tools/dify/perplexity.mdx @@ -15,7 +15,7 @@ Perplexity 是一个基于 AI 的搜索引擎,能够理解复杂的查询并 在 Dify 导航页内轻点 `工具 > Perplexity > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-perplexity.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-perplexity.png) ## 3. 使用工具 @@ -25,10 +25,10 @@ Perplexity 是一个基于 AI 的搜索引擎,能够理解复杂的查询并 Chatflow 和 Workflow 应用均支持添加 Perplexity 工具节点。将用户输入的内容通过变量传递至 Perplexity 工具节点内的“查询”框中,按照需求调整 Perplexity 工具的内置参数,最后在“结束”节点的回复框中选中 Perplexity 工具节点的输出内容。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-chatflow-perplexity.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-chatflow-perplexity.png) * **Agent 应用** 在 Agent 应用内添加 `Perplexity Search` 工具,然后输入相关指令即可调用此工具。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-agent-perplexity.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-agent-perplexity.png) diff --git a/zh-hans/guides/tools/dify/stable-diffusion.mdx b/zh-hans/guides/tools/dify/stable-diffusion.mdx index d9169761..077b4e51 100644 --- a/zh-hans/guides/tools/dify/stable-diffusion.mdx +++ b/zh-hans/guides/tools/dify/stable-diffusion.mdx @@ -73,7 +73,7 @@ git clone https://huggingface.co/JamesFlare/pastel-mix - **Chatflow / Workflow 应用** -Chatflow 和 Workflow 应用均支持添加 `Stable Diffusion` 工具节点。添加后,需要在节点内的 “输入变量 → 提示词” 内填写[变量](/zh-cn/user-guide/build-app/flow-app/variables)引用用户输入的提示词,或者是上一节点生成的内容。最后在 “结束” 节点内使用变量引用 `Stable Diffusion` 输出的图像。 +Chatflow 和 Workflow 应用均支持添加 `Stable Diffusion` 工具节点。添加后,需要在节点内的 “输入变量 → 提示词” 内填写[变量](/zh-hans/user-guide/build-app/flow-app/variables)引用用户输入的提示词,或者是上一节点生成的内容。最后在 “结束” 节点内使用变量引用 `Stable Diffusion` 输出的图像。 - **Agent 应用** diff --git a/zh-hans/guides/tools/extensions/api-based/api-based-extension.mdx b/zh-hans/guides/tools/extensions/api-based/api-based-extension.mdx index 0bc4b4b6..3e96cc63 100644 --- a/zh-hans/guides/tools/extensions/api-based/api-based-extension.mdx +++ b/zh-hans/guides/tools/extensions/api-based/api-based-extension.mdx @@ -263,10 +263,10 @@ API 返回为: * 按照上述的范例,我们把本地已经启动的服务端点暴露出去,将代码范例接口:`http://127.0.0.1:8000/api/dify/receive` 替换为 `https://177e-159-223-41-52.ngrok-free.app/api/dify/receive` -此 API 端点即可公网访问。至此,我们即可在 Dify 配置该 API 端点进行本地调试代码,配置步骤请参考 [外部数据工具](../../knowledge-base/external-data-tool.md "mention")。 +此 API 端点即可公网访问。至此,我们即可在 Dify 配置该 API 端点进行本地调试代码,配置步骤请参考 [外部数据工具](./external-data-tool)。 ### 使用 Cloudflare Workers 部署 API 扩展 我们推荐你使用 Cloudflare Workers 来部署你的 API 扩展,因为 Cloudflare Workers 可以方便的提供一个公网地址,而且可以免费使用。 -详细说明请参考 [使用 Cloudflare Workers 部署 API Tools](/zh-cn/user-guide/tools/extensions/api-based/cloudflare-workers)。 +详细说明请参考 [使用 Cloudflare Workers 部署 API Tools](/zh-hans/user-guide/tools/extensions/api-based/cloudflare-workers)。 diff --git a/zh-hans/guides/tools/extensions/api-based/external-data-tool.mdx b/zh-hans/guides/tools/extensions/api-based/external-data-tool.mdx index 23f28c4a..cc3aa583 100644 --- a/zh-hans/guides/tools/extensions/api-based/external-data-tool.mdx +++ b/zh-hans/guides/tools/extensions/api-based/external-data-tool.mdx @@ -3,11 +3,11 @@ title: 外部数据工具 version: '简体中文' --- -在创建 AI 应用时,开发者可以通过 API 扩展的方式实现使用外部工具获取额外数据组装至 Prompt 中作为 LLM 额外信息。具体的实操过程可以参考 [API 扩展](/zh-cn/user-guide/tools/extensions/api-based/api-based-extension)。 +在创建 AI 应用时,开发者可以通过 API 扩展的方式实现使用外部工具获取额外数据组装至 Prompt 中作为 LLM 额外信息。具体的实操过程可以参考 [API 扩展](/zh-hans/user-guide/tools/extensions/api-based/api-based-extension)。 ### 前置条件 -请先阅读 [API 扩展](/zh-cn/user-guide/tools/extensions/api-based/api-based-extension) 完成 API 服务基础能力的开发和接入。 +请先阅读 [API 扩展](/zh-hans/user-guide/tools/extensions/api-based/api-based-extension) 完成 API 服务基础能力的开发和接入。 ### 扩展点 diff --git a/zh-hans/guides/tools/extensions/code-based/moderation.mdx b/zh-hans/guides/tools/extensions/code-based/moderation.mdx index 76a4e815..da5f71d4 100644 --- a/zh-hans/guides/tools/extensions/code-based/moderation.mdx +++ b/zh-hans/guides/tools/extensions/code-based/moderation.mdx @@ -1,6 +1,5 @@ --- title: 敏感内容审查 -version: '简体中文' --- 除了系统内置的内容审查类型,Dify 也支持用户扩展自定义的内容审查规则,该方法适用于私有部署的开发者定制开发。比如企业内部客服,规定用户在查询的时候以及客服回复的时候,除了不可以输入暴力,性和非法行为等相关词语,也不能出现企业自己规定的禁词或违反内部制定的审查逻辑,那么开发者可以在私有部署的 Dify 代码层扩展自定义内容审查规则。 @@ -32,7 +31,7 @@ version: '简体中文' ### 2.添加前端组件规范 -* `schema.json`,这里定义了前端组件规范,详细见 [Broken link](broken-reference "mention") 。 +* `schema.json`,这里定义了前端组件规范,详细见 [Broken link](/zh-hans/guides/extension/code-based-extension) 。 ```json { diff --git a/zh-hans/guides/tools/introduction.mdx b/zh-hans/guides/tools/introduction.mdx index e1d02256..04d06cad 100644 --- a/zh-hans/guides/tools/introduction.mdx +++ b/zh-hans/guides/tools/introduction.mdx @@ -17,7 +17,7 @@ version: '简体中文' ### 如何配置第一方工具 - 第一方工具列表 + 第一方工具列表 Dify 目前已支持: @@ -25,7 +25,7 @@ Dify 目前已支持:
工具工具描述
谷歌搜索用于执行 Google SERP 搜索并提取片段和网页的工具,输入应该是一个搜索查询
维基百科用于执行维基百科搜索并提取片段和网页的工具
DALL-E 绘画用于通过自然语言输入生成高质量图片
网页抓取用于爬取网页数据的工具
WolframAlpha一个强大的计算知识引擎,能根据问题直接给出标准化答案,同时具有强大的数学计算功能
图表生成用于生成可视化图表的工具,你可以通过它来生成柱状图、折线图、饼图等各类图表
当前时间用于查询当前时间的工具
雅虎财经获取并整理出最新的新闻、股票报价等一切你想要的财经信息
Stable Diffusion一个可以在本地部署的图片生成的工具,您可以使用 stable-diffusion-webui 来部署它
Vectorizer一个将 PNG 和 JPG 图像快速轻松地转换为 SVG 矢量图的工具
YouTube一个用于获取油管频道视频统计数据的工具
-欢迎您为 Dify 贡献自己开发的工具,关于如何贡献的具体方法请查看 [Dify 开发贡献文档](https://github.com/langgenius/dify/blob/main/CONTRIBUTING),您的任何支持对我们都是极为宝贵的。 +欢迎您为 Dify 贡献自己开发的工具,关于如何贡献的具体方法请查看 [Dify 开发贡献文档](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md),您的任何支持对我们都是极为宝贵的。 @@ -34,13 +34,13 @@ Dify 目前已支持: 若你需要直接使用 Dify 生态提供的第一方内置工具,你需要在使用前配置相应的凭据。 - 配置第一方工具凭据 + 配置第一方工具凭据 凭据校验成功后工具会显示"已授权"状态。配置凭据后,工作区中的所有成员都可以在编排应用程序时使用此工具。 - 第一方工具已授权 + 第一方工具已授权 ### 如何创建自定义工具 @@ -50,19 +50,19 @@ Dify 目前已支持: 工具目前支持两种鉴权方式:无鉴权 和 API Key。 - 创建自定义工具 + 创建自定义工具 在导入 Schema 内容后系统会主动解析文件内的参数,并可预览工具具体的参数、 方法、路径。您也可以在此对工具参数进行测试。 - 自定义工具参数测试 + 自定义工具参数测试 完成自定义工具创建之后,工作区中的所有成员都可以在"工作室"内编排应用程序时使用此工具。 - 已添加自定义工具 + 已添加自定义工具 #### Cloudflare Workers @@ -77,11 +77,11 @@ Dify 目前已支持: 目前,您可以在"工作室"中创建**智能助手型应用**时,将已配置好凭据的工具在其中使用。 - 创建智能助手型应用时添加工具 + 创建智能助手型应用时添加工具 以下图为例,在财务分析应用内添加工具后,智能助手将在需要时自主调用工具,从工具中查询财务报告数据,并将数据分析后完成与用户之间的对话。 - 智能助手在对话中完成工具调用回复问题 + 智能助手在对话中完成工具调用回复问题 diff --git a/zh-hans/guides/tools/readme.mdx b/zh-hans/guides/tools/readme.mdx index 6c316d31..3c3a798f 100644 --- a/zh-hans/guides/tools/readme.mdx +++ b/zh-hans/guides/tools/readme.mdx @@ -44,7 +44,7 @@ Dify 目前已支持: | YouTube | 一个用于获取油管频道视频统计数据的工具 | -欢迎你为 Dify 贡献自己开发的工具,关于如何贡献的具体方法请查看 [Dify 开发贡献文档](https://github.com/langgenius/dify/blob/main/CONTRIBUTING),你的任何支持对我们都是极为宝贵的。 +欢迎你为 Dify 贡献自己开发的工具,关于如何贡献的具体方法请查看 [Dify 开发贡献文档](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md),你的任何支持对我们都是极为宝贵的。 #### 第一方工具授权 diff --git a/zh-hans/guides/tools/tool-configuration/alphavantage.mdx b/zh-hans/guides/tools/tool-configuration/alphavantage.mdx index 9400371d..ef707fd7 100644 --- a/zh-hans/guides/tools/tool-configuration/alphavantage.mdx +++ b/zh-hans/guides/tools/tool-configuration/alphavantage.mdx @@ -19,7 +19,7 @@ AlphaVantage 一个在线平台,它提供金融市场数据和API,便于个 - **Chatflow / Workflow 应用** -Chatflow 和 Workflow 应用均支持添加 `AlphaVantage` 工具节点。添加后,需要在节点内的 “输入变量 → 股票代码” 通过[变量](/zh-cn/user-guide/build-app/flow-app/variables)引用用户输入的查询内容。最后在 “结束” 节点内使用变量引用 `AlphaVantage` 节点输出的内容。 +Chatflow 和 Workflow 应用均支持添加 `AlphaVantage` 工具节点。添加后,需要在节点内的 “输入变量 → 股票代码” 通过[变量](/zh-hans/user-guide/build-app/flow-app/variables)引用用户输入的查询内容。最后在 “结束” 节点内使用变量引用 `AlphaVantage` 节点输出的内容。 - **Agent 应用** diff --git a/zh-hans/guides/tools/tool-configuration/bing.mdx b/zh-hans/guides/tools/tool-configuration/bing.mdx index bf7f9737..86782c95 100644 --- a/zh-hans/guides/tools/tool-configuration/bing.mdx +++ b/zh-hans/guides/tools/tool-configuration/bing.mdx @@ -15,7 +15,7 @@ Bing 搜索工具能够帮助你在使用 LLM 应用的时候,获取联网搜 在 Dify 导航页内轻点 `工具 > Azure > 去授权` 填写 API Key。 -![](/zh-cn/img/5e8f18c29c50f14c5c83d7b45c546725.png) +![](/zh-hans/img/5e8f18c29c50f14c5c83d7b45c546725.png) ## 3. 使用工具 diff --git a/zh-hans/guides/tools/tool-configuration/comfyui.mdx b/zh-hans/guides/tools/tool-configuration/comfyui.mdx index 1b642444..24188bc2 100644 --- a/zh-hans/guides/tools/tool-configuration/comfyui.mdx +++ b/zh-hans/guides/tools/tool-configuration/comfyui.mdx @@ -10,7 +10,7 @@ version: '简体中文' ## 2. 导出工作流的 API 文件。 -![](/zh-cn/img/0503c5838f163b54884ca58240281f3f.png) +![](/zh-hans/img/0503c5838f163b54884ca58240281f3f.png) 如图所示,在工具栏中选择 `Save(API Format)`,如果没有该选择,则需要在设置中开启 `Dev Mode`。 diff --git a/zh-hans/guides/tools/tool-configuration/dall-e.mdx b/zh-hans/guides/tools/tool-configuration/dall-e.mdx index b5fd6502..fabef17b 100644 --- a/zh-hans/guides/tools/tool-configuration/dall-e.mdx +++ b/zh-hans/guides/tools/tool-configuration/dall-e.mdx @@ -15,18 +15,18 @@ DALL-E 是由 OpenAI 开发的一种基于文本提示生成图像的工具。Di 在 Dify 导航页内轻点 `工具 > DALL-E > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-dalle.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-dalle.png) ## 3. 使用工具 * **Chatflow / Workflow 应用** -Chatflow 和 Workflow 应用均支持添加 `DALL-E 绘图` 工具节点。添加后,需要在节点内的 “输入变量 → 提示词” 内填写[变量](/zh-cn/user-guide/build-app/flow-app/variables)引用用户输入的提示词,或者是上一节点生成的内容。最后在 “结束” 节点内使用变量引用 `DALL-E 绘图` 输出的图像。 +Chatflow 和 Workflow 应用均支持添加 `DALL-E 绘图` 工具节点。添加后,需要在节点内的 “输入变量 → 提示词” 内填写[变量](/zh-hans/user-guide/build-app/flow-app/variables)引用用户输入的提示词,或者是上一节点生成的内容。最后在 “结束” 节点内使用变量引用 `DALL-E 绘图` 输出的图像。 -![](/zh-cn/user-guide/.gitbook/assets/zh-dalle3-node.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-dalle3-node.png) * **Agent 应用** 在 Agent 应用内添加 `DALL-E` 工具,然后在对话框内发送图片描述,调用工具生成 AI 图像。 -![](/zh-cn/user-guide/.gitbook/assets/zh-agent-dalle3.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-agent-dalle3.png) diff --git a/zh-hans/guides/tools/tool-configuration/google.mdx b/zh-hans/guides/tools/tool-configuration/google.mdx index d82da634..d2489ab8 100644 --- a/zh-hans/guides/tools/tool-configuration/google.mdx +++ b/zh-hans/guides/tools/tool-configuration/google.mdx @@ -15,7 +15,7 @@ Google 搜索工具能够帮助你在使用 LLM 应用的时候,获取联网 在 Dify 导航页内轻点 `工具 > Google > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-google.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-google.png) ## 3. 使用工具 diff --git a/zh-hans/guides/tools/tool-configuration/perplexity.mdx b/zh-hans/guides/tools/tool-configuration/perplexity.mdx index de985210..f9a5e94f 100644 --- a/zh-hans/guides/tools/tool-configuration/perplexity.mdx +++ b/zh-hans/guides/tools/tool-configuration/perplexity.mdx @@ -15,7 +15,7 @@ Perplexity 是一个基于 AI 的搜索引擎,能够理解复杂的查询并 在 Dify 导航页内轻点 `工具 > Perplexity > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-perplexity.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-perplexity.png) ## 3. 使用工具 @@ -25,10 +25,10 @@ Perplexity 是一个基于 AI 的搜索引擎,能够理解复杂的查询并 Chatflow 和 Workflow 应用均支持添加 Perplexity 工具节点。将用户输入的内容通过变量传递至 Perplexity 工具节点内的“查询”框中,按照需求调整 Perplexity 工具的内置参数,最后在“结束”节点的回复框中选中 Perplexity 工具节点的输出内容。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-chatflow-perplexity.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-chatflow-perplexity.png) * **Agent 应用** 在 Agent 应用内添加 `Perplexity Search` 工具,然后输入相关指令即可调用此工具。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tools-agent-perplexity.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tools-agent-perplexity.png) diff --git a/zh-hans/guides/tools/tool-configuration/searchapi.mdx b/zh-hans/guides/tools/tool-configuration/searchapi.mdx index c7d896d5..d8b18372 100644 --- a/zh-hans/guides/tools/tool-configuration/searchapi.mdx +++ b/zh-hans/guides/tools/tool-configuration/searchapi.mdx @@ -15,7 +15,7 @@ SearchApi 是一个强大的实时 SERP API,可提供来自 Google 搜索、Go 在 Dify 导航页内轻点 `工具 > SearchApi > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tool-searchapi.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tool-searchapi.png) ## 3. 使用工具 @@ -25,7 +25,7 @@ SearchApi 是一个强大的实时 SERP API,可提供来自 Google 搜索、Go Chatflow 和 Workflow 应用均支持添加 `SearchApi` 系列工具节点,提供 Google Jobs API,Google News API,Google Search API,YouTube 脚本 API 四种工具。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tool-searchapi-flow.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tool-searchapi-flow.png) * **Agent 应用** diff --git a/zh-hans/guides/tools/tool-configuration/serper.mdx b/zh-hans/guides/tools/tool-configuration/serper.mdx index 4dd16792..1ca083b7 100644 --- a/zh-hans/guides/tools/tool-configuration/serper.mdx +++ b/zh-hans/guides/tools/tool-configuration/serper.mdx @@ -15,7 +15,7 @@ Serper 是一个强大的实时搜索引擎工具API,可提供来自 Google 在 Dify 导航页内轻点 `工具 > Serper > 去授权` 填写 API Key。 -![](/zh-cn/user-guide/.gitbook/assets/zh-tool-serper.png) +![](/zh-hans/user-guide/.gitbook/assets/zh-tool-serper.png) ## 3. 使用工具 diff --git a/zh-hans/guides/tools/tool-configuration/siliconflow.mdx b/zh-hans/guides/tools/tool-configuration/siliconflow.mdx index 6b9f1564..a656bbd2 100644 --- a/zh-hans/guides/tools/tool-configuration/siliconflow.mdx +++ b/zh-hans/guides/tools/tool-configuration/siliconflow.mdx @@ -16,7 +16,7 @@ SiliconCloud 基于优秀的开源基础模型,提供高性价比的 GenAI 服 在 Dify 的工具页中点击 `SiliconCloud > 去授权` 填写 API Key。 - + ### 3. 使用工具 @@ -28,7 +28,7 @@ Chatflow 和 Workflow 应用均支持添加 `SiliconFlow` 工具节点。 将用户输入的内容通过[变量](../../workflow/variables)传递至 Siliconflow 工具的 Flux 或 Stable Diffusion 节点内的“提示词”“负面提示词”框中,按照需求调整内置参数,最后在“结束”节点的回复框中选中 Siliconflow 工具节点的输出内容(文本、图片等)。 - + * **Agent 应用** @@ -36,9 +36,9 @@ Chatflow 和 Workflow 应用均支持添加 `SiliconFlow` 工具节点。 在 Agent 应用内添加 `Stable Diffusion` 或 `Flux` 工具,然后在对话框内发送图片描述,调用工具生成 AI 图像。 - + - + diff --git a/zh-hans/guides/tools/tool-configuration/stable-diffusion.mdx b/zh-hans/guides/tools/tool-configuration/stable-diffusion.mdx index d9169761..077b4e51 100644 --- a/zh-hans/guides/tools/tool-configuration/stable-diffusion.mdx +++ b/zh-hans/guides/tools/tool-configuration/stable-diffusion.mdx @@ -73,7 +73,7 @@ git clone https://huggingface.co/JamesFlare/pastel-mix - **Chatflow / Workflow 应用** -Chatflow 和 Workflow 应用均支持添加 `Stable Diffusion` 工具节点。添加后,需要在节点内的 “输入变量 → 提示词” 内填写[变量](/zh-cn/user-guide/build-app/flow-app/variables)引用用户输入的提示词,或者是上一节点生成的内容。最后在 “结束” 节点内使用变量引用 `Stable Diffusion` 输出的图像。 +Chatflow 和 Workflow 应用均支持添加 `Stable Diffusion` 工具节点。添加后,需要在节点内的 “输入变量 → 提示词” 内填写[变量](/zh-hans/user-guide/build-app/flow-app/variables)引用用户输入的提示词,或者是上一节点生成的内容。最后在 “结束” 节点内使用变量引用 `Stable Diffusion` 输出的图像。 - **Agent 应用** diff --git a/zh-hans/guides/workflow/additional-feature.mdx b/zh-hans/guides/workflow/additional-feature.mdx index 41c3e20a..a6b548f7 100644 --- a/zh-hans/guides/workflow/additional-feature.mdx +++ b/zh-hans/guides/workflow/additional-feature.mdx @@ -1,6 +1,5 @@ --- title: 附加功能 -version: '简体中文' --- Workflow 和 Chatflow 应用均支持开启附加功能以增强使用者的交互体验。例如添加文件上传入口、给 LLM 应用添加一段自我介绍或使用欢迎语,让应用使用者获得更加丰富的交互体验。 @@ -96,7 +95,7 @@ LLM 并不具备直接读取文档文件的能力,因此需要使用 [文档 3. 添加 LLM 节点,在系统提示词中选中文档提取器节点的输出变量。 4. 在末尾添加 "直接回复" 节点,填写 LLM 节点的输出变量。 -使用此方法搭建出的 Chatflow 应用无法记忆已上传的文件内容。应用使用者每次对话时都需要在聊天框中上传文档文件。如果你希望应用能够记忆已上传的文件,请参考 [《文件上传:在开始节点添加变量》](file-upload.md#fang-fa-er-zai-tian-jia-wen-jian-bian-liang)。 +使用此方法搭建出的 Chatflow 应用无法记忆已上传的文件内容。应用使用者每次对话时都需要在聊天框中上传文档文件。如果你希望应用能够记忆已上传的文件,请参考 [《文件上传:在开始节点添加变量》](file-upload#fang-fa-er-zai-tian-jia-wen-jian-bian-liang)。 ![文档文件编排](https://assets-docs.dify.ai/dify-enterprise-mintlify/zh_CN/guides/workflow/8f47afd4090475e9cacd8af47155a90d.png) diff --git a/zh-hans/guides/workflow/bulletin.mdx b/zh-hans/guides/workflow/bulletin.mdx index 4b070c8c..dcab5787 100644 --- a/zh-hans/guides/workflow/bulletin.mdx +++ b/zh-hans/guides/workflow/bulletin.mdx @@ -4,7 +4,7 @@ description: 作者:Evanchen,Allen。 --- -图片上传功能已被纳入至更加综合的[文件上传](file-upload)功能中,为了避免出现功能重复,我们决定对 Workflow 和 Chatflow 应用的“[附加功能](additional-features)”进行升级和调整: +图片上传功能已被纳入至更加综合的[文件上传](file-upload)功能中,为了避免出现功能重复,我们决定对 Workflow 和 Chatflow 应用的“[附加功能](./additional-feature)”进行升级和调整: * 移除 Chatflow 应用“功能”中的图片上传选项,取而代之的是新的“文件上传”功能。你可以在“文件上传”功能内选择图片文件类型。同时,应用对话框中的图片上传 icon 也被替换为文件上传 icon。 @@ -41,7 +41,7 @@ Dify 此前仅支持上传图片文件。而在最新的版本中,已提供更 ![](https://assets-docs.dify.ai/dify-enterprise-mintlify/zh_CN/guides/workflow/93f533be37a1f936879379fcaabc2b45.png) -如果你希望在 Chatflow 应用中添加“图片上传”功能,请在功能中开启“文件上传”,仅勾选“图片”类型。然后在 LLM 节点中启用 Vision 功能,并在其中填写 `sys.files` 变量。此时输入框将出现“回形针”的上传入口,详细说明请参考 [附加功能](additional-features)。 +如果你希望在 Chatflow 应用中添加“图片上传”功能,请在功能中开启“文件上传”,仅勾选“图片”类型。然后在 LLM 节点中启用 Vision 功能,并在其中填写 `sys.files` 变量。此时输入框将出现“回形针”的上传入口,详细说明请参考 [附加功能](./additional-feature)。 ![](https://assets-docs.dify.ai/dify-enterprise-mintlify/zh_CN/guides/workflow/e64569e7d240bf453308e86ec0573178.png) @@ -59,7 +59,7 @@ Dify 此前仅支持上传图片文件。而在最新的版本中,已提供更 已启用“图片上传”功能的 Chatflow 应用将自动完成切换,无需变更。 -如果你希望在 Chatflow 应用中添加“图片上传”功能,详细说明请参考[附加功能](additional-features)。 +如果你希望在 Chatflow 应用中添加“图片上传”功能,详细说明请参考[附加功能](./additional-feature)。 * Workflow 应用 diff --git a/zh-hans/guides/workflow/create-flow-app.mdx b/zh-hans/guides/workflow/create-flow-app.mdx index db3db99d..6b65a68d 100644 --- a/zh-hans/guides/workflow/create-flow-app.mdx +++ b/zh-hans/guides/workflow/create-flow-app.mdx @@ -1,6 +1,5 @@ --- title: 创建应用 -version: '简体中文' --- ## Chatflow @@ -13,7 +12,7 @@ version: '简体中文' 在 "工作室" 页,轻点左侧 “创建空白应用”,然后选择 “聊天助手” 中的 “工作流编排”。 -![](/zh-cn/img/8eb5a12939c298bc7cb9a778d10d42db.png) +![](/zh-hans/img/8eb5a12939c298bc7cb9a778d10d42db.png) ## Workflow @@ -25,7 +24,7 @@ version: '简体中文' 在 "工作室" 页,轻点左侧 “创建空白应用”,然后选择 “工作流” 完成创建。 -![](/zh-cn/user-guide/.gitbook/assets/workflow.png) +![](/zh-hans/user-guide/.gitbook/assets/workflow.png) ## 两者之间的差异 diff --git a/zh-hans/guides/workflow/file-upload.mdx b/zh-hans/guides/workflow/file-upload.mdx index 449843d0..78be85d4 100644 --- a/zh-hans/guides/workflow/file-upload.mdx +++ b/zh-hans/guides/workflow/file-upload.mdx @@ -35,13 +35,13 @@ title: 文件上传 ### 快速开始 -Dify 支持在 [ChatFlow](/zh-hans/guides/workflow/concepts#chatflow-和-workflow) 和 [WorkFlow](/zh-hans/guides/workflow/concepts#chatflow-和-workflow) 类型应用中上传文件,并通过[变量](/zh-hans/guides/workflow/variables)交由 LLM 处理。应用开发者可以参考以下方法为应用开启文件上传功能: +Dify 支持在 [ChatFlow](/zh-hans/guides/workflow/key-concepts#chatflow-和-workflow) 和 [WorkFlow](/zh-hans/guides/workflow/concepts#chatflow-和-workflow) 类型应用中上传文件,并通过[变量](/zh-hans/guides/workflow/variables)交由 LLM 处理。应用开发者可以参考以下方法为应用开启文件上传功能: * 在 Workflow 应用中: - * 在 ["开始节点"](/zh-hans/guides/workflow/nodes/start) 添加文件变量 + * 在 ["开始节点"](/zh-hans/guides/workflow/node/start) 添加文件变量 * 在 ChatFlow 应用中: * 在 ["附加功能"](/zh-hans/guides/workflow/additional-feature) 中开启文件上传,允许在聊天窗中直接上传文件 - * 在 ["开始节点"](/zh-hans/guides/workflow/nodes/start) 添加文件变量 + * 在 ["开始节点"](/zh-hans/guides/workflow/node/start) 添加文件变量 * 注意:这两种方法可以同时配置,它们是彼此独立的。附加功能中的文件上传设置(包括上传方式和数量限制)不会影响开始节点中的文件变量。例如只想通过开始节点创建文件变量,则无需开启附加功能中的文件上传功能。 这两种方法为应用提供了灵活的文件上传选项,以满足不同场景的需求。 @@ -84,12 +84,12 @@ file variables 和 array[file] variables 支持以下文件类型与格式: Chatflow应用中文件上传功能的设置界面 -开启该功能并不意味着赋予 LLM 直接读取文件的能力,还需要配备[**文档提取器**](/zh-hans/guides/workflow/nodes/doc-extractor)将文档解析为文本供 LLM 理解。 +开启该功能并不意味着赋予 LLM 直接读取文件的能力,还需要配备[**文档提取器**](/zh-hans/guides/workflow/node/doc-extractor)将文档解析为文本供 LLM 理解。 * 对于音频文件,可以使用 `gpt-4o-audio-preview` 等支持多模态输入的模型直接处理音频,无需额外的提取器。 * 对于视频和其他文件类型,暂无对应的提取器,需要应用开发者接入[外部工具](/zh-hans/guides/tools/extensions/api-based/api-based-extension)进行处理 -2. 添加[文档提取器](/zh-hans/guides/workflow/nodes/doc-extractor)节点,在输入变量中选中 `sys.files` 变量。 +2. 添加[文档提取器](/zh-hans/guides/workflow/node/doc-extractor)节点,在输入变量中选中 `sys.files` 变量。 3. 添加 LLM 节点,在系统提示词中选中文档提取器节点的输出变量。 4. 在末尾添加 "直接回复" 节点,填写 LLM 节点的输出变量。 @@ -109,7 +109,7 @@ file variables 和 array[file] variables 支持以下文件类型与格式: #### 1. 在"开始"节点添加文件变量 -在应用的["开始"](/zh-hans/guides/workflow/nodes/start)节点内添加输入字段,选择 **"单文件"** 或 **"文件列表"** 字段类型的变量。 +在应用的["开始"](/zh-hans/guides/workflow/node/start)节点内添加输入字段,选择 **"单文件"** 或 **"文件列表"** 字段类型的变量。