logo
0
0
Login
feat: 允许用户主动声明部分文档处理失败仍然更新知识库版本

知识库插件

使用插件将仓库的文档导入到 CNB 的知识库中,以支持搜索或 LLM RAG 问答。

目前支持 Markdown, mdx, pdf, docx, txt 文件。文件类型仅根据后缀名判断。

知识准备

了解构建 RAG 应用流程图

插件使用方法

通过上图,可以看到使用过程分为两步:

1. 📚 数据准备阶段

使用本知识库插件将仓库的文档导入到 CNB 的知识库中, 本插件在 CNB 云原生构建中运行, 会自动处理文档,并构建知识库, 知识库构建完成后,可以被下游的 LLM 应用使用。

2. 💻 LLM 应用开发

知识库构建完成后,使用 CNB 的 Open API 进行召回,并结合 LLM 拼接模型生成回答。

常见的 RAG 应用运行流程如下:

1.用户提问

2.问题理解

3.调用知识库检索,如上文所述,使用 CNB 的 Open API 进行召回,获取相关文档

4.构建拼接 Prompt, 问题 + 知识上下文,例如拼接后 prompt 一般会这样:

用户:{用户问题} 知识库: {知识库内容} 请根据以上知识库,回答用户的问题。

5.将拼接后的 prompt 发送给 LLM 模型,生成回答,返回给用户

插件详情

插件镜像名

cnbcool/knowledge-base

参数说明

  • embedding_model:嵌入模型,目前只支持 hunyuan
  • include:指定需要包含的文件,使用 glob 模式匹配,默认为 * 包含所有文件。支持逗号分隔多个模式,如 *.md,*.txt,*.pdf
  • exclude:指定需要排除的文件,使用 glob 模式匹配,默认不排除任何文件。支持逗号分隔多个模式
  • chunk_size:指定文本分块大小,默认为 1500
  • chunk_overlap:指定相邻两个分块之间的重叠token数量,默认为 0
  • ignore_process_failures:是否忽略文档处理失败,当设置为 true 时,即使有文件处理失败也会更新知识库,默认为 false

注意:exclude的优先级高于include,被 exclude 的文件不会再被 include

插件在 CNB 中使用

main: push: - stages: - name: build knowledge base image: cnbcool/knowledge-base settings: include: "**/**.md"

使用 CNB 的 Open API 进行知识库召回

此 API 用于查询知识库内容,根据提供的查询关键词返回相关信息。

开始之前,请阅读:CNB Open API 使用教程 访问令牌需要权限:repo-code:r(读取仓库代码)

接口信息

  • URL: https://api.cnb.cool/{slug}/-/knowledge/base/query
  • 方法: POST
  • 内容类型: application/json

注意: {slug} 应替换为仓库 slug,例如 CNB 官方文档知识库的仓库地址为 https://cnb.cool/cnb/docs, 则 {slug} 就是 cnb/docs

请求参数

请求体应为 JSON 格式,包含以下字段:

参数名类型必填描述
querystring要查询的关键词或问题
top_knumber返回结果的最大数量,默认为 5

请求示例

{ "query": "云原生开发配置自定义按钮" }

响应内容

响应为 JSON 格式,包含一个结果数组,每个结果包含以下字段:

字段名类型描述
scorenumber匹配相关性分数,范围 0-1
chunkstring匹配的知识库内容文本
metadataobject内容元数据

metadata 字段详情

字段名类型描述
hashstring内容的唯一哈希值
namestring文档名称
pathstring文档路径
positionnumber内容在原文档中的位置
scorenumber匹配相关性分数

响应示例

[ { "score": 0.8671732, "chunk": "该云原生远程开发解决方案基于Docker...", "metadata": { "hash": "15f7a1fc4420cbe9d81a946c9fc88814", "name": "quick-start", "path": "vscode/quick-start.md", "position": 0, "score": 0.8671732 } } ]

使用示例

cURL 请求示例

注意:{slug} 是运行知识库插件的仓库 slug,例如 CNB 官方文档知识库为 cnb/docs

curl -X "POST" "https://api.cnb.cool/{slug}/-/knowledge/base/query" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${token}" \ -d '{ "query": "云原生开发配置自定义按钮" }'

注意事项

  1. 响应中的 chunk 字段包含了匹配到的知识库内容片段,为 Markdown 格式的文本。
  2. score 值越高表示匹配度越高。
  3. URL 中的 slug 是运行知识库插件的仓库 slug。