知识库

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

大模型缺乏私有知识,且通用知识更新滞后。业界通常采用检索增强生成(RAG)技术,根据用户输入从外部信息源检索相关信息,然后将检索到的内容整合到用户输入中,从而帮助大模型生成更准确的回答。知识库功能作为阿里云百炼的RAG能力,能有效补充私有知识并提供最新信息。

无专属知识库的应用

在没有专属知识库时,大模型无法准确回答“百炼手机”的问题。

无

有专属知识库的应用

引入专有知识库后,大模型就能准确回答“百炼手机”方面的问题。

有

关于RAG的工作原理等详细信息,请参见阿里云大模型ACA课程的检索增强生成

支持的数据格式

当前知识库支持导入PDF、DOCX、DOC、TXT、Markdown、PPTX、PPT、XLSX、XLS、HTML、PNG、JPG、JPEG、BMP、GIF格式的文档作为其知识来源。

支持从本地上传、从阿里云对象存储OSS导入从阿里云关系型数据库RDS导入三种方式(暂不支持阿里云以外的数据源,如在线网页、GitHub、Notion等)。

支持的模型

您可以配置以下模型使用知识库。配置通义千问使用知识库教程

预置模型(阿里云百炼支持的标准模型)

自定义模型(在阿里云百炼调优后的模型)

  • 通义千问-QwQ/Long/Max/Plus/Turbo

  • 通义千问VL-Max/Plus

  • 通义千问-开源版(Qwen3、Qwen2.5、Qwen2等)

  • 第三方文本生成模型(DeepSeek-R1、DeepSeek-V3、abab6.5s、Llama3.1、Yi-Large等)

指基于以下模型调优后的自定义模型。
  • 通义千问-Plus/Turbo

  • 通义千问VL-Max/Plus

  • 通义千问-开源版(Qwen2.5、Qwen2等)

上述列表并不完整且可能随时发生变化,请以阿里云百炼创建应用 > 立即创建 > 选择模型下拉列表中实际可选的具体模型为准。

创建与使用知识库

重要

RAM用户(子账号):为确保 RAM 用户(子账号)能执行导入数据、创建知识库等写入类操作,请为其授予管理员(或至少包含应用数据-操作知识库-操作页面权限

步骤一:导入数据

在开始创建知识库之前,请先依照下方步骤,将您的原始文档导入阿里云百炼,作为后续创建知识库时的初始知识来源。

说明

阿里云百炼控制台可直接导入非结构化数据结构化数据非结构化数据指未按某个预定义的表结构组织的数据,而结构化数据指按某个预定义的表结构组织的数据。

对于半结构化数据(如 JSON、CSV、YAML等),请先自行用相应工具将其转换为XLSXXLS格式的结构化数据

以下情况,请选择非结构化数据

  • 文档为PDF、DOCX、DOC、TXT、Markdown、PPTX、PPT、HTML、PNG、JPG、JPEG、BMP、GIF等格式。

  • 有多个XLSXXLS文档,但它们的表结构可能不同

  • 从阿里云对象存储OSS导入文档。

以下情况,请选择结构化数据

  • 有多个XLSXXLS文档,且它们的表结构完全一致

  • 文档为XLSXXLS格式,将用于FAQ问答类场景。例如Excel文档包含两列,分别为问题答案。基于结构化数据创建的知识库允许您限定问题列用于知识库检索,答案列用于大模型回答参考(基于非结构化数据创建的知识库难以实现此效果)。

非结构化数据

  1. 访问非结构化数据页签。

  2. 在左侧类目管理下,选择需要导入数据的类目。

    单击image图标创建类目或选择默认类目进行导入。每个业务空间最多创建500个类目,包括父级和子级。
    每个业务空间最多上传10万个文档。

    image

  3. 单击导入数据,进入导入数据界面

  4. 导入方式选择本地上传OSS

    如果您是首次从 OSS 向阿里云百炼导入数据,需要先按照界面提示完成授权,并为目标Bucket添加bailian-datahub-access标签以供阿里云百炼访问。详见OSS导入数据配置说明
    阿里云百炼支持的Bucket存储类型不包括归档、冷归档或深度冷归档。支持内容加密的Bucket。支持私有的Bucket。
    阿里云百炼暂不支持访问Bucket根目录下的文件,请您在Bucket下选择已有的子目录或新建一个子目录供阿里云百炼访问。
    请确保目标Bucket没有启用Referer防盗链,否则阿里云百炼将无法导入该Bucket中的文件。
  5. 选择文档解析器,默认为文档智能解析(暂不支持更改)。若文档含插图,应如何处理

    展开下方数据解析设置,了解如何为不同文档格式配置解析规则,优化解析效果。

    数据解析设置

    您可以根据实际需求,配置解析策略,如果不确定建议您维持默认设置。有关文档智能解析大模型文档解析电子文档解析的详细说明,请参阅文档理解

    • 电子文档解析:不支持解析文档中的插图与图表。

    • 文档智能解析:对于文档中的插图,解析器会识别并提取图中的文本,并生成文本摘要。这些摘要将与文档中其它非图片内容一起被切分并转换为向量,参与知识库的检索。

    • 大模型文档解析:使用通义千问VL模型的智能体应用支持用户对文档中插图和图表的内容进行提问。如果您有此类需求(需要识别和理解文档中的插图与图表),请选择大模型文档解析

    • Qwen VL解析:仅支持解析图片格式。您可以自主选择通义千问VL模型,并通过传入Prompt指定模型需要识别的版面、元素及内容,其余功能与大模型文档解析一致。

    image

    image

  6. 为文档配置标签(可选)。

    通过API调用应用时,可以在请求参数tags中指定标签。应用在检索知识库时,会先根据标签筛选相关文档,从而提高检索效率。对于智能体应用,您还可以在控制台编辑应用时直接设置标签(启用知识库 > +知识库 > 知识库高级配置 > 标签过滤)。
  7. 单击确认,系统将开始解析并导入文档。整个过程需一定时间,请耐心等待。

    文档解析会将上传文档转换成阿里云百炼可处理的格式。在请求高峰时段,该过程可能需要数小时,请耐心等待。
  8. 解析和导入完成后,单击相应文档右侧的详情即可查看导入的文档。

    文档导入阿里云百炼后,将作为独立副本(与原始数据没有关联)存储在平台提供的免费空间中,您无需额外购买存储空间。
    您可以查看最近90天内导入的文档。超过此时间范围后,导入的文档将无法查看,但不会被删除。
    导入的文档仅供当前业务空间的用户使用。阿里云百炼不会将其用于任何商业用途或对外公开。

结构化数据

  1. 访问结构化数据页签。

  2. 新建数据表或选择现有数据表进行导入。

    每个业务空间最多创建1000张数据表,每张表累计可导入的数据上限为10万行(包括表头),100列。行数或列数超过此限制将导致导入失败。请您自行提前对表格中数据进行分割。

    新建数据表进行导入

    单击image图标新建数据表。

    image

    1. 自定义数据表名称

    2. 配置表结构,选择可直接上传Excel自定义表头

      操作

      说明

      直接上传Excel

      阿里云百炼将自动识别上传文档中的表头,并据此来创建数据表结构,并将其余内容作为数据记录导入该表。

      自定义表头

      列名为必填参数,描述为选填参数,类型为必填参数。

      重要
      • 创建数据表后将无法再修改列名、描述以及类型

      • 这里定义的数据表结构,必须和待导入的数据表的结构完全相同,否则会导入失败。例如,待导入的数据表有2列,这里的表结构必须配置2个字段,且列名需一一对应。您可以通过单击新增字段操作列的删除,来增加或删减字段。

      • 如需模型在回答时理解数据表中各字段的含义(如 age 表示员工的年龄),请在描述中明确指定字段语义。

      • 设置字段类型link时,请确保链接公开可访问且指向一个有效的图片文件,否则知识库无法识别该图片。

        link格式示例:https://example.com/downloads/pic.jpg
        创建知识库时,link类型字段用于生成图片索引。阿里云百炼会访问目标图片并提取其特征,然后通过图片Embedding转换为向量并保存。知识库检索时,会用该向量与用户上传图片的向量进行相似度比对。

      image

    3. 上传文档以导入数据。

      1. 单击image选择并上传文档(XLSXXLS格式)。

        文档中必须包含表头,且与当前数据表的表头结构一致,否则会导入失败。
      2. 上传成功后,单击预览可查看导入的数据。

    4. 单击确定。在左侧数据表管理的导航树中出现新增的数据表。

      image

    选择现有数据表进行导入

    从左侧的数据表管理列表中选择相应的数据表,然后单击导入数据

    1. 导入类型选择覆盖上传增量上传

      您可以单击界面上的下载模板,获取一个仅包含表头的空白文档。您可以在该文档中插入新数据,随后直接将其用于覆盖上传或增量上传。
    2. 单击image选择并上传文档(XLSXXLS格式)。

      文档中必须包含表头,且与当前数据表的表头结构一致,否则会导入失败。
    3. 上传成功后,单击预览可查看导入的数据。

步骤二:创建知识库

说明
  • 知识库最大数量:每个阿里云账号(主账号)最多创建100个关联RDS的知识库,此外无其他数量限制。

  • 通过API创建:API只支持创建非结构化知识库,结构化知识库不支持通过API创建。

  1. 访问阿里云百炼的知识库界面,单击创建知识库

  2. 输入知识库名称知识库描述数据类型选择非结构化数据结构化数据

    请注意,知识库创建后将无法更改其数据类型,且单一知识库无法同时支持非结构化数据与结构化数据。

    非结构化数据

    1. 进行知识库配置

      配置项

      说明

      配置模式

      建议选择推荐配置(阿里云百炼基于过往最佳实践得出)。若选择自定义,则可针对知识库的检索与召回等关键参数进行设置。

      请注意,创建知识库后将无法更改配置模式中除相似度阈值之外的其它参数

      配置自定义模式

      image

      多轮会话改写:开启后阿里云百炼将基于会话上下文自动调整原始输入Prompt(用户问题)以提升检索效果。

      Embedding模型:用于将原始输入Prompt和知识文本转化为数值化向量,以便对二者进行相似度比较。默认的官方向量v4(text-embedding-v4)模型在语种支持、代码片段向量化效果和向量维度自定义化等方面,相比官方向量v3(text-embedding-v3)模型进行了全面升级,适用于大部分场景。详情请参见文本与多模态向量化

      Rank模型:位于知识库外部的评分系统,它会计算用户问题与知识库中每个文本切片的相似度分数并按此降序排列,并返回分数最高的前K个文本切片。如果您只需语义排序,请选择GTE-ReRank排序;若您同时需要语义排序和文本匹配特征以确保相关性,请选择官方排序(推荐)。

      相似度阈值:该阈值表示允许召回的文本切片的最低相似度分数,用于筛选Rank模型返回的文本切片,即只有分数超过此数值的文本切片才会被召回。调低此阈值预期会召回更多文本切片,但可能导致召回一些相关度较低的文本切片;相反,提高此阈值会减少召回的文本切片。若设置得过高,则可能导致知识库丢弃相关的文本切片。

      向量存储类型

      选择向量数据库存储文本向量。内置的向量数据库足以满足知识库的基本功能需求。如需高级功能,如管理、审计和监控数据库,请选择ADB-PG(AnalyticDB for PostgreSQL)。

      请注意,购买ADB-PG实例时请开启向量引擎优化,否则阿里云百炼将无法使用此实例。

      拓展阅读:如何手动查询AnalyticDB for PostgreSQL中与Prompt相似的文本

      本示例将使用AnalyticDB for PostgreSQL(ADB-PG)和通用文本向量text-embedding-v2,为您演示如何手动查询ADB-PG中与Prompt相似的文本。

      Embedding模型:能够将多种格式数据(如文本、音频、图片、视频等)转化为具有语义信息的高维数值化向量,从而便于进行相似度计算、聚类、分类和推荐等操作。

      整体流程

      首先创建一个使用ADB-PG作为向量存储的知识库(下图步骤14)。然后通过DashScopeOpenAISDK调用通用文本向量,生成向量(下图步骤56)。最后,通过SQL查询ADB-PG,比较该向量与表中存储向量的欧式距离与点积距离(下图步骤7)。

      image

      插入向量:知识库会将您导入的文档切割成多个文本切片,并将这些文本切片的向量存储在您的ADB-PG实例中。

      操作步骤

      基于上图,以下是详细操作步骤。

      第一步:创建知识库

      创建一个知识库(结构化或非结构化),向量存储类型选择为ADB-PG。具体操作详见步骤一:导入数据步骤二:创建知识库

      image

      第二步:通过阿里云百炼DashScopeOpenAISDK调用通用文本向量生成向量。

      如何选择取决于您对哪个SDK更为熟悉。以下是使用DashScope SDK调用text-embedding-v2,将文本Prompt“百炼手机X1”转换为向量的代码示例。

      请确保在您的代码中将Embedding模型设置为通用文本向量text-embedding-v2。
      示例代码中的input参数是您的Prompt,请使用字符串,不要使用字符串列表或打开的文件,以免响应中包含多个向量,影响相似度分析。

      Python

      from http import HTTPStatus
      import dashscope
      
      # 请将下方变量值替换为您的API_KEY。不建议在实际生产环境中直接将API Key硬编码到代码中。
      dashscope.api_key = 'DASHSCOPE_API_KEY'
      # Embedding模型务必设置为text_embedding_v2。
      response = dashscope.TextEmbedding.call(
          model=dashscope.TextEmbedding.Models.text_embedding_v2,
          input='百炼手机X1')
      if response.status_code != HTTPStatus.OK:
          print(f'request_id={response.request_id}\ncode={response.status_code}\nmessage={response.message}\n')
      else:
          print(f'request_id={response.request_id}\noutput={response.output}\nusage={response.usage}\n')
      

      运行代码可以获得以下结果:

      text-embedding-v2对输出向量结果默认归一化处理。

      成功响应

      request_id=a4ddd876-5003-971b-abca-81da4cxxxxxx
      output={'embeddings': [{'embedding': [0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...], 'text_index': 0}]}
      usage={'total_tokens': 4}

      异常响应

      request_id=dea1ba20-68fe-9552-a1be-a5fa81xxxxxx
      code=401
      message=Invalid API-key provided.

      响应中embedding字段的值即是根据Prompt生成的向量

      第三步:向量分析

      接下来将通过获取欧氏距离(平方)、点积距离和余弦相似度的示例,为您演示如何手动查询ADB-PG中与Prompt相似的文本。如何登录您的ADB-PG数据库

      表名中的“xxxxx”为系统分配的百炼内部标识数字,非知识库ID,两者并无关联。
      cloud_index_adb_xxxxx_prod用于存储指定知识库中所有文本切片的相关信息,包括文本切片的向量(表中的vector字段)和内容(非结构化知识库是表中的content字段,结构化知识库则是表中以col_为前缀的相关字段)。
      cloud_index_adb_xxxxx_doc_prod用于存储指定非结构化知识库中所有文档的元数据及标签等信息。
      获取欧式距离(平方值)

      欧氏距离(平方值)越小,表示两个向量之间的相似度越高。

      请将下方示例中的表名cloud_index_adb_xxxxx_prod替换为实际表名,向量替换为您在第二步中获取的实际向量。
      SELECT id, l2_squared_distance(vector, array[0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...]::float4[]) AS distance 
      FROM cloud_index_adb_xxxxx_prod 
      ORDER BY vector <-> array[0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...]::float4[] 
      LIMIT 3;

      返回示例如下,其中idllm-x的文本切片的向量与输入Prompt向量的欧氏距离最小。

        id  |      distance
      ------+--------------------
      llm-x | 0.787400245666503906
      llm-y | 1.07475090026855469
      llm-z | 1.42198872566223145
      (3 rows)
      获取点积距离(在归一化时,点积距离等于余弦相似度

      点积距离越大,表示两个向量之间的相似度越高。

      请将下方示例中的表名cloud_index_adb_xxxxx_prod替换为实际表名,向量替换为您在第二步中获取的实际向量。
      SELECT id, dp_distance(vector, array[0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...]::float4[]) AS similarity
      FROM cloud_index_adb_xxxxx_prod 
      ORDER BY vector <-> array[0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...]::float4[] 
      LIMIT 3;

      返回示例如下,其中idllm-x的文本切片的向量与输入Prompt向量的余弦相似度最大。

        id   |    similarity
      -------+-------------------
       llm-x | 0.606299877166748047
       llm-y | 0.462624520063400269
       llm-z | 0.289005756378173828
       (3 rows)

      查看id='llm-x'文本切片的内容(非结构化知识库是表中的content字段,结构化知识库则是表中以col_为前缀的相关字段)。以非结构化知识库为例:

      请将下方示例中的表名cloud_index_adb_xxxxx_prod替换为实际表名。
      SELECT id, content FROM cloud_index_adb_xxxxx_prod where id = 'llm-x';

      返回示例如下。

       id    |    content
      -------+-------------------
       llm-x | 欢迎来到未来科技的前沿,探索我们精心打造的智能手机系列,每一款都是为了满足您对科技生活的无限遐想而生。百炼 X1 - 畅享极致视界:搭载 6.7英寸 1440 x 3200像素超清屏幕,搭配 120Hz刷新率,流畅视觉体验跃然眼前。256GB海量存储空间与 12GB RAM强强联合,无论是大型游戏还是多任务处理,都能轻松应对。5000mAh电池长续航,加上超感光四摄系统,记录生活每一刻精彩。参考售价:4599-4999。
      (1 rows)
    2. 下一步,选择要导入知识库的文档。

      若文档已成功导入应用数据且为目标版本,此处可直接勾选它;否则需先前往非结构化数据页签导入文档(详见步骤一),导入完成后再返回此处勾选。

      • 选择类目:导入该类目下的所有文档,支持选择多个类目。

      • 选择文件:手动选取需要导入的文档。

        单次最多可选择50个文档。单文档最大100MB1000页,如果超出此限制,您需要先自行将其拆分为多个文档再进行导入。
    3. 下一步,配置知识库数据处理策略。

      配置项

      说明

      metadata抽取(可选)

      metadata(元数据)是与非结构化文档内容相关的一系列附加属性,这些属性以key-value键值对的形式集成到文本切片中。

      元数据的作用:元数据为文本切片提供了重要的上下文信息,可显著提升知识库检索的准确性。例如,某知识库包含了上千个产品介绍文档,且文档名称为产品名称。当在知识库中检索“A产品的功能概述”时,如果所有文档的正文内容都包含“功能概述”,但均没有提到“A产品”,那么知识库可能会召回大量与原始查询无关的文本切片。若将产品名称作为元数据附加到该知识库的所有文本切片上,知识库就能精准地过滤出与“A产品”相关的且包含“功能概述”的文本切片,从而提高检索的准确性,同时减少模型的输入Token消耗。
      元数据的用法:通过API调用应用时,您可以在请求参数metadata_filter中指定metadata。应用在检索知识库时,会先根据metadata筛选相关文档。
      注意:创建知识库后将无法再配置metadata抽取

      配置metadata抽取

      下方示例图中该文档(它所有的文本切片)的元数据包含5个自定义属性:date(文档中出现的所有年份)、reference(文档中出现的所有参考文献)、filename(文档的名称)、keywords(文档中出现的关键词)以及author(文档的作者信息)。

      image

      开启metadata抽取,然后单击meta信息设置知识库中的所有文档附加统一或个性化的元数据。在文档切分时,每个文档的元数据都会集成到各自的文本切片中。下图是上方示例使用的meta信息模板:

      image

      新建Meta信息模板说明

      取值方法说明:

      • 常量:为知识库中的所有文档附加一个固定的属性。

        如上方示例所示,如果知识库中所有文档的作者相同,您可以统一设置一个字段名为author的常量。
      • 变量:为知识库中的每个文档附加一个可变属性。目前支持的属性包括file_namecat_name。选择file_name时,阿里云百炼会将文档的名称附加到其元数据中,如上方示例所示。选择cat_name时,阿里云百炼会把文档所在类目的名称附加到文档的元数据中。

      • 大模型:系统将依据设定的实体描述规则,对知识库中每个文档的文本内容进行匹配。系统会自动识别并提取文档中的相关信息,然后将这些信息作为属性附加到文档的元数据中。

        如上方示例的meta信息模板所示,如果您希望提取每个文档中所有出现过的年份信息作为文档的属性,可以设置一个名为date的大模型字段,实体描述配置如下:

        image

      • 正则:系统将根据设置的正则表达式,对知识库中每个文档的文本内容进行匹配。符合该表达式的内容将被提取,并作为属性添加到文档的元数据中。

        如上方示例的meta信息模板所示,如果您希望提取每个文档中所有出现过的参考资料,并且假设参考资料规律为:以“《”开头、以“》”结尾,则可以设置一个名为reference的正则字段,正则表达式配置如下:

        image

      • 关键词搜索:系统会在每个文档中查找预设的关键词,并将找到的关键词作为属性添加至该文档的元数据中。

        例如,在上述示例的meta信息模板中,我们预设的关键词为:

        image

        但由于该文档中仅出现了“融资、产业、绿色、资本”这四个关键词,因此系统只提取了这四个关键词作为该文档keywords属性的值。

      是否参与检索:开启后,元数据字段和值将和文本切片的内容一同参与知识库检索;不开启时,仅文本切片的内容参与检索,元数据字段和值不参与。

      是否参与模型回复:开启后,元数据字段和值将和文本切片的内容一同参与大模型的回答生成过程;不开启时,仅文本切片的内容参与大模型的回答生成过程,元数据字段和值不参与。

      Excel文件表头是否拼装(可选)

      建议仅在导入文档均为XLSX、XLS格式且含表头时开启,否则无需开启

      开启后,知识库会将所有XLSX、XLS格式文档的首行数据视为表头,并自动拼接到每个文本切片中(数据行),避免大模型误将表头视为普通数据行来处理。

      文档切分chunk

      选择智能切分(推荐)自定义切分

      文档切分chunk作用:知识库会将您的文档切分成文本切片,并将这些文本切片通过Embedding模型转换为向量。随后文本切片和向量将以键值对的形式存入向量数据库中。您可以查看知识库里每一个文本切片的具体内容(文字和图片),具体操作请参见查看知识库
      注意:创建知识库后将无法再更改文档切分chunk。不合适的切分策略可能会降低检索和召回效果。
      • 智能切分:系统默认的切分策略,经评测对于多数文档可获得最佳的检索效果。

        最大分段长度:即您希望每个文本切片的字符数上限。超过该长度时,文本很可能会被截断。
        分段重叠长度:相邻文本切片的重叠字符数。建议设置为文本切片最大分段长度的10%到25%,以保留文本切片之间语义的相关性,有利于提高多文本切片召回的召回质量。请注意,该参数的值必须小于最大分段长度,否则将导致文档切分chunk异常。
      • 自定义切分:如果智能切分无法正常切割,您也可以对智能切分的部分策略进行调整。

        配置自定义切分

        使用自定义切分时,知识库会先依据选定的分句标识符将文档拆分为若干段落,然后再根据这些段落创建文本切片。在拆分和切分的过程中,知识库会尽量保证每个部分的语义完整,减少不必要的拆分和切分,同时尽量满足您设置的分段预估长度分段重叠长度要求。

        • 分段预估长度:即您希望每个文本切片的字符数上限,超出该长度时将强制截断文本。

        • 分段重叠长度:相邻文本切片的重叠字符数。建议设置为文本切片预估长度的10%到25%,以保留文本切片之间语义的相关性,有利于提高多文本切片召回的召回质量。请注意,该参数的值必须小于分段预估长度,否则会导致文档切分chunk异常。

        • 分句标识符依据选定的规则将文档拆分为若干段落,支持自定义分句标识符(此时按照正则切分)。

          分句标识符

          说明及示例

          按长度切分

          适合对 Token 数量有严格要求的场景,比如使用上下文长度较小的模型时。

          示例文本:

          百炼知识库提供多种文档处理方式。您可以根据需求选择最合适的方法。

          可能的切分结果(分段预估长度=20):

          • 文本切片1:“百炼知识库提供多种文档处理方式。您可以根”

          • 文本切片2:“据需求选择最合适的方法。”

          按页切分

          适合每页传达独立主题的文档,要求不同页面的内容不会混杂在同一文本切片中。

          示例markdown文本:

          文档的第1

          文档的第2

          # 创建知识库
          百炼知识库提供多种文档处理方式,您可以根据需求选择最合适的方法。
          
          ## 智能切分
          - 采用系统内置切分策略。
          - 经评测对于多数文档可获得最佳的检索效果。
          ## 自定义切分
          - 如果智能切分无法正常切割,您可以对智能切分的部分策略进行调整。
          
          
          
          
          

          可能的切分结果:

          • 文本切片1:“创建知识库 ... 获得最佳的检索效果。”

          • 文本切片2:“自定义切分 ... 的部分策略进行调整。”

          按照一级标题切分

          适合于用一级标题划分并传达独立主题的文档,要求不同一级标题下的内容不会混杂在同一文本切片中。

          示例markdown文本:

          文档的第1

          文档的第2

          # 创建知识库
          百炼知识库提供多种文档处理方式,您可以根据需求选择最合适的方法。
          
          ## 智能切分
          - 采用系统内置切分策略。
          - 经评测对于多数文档可获得最佳的检索效果。
          ## 自定义切分
          - 如果智能切分无法正常切割,您可以对智能切分的部分策略进行调整。
          
          
          
          
          

          可能的切分结果:

          • 文本切片1:“创建知识库 ... 的部分策略进行调整。”

          按照二级标题切分

          适合于用二级标题划分并传达独立主题的文档,要求不同二级标题下的内容不会混杂在同一文本切片中。

          示例markdown文本:

          文档的第1

          文档的第2

          # 创建知识库
          百炼知识库提供多种文档处理方式,您可以根据需求选择最合适的方法。
          
          ## 智能切分
          - 采用系统内置切分策略。
          - 经评测对于多数文档可获得最佳的检索效果。
          ## 自定义切分
          - 如果智能切分无法正常切割,您可以对智能切分的部分策略进行调整。
          
          
          
          
          

          可能的切分结果:

          • 文本切片1:“创建知识库 ... 选择最合适的方法。”

          • 文本切片2:“智能切分 ... 获得最佳的检索效果。”

          • 文本切片3:“自定义切分 ... 的部分策略进行调整。”

          按照正则切分

          系统会依据设置的正则表达式,对知识库中的文本进行切分。比如,当您需要保持句子的完整性时,可使用正则表达式(?<=。)按句号切分给定文档。

          示例文本:

          百炼知识库提供多种文档处理方式。您可以根据需求选择最合适的方法。

          可能的切分结果(正则表达式为(?<=。)):

          • 文本切片1:“百炼知识库提供多种文档处理方式。”

          • 文本切片2:“您可以根据需求选择最合适的方法。”

    结构化数据

    1. 进行知识库配置

      配置项

      说明

      配置模式

      建议选择推荐配置(阿里云百炼基于过往最佳实践得出)。若选择自定义,则可针对知识库的检索与召回等关键参数进行设置。

      请注意,创建知识库后将无法更改配置模式中除相似度阈值之外的其它参数

      自定义参数设置

      image

      多轮会话改写:开启后阿里云百炼将基于会话上下文自动调整原始输入Prompt(用户问题)以提升检索效果。

      Embedding模型:用于将原始输入Prompt和知识文本转化为数值化向量,以便对二者进行相似度比较。默认的官方向量v4(text-embedding-v4)模型在语种支持、代码片段向量化效果和向量维度自定义化等方面,相比官方向量v3(text-embedding-v3)模型进行了全面升级,适用于大部分场景。详情请参见文本与多模态向量化

      Rank模型:位于知识库外部的评分系统,它会计算用户问题与知识库中每个文本切片的相似度分数并按此降序排列,并返回分数最高的前K个文本切片。如果您只需语义排序,请选择GTE-ReRank排序;若您同时需要语义排序和文本匹配特征以确保相关性,请选择官方排序(推荐)。

      相似度阈值:该阈值表示允许召回的文本切片的最低相似度分数,用于筛选Rank模型返回的文本切片,即只有分数超过此数值的文本切片才会被召回。调低此阈值预期会召回更多文本切片,但可能导致召回一些相关度较低的文本切片;相反,提高此阈值会减少召回的文本切片。若设置得过高,则可能导致知识库丢弃相关的文本切片。

      向量存储类型

      选择向量数据库存储文本向量。内置的向量数据库足以满足知识库的基本功能需求。如需高级功能,如管理、审计和监控数据库,请选择ADB-PG(AnalyticDB for PostgreSQL)。

      请注意,购买ADB-PG实例时请开启向量引擎优化,否则阿里云百炼将无法使用此实例。

      拓展阅读:如何手动查询AnalyticDB for PostgreSQL中与Prompt相似的文本

      本示例将使用AnalyticDB for PostgreSQL(ADB-PG)和通用文本向量text-embedding-v2,为您演示如何手动查询ADB-PG中与Prompt相似的文本。

      Embedding模型:能够将多种格式数据(如文本、音频、图片、视频等)转化为具有语义信息的高维数值化向量,从而便于进行相似度计算、聚类、分类和推荐等操作。

      整体流程

      首先创建一个使用ADB-PG作为向量存储的知识库(下图步骤14)。然后通过DashScopeOpenAISDK调用通用文本向量,生成向量(下图步骤56)。最后,通过SQL查询ADB-PG,比较该向量与表中存储向量的欧式距离与点积距离(下图步骤7)。

      image

      插入向量:知识库会将您导入的文档切割成多个文本切片,并将这些文本切片的向量存储在您的ADB-PG实例中。

      操作步骤

      基于上图,以下是详细操作步骤。

      第一步:创建知识库

      创建一个知识库(结构化或非结构化),向量存储类型选择为ADB-PG。具体操作详见步骤一:导入数据步骤二:创建知识库

      image

      第二步:通过阿里云百炼DashScopeOpenAISDK调用通用文本向量生成向量。

      如何选择取决于您对哪个SDK更为熟悉。以下是使用DashScope SDK调用text-embedding-v2,将文本Prompt“百炼手机X1”转换为向量的代码示例。

      请确保在您的代码中将Embedding模型设置为通用文本向量text-embedding-v2。
      示例代码中的input参数是您的Prompt,请使用字符串,不要使用字符串列表或打开的文件,以免响应中包含多个向量,影响相似度分析。
      Python
      from http import HTTPStatus
      import dashscope
      
      # 请将下方变量值替换为您的API_KEY。不建议在实际生产环境中直接将API Key硬编码到代码中。
      dashscope.api_key = 'DASHSCOPE_API_KEY'
      # Embedding模型务必设置为text_embedding_v2。
      response = dashscope.TextEmbedding.call(
          model=dashscope.TextEmbedding.Models.text_embedding_v2,
          input='百炼手机X1')
      if response.status_code != HTTPStatus.OK:
          print(f'request_id={response.request_id}\ncode={response.status_code}\nmessage={response.message}\n')
      else:
          print(f'request_id={response.request_id}\noutput={response.output}\nusage={response.usage}\n')
      

      运行代码可以获得以下结果:

      text-embedding-v2对输出向量结果默认归一化处理。
      成功响应
      request_id=a4ddd876-5003-971b-abca-81da4cxxxxxx
      output={'embeddings': [{'embedding': [0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...], 'text_index': 0}]}
      usage={'total_tokens': 4}
      异常响应
      request_id=dea1ba20-68fe-9552-a1be-a5fa81xxxxxx
      code=401
      message=Invalid API-key provided.

      响应中embedding字段的值即是根据Prompt生成的向量

      第三步:向量分析

      接下来将通过获取欧氏距离(平方)、点积距离和余弦相似度的示例,为您演示如何手动查询ADB-PG中与Prompt相似的文本。如何登录您的ADB-PG数据库

      表名中的“xxxxx”为系统分配的百炼内部标识数字,非知识库ID,两者并无关联。
      cloud_index_adb_xxxxx_prod用于存储指定知识库中所有文本切片的相关信息,包括文本切片的向量(表中的vector字段)和内容(非结构化知识库是表中的content字段,结构化知识库则是表中以col_为前缀的相关字段)。
      cloud_index_adb_xxxxx_doc_prod用于存储指定非结构化知识库中所有文档的元数据及标签等信息。
      获取欧式距离(平方值)

      欧氏距离(平方值)越小,表示两个向量之间的相似度越高。

      请将下方示例中的表名cloud_index_adb_xxxxx_prod替换为实际表名,向量替换为您在第二步中获取的实际向量。
      SELECT id, l2_squared_distance(vector, array[0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...]::float4[]) AS distance 
      FROM cloud_index_adb_xxxxx_prod 
      ORDER BY vector <-> array[0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...]::float4[] 
      LIMIT 3;

      返回示例如下,其中idllm-x的文本切片的向量与输入Prompt向量的欧氏距离最小。

        id  |      distance
      ------+--------------------
      llm-x | 0.787400245666503906
      llm-y | 1.07475090026855469
      llm-z | 1.42198872566223145
      (3 rows)
      获取点积距离(在归一化时,点积距离等于余弦相似度

      点积距离越大,表示两个向量之间的相似度越高。

      请将下方示例中的表名cloud_index_adb_xxxxx_prod替换为实际表名,向量替换为您在第二步中获取的实际向量。
      SELECT id, dp_distance(vector, array[0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...]::float4[]) AS similarity
      FROM cloud_index_adb_xxxxx_prod 
      ORDER BY vector <-> array[0.012356398553941625, 0.029741432266407613, -0.0027946300120853308, ...]::float4[] 
      LIMIT 3;

      返回示例如下,其中idllm-x的文本切片的向量与输入Prompt向量的余弦相似度最大。

        id   |    similarity
      -------+-------------------
       llm-x | 0.606299877166748047
       llm-y | 0.462624520063400269
       llm-z | 0.289005756378173828
       (3 rows)

      查看id='llm-x'文本切片的内容(非结构化知识库是表中的content字段,结构化知识库则是表中以col_为前缀的相关字段)。以非结构化知识库为例:

      请将下方示例中的表名cloud_index_adb_xxxxx_prod替换为实际表名。
      SELECT id, content FROM cloud_index_adb_xxxxx_prod where id = 'llm-x';

      返回示例如下。

       id    |    content
      -------+-------------------
       llm-x | 欢迎来到未来科技的前沿,探索我们精心打造的智能手机系列,每一款都是为了满足您对科技生活的无限遐想而生。百炼 X1 - 畅享极致视界:搭载 6.7英寸 1440 x 3200像素超清屏幕,搭配 120Hz刷新率,流畅视觉体验跃然眼前。256GB海量存储空间与 12GB RAM强强联合,无论是大型游戏还是多任务处理,都能轻松应对。5000mAh电池长续航,加上超感光四摄系统,记录生活每一刻精彩。参考售价:4599-4999。
      (1 rows)
    2. 下一步,选择数据来源以导入结构化数据。

      如果您通过结构化数据页签导入结构化数据,后续您需要手动将数据表的更新同步至知识库。展开更新知识库部分查看更新结构化知识库具体步骤。
      如果您通过云数据库RDS或自建MySQL实例导入结构化数据,数据更新将自动同步至知识库(一般为分钟级,但在请求高峰期可能会稍有延迟)。

      数据来源

      说明

      数据管理(应用数据)

      若数据表已在阿里云百炼结构化数据中且为目标版本,此处可直接勾选它;否则需先前往结构化数据页签导入(具体操作请参见导入结构化数据),导入完成后再返回此处进行勾选。

      关联RDS

      同步RDS或自建MySQL实例中指定数据表的数据到知识库。具体操作步骤请参见集成MySQL数据至知识库

      实例限制:RDS实例目前只支持MySQL引擎(版本无限制),暂不支持PostgreSQL等其它引擎。实例地域无限制。只支持基础系列高可用系列(暂不支持开启数据库代理)。
      数据库和表限制:知识库只能关联单个数据库中的一张表,不支持多表关联。知识库对关联的表中的数据量没有限制,但每一行记录的大小必须控制在100KB以内。
      重要

      在创建知识库后,不建议再对源表进行DDL类操作(如DROP TABLE、RENAME TABLE、TRUNCATE TABLE、ADD COLUMN、DROP COLUMN等)。否则可能导致RDS与知识库之间数据同步失败。展开下方折叠面板了解详情。

      拓展阅读:用户对RDS源表进行DDL类操作,阿里云百炼会如何处理

      • DROP TABLE:删除源表后,知识库中的数据不会自动删除。如需删除知识库,请手动进行删除,具体操作请参见删除知识库;若之后添加同名表,知识库中的数据将继续自动同步,但仅会进行增量同步(即仅同步新的数据变更)。

      • RENAME TABLE、ADD COLUMN、DROP COLUMN:一旦源表的名称被修改,后续的数据变更将不再同步到知识库。如果表名恢复,数据同步也会重新启动,但只会进行增量同步(即仅同步新的数据变更)。在此期间,所有的数据变更将不会被同步到知识库。需注意,源表的字段变动不会同步更新至知识库,因此源表新增的字段将无法被知识库检索和召回。为了避免这些问题,如果您需要对源表进行变更,建议创建一个新的知识库。

      • TRUNCATE TABLE:清除源表数据不会同步删除知识库中的数据。

      如需模型在回答时理解RDS数据表中各字段的含义(如 age 表示员工的年龄),您可以在智能体应用的系统提示词或工作流应用的大模型节点中明确指定各字段语义,示例如下图

      image

    3. 单击下一步,设置知识库索引。请注意,索引配置在知识库创建后无法更改。

      配置项

      说明

      是否索引

      link类型字段可见。若您希望阿里云百炼访问链接指向的图片并将其通过图片Embedding转换为向量保存,请选择图片;若您希望将链接作为普通文本处理,请选择不处理(等同于string类型)。

      选择图片时,请确保数据表中每个link指向的图片文件不超过3MB。超过限制将导致知识库创建失败。

      是否参与检索

      开启后表示允许知识库在此列数据中进行搜索。

      是否参与模型回复

      开启后表示本列的检索结果将作为大模型生成回答时的输入信息。如下图示例的配置中,对“姓名”、“性别”、“岗位”、“年龄”开启是否参与检索,对“姓名”和“岗位”开启是否参与模型回复后, 知识库将会在所有列数据中进行检索,但只对检索到的数据中“姓名”、“岗位”两列的内容提供给大模型进行回答参考。

      image

      如下图所示,因为“年龄”没有开启参与模型回复,大模型在关联该知识库后依然无法回答“张三的年龄”的问题。

      image

  3. 单击导入完成,完成知识库创建

    在请求高峰时段,创建过程可能需要数小时,请耐心等待。

步骤三:测试知识库(可选)

命中测试用于评估知识库在给定的相似度阈值下语义检索的表现,例如检查文本切片是否被正确召回,从而确定是否需要进一步调整知识库的相似度阈值,以确保后续大模型能够从知识库中获得有效的知识输入。要进行命中测试,请展开命中测试(可选)并按步骤操作。

相似度阈值:该阈值表示允许召回的文本切片的最低相似度分数,用于筛选Rank模型返回的文本切片,即只有分数超过此数值的文本切片才会被召回。调低此阈值预期会召回更多文本切片,但可能导致召回一些相关度较低的文本切片;相反,提高此阈值会减少召回的文本切片。若设置得过高,则可能导致知识库丢弃相关的文本切片。

命中测试(可选)

命中测试建议步骤

  1. 设计能够覆盖客户常见问题的测试用例;

  2. 根据知识库的具体应用场景和前期导入文档的质量,选择一个合适的相似度阈值;

  3. 执行命中测试,查看知识库召回结果;

  4. 基于召回结果,重新调整您的知识库的相似度阈值,具体操作请参见编辑知识库

image

控制台

  1. 访问知识库界面,单击知识库右侧命中测试

    image

  2. 命中测试界面,您可以修改相似度阈值,然后在右侧文本框中输入关键词进行命中测试。

    单击界面上的image图标上传附加图片进行命中测试。如果是结构化知识库,且存在图片索引,系统会先将输入图片转为向量并检索到相关记录,然后将这些记录与提问一起提供给大模型;如果是非结构化知识库,或不存在图片索引的结构化知识库,则输入的图片不会用于检索。
  3. 召回结果中,您可以查看本次测试关键词的命中情况(已按相似值降序排列)。单击每个文本切片,可查看相应文本切片内容。

  4. 单击查看历史召回记录,可查看关键词的历史命中结果。

API

重要

子账号(主账号不需要)调用Retrieve接口前,需先获取API权限

在指定的知识库中检索信息,请调用Retrieve接口。建议通过最新版阿里云百炼SDK进行调用,支持在线调试及多语言代码示例生成

步骤四:使用知识库

接下来,您可前往应用管理,将已创建的知识库与您同一业务空间下的智能体应用工作流应用进行关联(使用API请通过应用调用rag_options传入知识库ID),以便为您的大模型应用补充私有知识和提供最新信息。两类应用均支持同时选择并检索多个知识库(最多5,其中智能体应用支持干预检索顺序),采用多路召回策略

干预检索顺序:在智能体应用中,您可以设置权重以区分各知识库在检索时的重要性/优先级。系统将优先召回权重更高的知识库中的相关信息。
多路召回:假设应用关联了A1、A2A3三个知识库,系统会从这些库中检索与原始输入相关的切片,再通过Rank模型重排序,选出最相关的前K条加入到大模型的输入Token中用于其回答时参考。

当然,您也可以选择不使用阿里云百炼应用,直接检索知识库

接下来为您介绍如何在智能体应用及工作流应用中引用知识库。

智能体应用

场景

下图是一个基于知识库的问答类智能体应用示例。此类应用有效解决了通用大模型难以处理私有知识和获取最新信息的问题。适用于个人助理、客户服务、技术支持等领域。

image

在智能体应用中使用知识库

访问应用管理,单击已创建智能体应用卡片的配置按钮,进入阿里云百炼应用管理界面。如下图所示启用知识库,系统会自动在提示词中加入让大模型参考知识库的指令。单击+知识库添加知识库,使用默认的权重配置。发布应用后,默认使用选中的知识库进行回答。

image

权重说明

当智能体应用同时关联多个知识库时,您可以按信息源的重要性/等级为每个知识库分配权重。在多路召回时,若多个知识库中都有相关文本切片,同等条件下系统将优先返回权重更高的知识库中的文本切片

原理介绍:系统首先计算用户问题与各个知识库中内容的相关度,筛选出最相关的文本切片。接着,将这些文本切片的相似度分数与对应知识库的权重相乘。经加权重排后,最终提供给大模型回答参考(加权后得分越高,越可能被采纳)。
image
配置说明

配置修改后仅对当前应用生效。

  1. 拼装策略:用于平衡知识库召回结果的全面性和性能,可选择按召回数量智能拼装

    按召回数量可以满足对输入信息量有明确要求的场景。智能拼装则能最大限度地利用输入空间。
    • 按召回数量支持同时设置召回片段数知识库拼装最大长度。系统会首先根据设定的召回片段数对召回的文本切片进行拼接,然后检测整体长度。如果超出知识库拼装最大长度限制,则会进行截断处理。

    • 智能拼装仅支持设置知识库拼装最大长度。在保证召回的文本切片整体长度不超过知识库拼装最大长度的前提下,系统将尽可能多地召回相关的文本切片。

      配置项

      说明

      召回片段数

      多路召回策略K值(阿里云百炼支持的最大值为20)。它决定了Rank模型提供给大模型参考的文本切片数量。增大该值可提高大模型的回答准确性,但也会相应增加大模型输入Token消耗。

      知识库拼装最大长度

      从知识库召回的文本切片会被拼装成连贯的文本供大模型参考,但存在字符数上限。超过该长度时,文本将被强制切割,超出部分将被丢弃。增大该值通常会召回更多和用户查询可能相关的内容,但也会增加每次问答的响应时延。

  2. 回答范围:用于控制应用回答时参考知识来源,可引入或排除大模型自身通用知识的影响。

    • 知识范围判定:选择搜索阈值搜索阈值+大模型判断

      区别:当用户输入的关键词从语义维度与文本切片无法精确匹配时,使用单一搜索阈值(即相似度阈值)检索的局限就会显现。而采用搜索阈值+大模型判断的方式,会先通过相似度阈值筛选潜在文本切片,再由大模型深入分析关联度,进一步提高了判定的准确性。
      设置判断Prompt:大模型用于判断用户输入和检索结果的关联程度的规则。
    • 未在知识库处理:选择大模型自有知识回复固定回复

      当选择固定回复时,若用户问题无法用知识库内容进行响应,应用将直接输出固定回复,不会调用插件MCP 服务

      知识库 + 大模型知识(大模型自有知识回复)

      仅知识库范围(固定回复)

      应用的回答将综合知识库中检索到的知识和大模型自身的通用知识。

      应用的回答将严格基于知识库中检索到的知识。

      image

      image

      image

      image

  3. 展示回答来源:开启后将在回答中展示参考的全部来源,但会增加大模型输出Token消耗。

    例如,某一应用同时引用了多个不同的知识库。

    image

    开启展示回答来源功能后,应用回答时就会提供生成答案时参考的全部来源(具体到文档名称或数据表名称)。

    image

  4. 多模态回复增强:开启后,若知识库中的纯文本内容无法回答用户问题,系统会进而调用通义千问VL-Max模型分析知识库中相关的图表和图像,通过融合视觉信息给出更准确的回答;未开启时,系统不会自主调用该模型,可能无法准确回答涉及图表和图像的问题。

    图表和图像作为通义千问VL-Max模型的输入,按模型输入 Token 计费

工作流应用

场景

下图是一个基于知识库的问答类工作流应用示例。流程执行逻辑为:用户输入的问题首先会经过知识库检索,获取最相关的文本切片;随后这些文本切片将与问题一并输入至大模型节点,最终生成基于检索内容的回答。

image

在工作流应用中使用知识库

访问应用管理,单击已创建工作流应用卡片的管理按钮,进入阿里云百炼应用管理界面。

  1. 配置上游节点:新建一个知识库节点,并将它设置为开始节点的下游节点。

    image

  2. 选择查询变量:在知识库节点的输入下拉列表中选择查询变量(用于检索知识库中的相关文本切片)。

    对于问答类工作流应用,通常选择开始节点的sys.query作为查询变量。
  3. 选择知识库:在知识库节点的选择知识库下拉列表中选择需要引用的知识库。

  4. 调整TopK(可选):即多路召回策略K值,它决定了提供给大模型节点参考的文本切片数量。增大该值通常会提升大模型的回答准确性,但也会相应增加大模型输入Token消耗。

  5. 配置下游节点:新建一个大模型节点,并将它的设置为知识库节点的下游节点。在大模型节点的Prompt中填入让大模型参考知识库的指令。

    # 知识库
    请记住以下材料{{Retrieval_xxx.result}},他们可能对回答问题有帮助。
    请回答{{sys.query}}
    此处的{{Retrieval_xxx.result}}和{{sys.query}}需要重新填写。输入/插入变量。本示例需要选择知识库结果变量Retrieval_xxx.result和系统变量sys.query
  6. 单击测试发布。用户提问时,若知识库节点匹配到相关的文本切片,其内容将填入系统变量sys.query,辅助大模型节点生成回答;若未匹配到相关文本切片,则大模型节点将直接回应系统变量sys.query

管理与维护知识库

重要

RAM用户(子账号):为确保 RAM 用户(子账号)能执行更新、删除等写入类操作,请为其授予管理员(或至少包含应用数据-操作知识库-操作页面权限

查看知识库

查看业务空间下的知识库列表,搜索某个知识库,以及查看指定知识库的基本配置和内容。如需通过API查看知识库,请参阅知识库API指南

  1. 在阿里云百炼的知识库界面,您可以:

    • 查看知识库列表:查看当前业务空间下的完整知识库列表及概况,包括每个知识库所含知识数量和最近一次内容更新时间等信息。

    • 查找知识库:搜索框中输入知识库名称后,单击image图标查找知识库,遵循最左前缀匹配原则。

    • 查看知识库ID:将鼠标悬浮于知识库旁image图标上即可显示当前知识库ID。单击image图标可复制知识库ID。

  2. 单击知识库右侧的查看,可跳转至对应的知识库

    • 对于非结构化知识库,在此界面上您可以:

      • 查看知识列表:界面将展示当前知识库中已导入的全量文档列表。支持按输入的文档名称模糊查找,支持按状态筛选结果。

      • 查看文档的文本切片知识库内已上传的每篇文档都会以文本切片的形式进行存储。单击文档右侧的查看切片按钮,您可以:

        • 查看该文档的所有文本切片。

          暂不支持查看文本切片的历史版本。
        • 编辑文本切片的内容。

          单击保存后,文本切片的原有内容将失效,新的内容将用于知识库检索,并作为大模型回答的参考。
        • 启用或禁用特定文本切片。

          禁用文本切片后,知识库将无法在该文本切片中进行检索,因此也无法将文本切片提供给大模型进行回答参考。
      • 标签:添加或删除该文档的标签。

      • Meta信息:展示文档的metadata。metadata不支持修改。

    • 对于结构化知识库,在此界面上您可以:

      • 查看数据表的结构和数据:界面将展示当前知识库的数据表结构,包括所有列名,并完整呈现已导入的结构化数据。

      • 查看数据表的索引配置单击数据表右上方的查看索引。索引配置不支持修改。

编辑知识库

知识库创建后,可对其基本信息及部分配置进行修改。目前不支持通过API操作。

  1. 访问知识库列表。

  2. 单击目标知识库右侧的编辑,进入编辑知识库界面。支持修改知识库的名称、描述以及相似度阈值

更新知识库

知识库内容的任何变更都会实时同步到所有引用它的应用中。

非结构化知识库

  • 自动更新(推荐)

    使用对象存储OSS管理文档,通过函数计算FC监听文档变更事件,自动同步更新至知识库,实现知识的实时更新。详见告别手动操作,让AI知识库自动更新

  • 手动更新

    通过控制台更新:访问知识库列表,单击目标知识库右侧的查看

    • 如何新增文档:单击导入数据,勾选应用数据中的已有文档。如何上传文档至应用数据

    • 如何删除文档:找到目标文档后,单击其右侧的删除

      此操作仅将文档从知识库中移除,不会删除应用数据中的源文档。
    • 如何修改文档内容:先删除文档(旧版本),再新增文档(新版本)即可。

      注意:若保留旧版本文档可能导致过时内容被检索和召回。

    如何通过API更新知识库

结构化知识库

  • 自动更新(推荐)

    使用阿里云关系型数据库RDS或自建MySQL管理知识数据,可实现知识库的自动同步更新(延迟通常为分钟级,在请求高峰期可能为小时级),详见集成MySQL数据至知识库

  • 手动更新

    通过控制台更新:当知识库的数据源是应用数据中的数据表时,只能手动更新,流程分为两步。

    1. 步骤一:更新数据表

      访问结构化数据页签。左侧列表中选择目标数据表,单击导入数据

      • 如何插入新数据:导入类型选择增量上传。需上传一个仅包含表头和新增数据行Excel文件。

        文件必须包含与当前表结构一致的表头。您可使用界面上的下载模板功能,获取标准表头文件,直接在该文件中填入新数据。
        单张数据表上限为10000行(含表头),请提前自行分割数据确保符合要求。
      • 如何删除数据:导入类型选择覆盖上传。需上传一个包含表头及最新完整数据(已移除需删除的记录)Excel文件。

        如何获取全量数据:单击界面上的image下载XLSX格式数据。
      • 如何修改数据:导入类型选择覆盖上传。需上传一个包含表头及最新完整数据(已包含相应的修改)Excel文件。

    2. 步骤二:变更同步知识库

      返回知识库列表,单击目标知识库右侧的查看。单击数据表左上方的image图标,确认后即可将数据表的最新内容同步到知识库。

      后续每次更新后,需手动重复以上步骤(应用数据无自动同步功能)。
结构化知识库不支持通过API更新。

删除知识库

当知识库已不再被任何应用使用时,可将其永久删除。

说明

本操作不会删除您在应用数据中的源文档/数据表。

删除知识库步骤

  1. 在删除知识库之前,必须将其与所有已发布的阿里云百炼应用解除关联(否则会弹窗提示删除失败)。

    1. 前往应用管理,找到关联该知识库的应用,单击配置

    2. 在知识库列表中移除该知识库。单击界面右上角的发布,根据指引重新发布应用。

    3. 对所有关联了该知识库的已发布应用,重复以上步骤。

  2. 前往知识库,找到目标知识库,单击其右侧的删除

    警告

    删除操作不可逆,请谨慎操作。

若需通过API删除知识库,请参见知识库API指南

计费说明

知识库功能本身不收费,但在调用引用了知识库的阿里云百炼应用时,可能会产生费用。

步骤

计费情况

导入数据

不收费。

创建知识库

不收费。

测试知识库

不收费。

使用知识库

调用阿里云百炼应用时,从知识库召回的文本切片会增加大模型输入Token数量,这可能导致模型推理(调用)费用的增加。关于模型推理(调用)的费用详情,请参见计费项与定价

注意:如果仅在指定的知识库中进行检索(通过调用Retrieve接口的方式),则不产生费用。

管理与维护知识库

不收费。

API参考

请参见API目录(知识库)获取最新完整的知识库API列表及输入输出参数。具体使用方法和代码示例,请参阅知识库API指南

常见问题

构建知识库

  • Q: 应用数据中已导入知识库的文档/数据表能否删除?

    • 非结构化数据:可以删除,应用数据和知识库互为独立的数据副本。

    • 结构化数据:不可删除,否则将导致查看知识库等功能异常。

处理图片及多模态内容

  • Q: 文档含插图(需阿里云百炼应用在回答时返回),应如何处理?

    非结构化数据

    方式一(仅适用智能体应用)

    1. 创建知识库时,开启图文并茂回复

      image

    2. 在创建/编辑智能体应用时,开启知识库。点击+知识库添加知识库。

      image

    3. 接着,点击旁边的image配置。开启图文并茂回复

      image

    4. 然后,在页面右侧的输入框中,发起提问。

      例如:“简单介绍百炼X1手机。”

      实际问答效果:

      image

    方式二(适用智能体应用与工作流应用)

    1. 上传图片至公网可访问位置,并获取完整URL。推荐使用OSS,具体操作请参考将图片上传至OSS并使用其文件URL

    2. 插入完整 URL(不支持相对路径)到文档中。请注意:直接在文档中插入图片不会在回答中展示

      如果您已按说明操作,但图片仍无法显示,请检查文本切片中的完整URL,确认是否存在多余空格或特殊字符(可能被系统误解析),如有问题可直接编辑修正。

      文档正确引用图片示例

      提示词模板示例

      用户提示词和阿里云百炼应用返回的结果

      image

      # 知识库
      请记住以下材料,他们可能对回答问题有帮助。
      ${documents}
      
      # 要求
      如果有图片,请展示图片。

      image

      文档错误引用图片示例

      提示词模板示例

      用户提示词和阿里云百炼应用返回的结果

      image

      # 知识库
      请记住以下材料,他们可能对回答问题有帮助。
      ${documents}
      
      # 要求
      如果有图片,请展示图片。

      image

      解释:直接插入图片到文档中时,阿里云百炼应用不会在回答中展示图片。

    结构化数据
    1. 上传图片至公网可访问位置,并获取完整URL。推荐使用OSS,具体操作请参考将图片上传至OSS并使用其文件URL

    2. 在新建数据表时,用link类型字段存储图片的完整URL(不支持相对路径;多张图片关联一条记录时,为每张图片分别建立字段)。

      注意:数据表创建后,无法再新增或修改字段类型为link

      image

    3. 创建知识库时,在link类型字段旁的下拉列表中选择图片

      注意:知识库创建后,无法再修改link字段处理方式。

      image

    4. 在创建/编辑智能体应用(以智能体应用为例,工作流应用同理)时,开启知识库(如下图)。点击+知识库添加知识库。更改提示词模板为:

      # 知识库
      请记住以下材料,他们可能对回答问题有帮助。
      ${documents}
      
      # 要求
      如果有图片,请展示图片。

      image

    5. 接下来,在页面右侧的输入框中,发起提问。

      例如:“简单介绍百炼X1手机。”

      正确引用图片示例

      提示词模板示例

      用户提示词和阿里云百炼应用返回的结果

      image

      # 知识库
      请记住以下材料,他们可能对回答问题有帮助。
      ${documents}
      
      # 要求
      如果有图片,请展示图片。

      image

权限与安全

  • Q: 知识库是否私有?其他组织或用户能否访问?

    知识库仅限其所在业务空间内的成员访问/操作,不对外公开。

  • Q: 阿里云是否会使用我账号下的知识库回答其他用户的问题?

    不会。

迁移与导出

  • Q: 如何导出知识库到本地?

    不支持。

更多

  • Q: 长文本大模型(Long-Context LLM)和RAG怎么选?

    长文本大模型(如Qwen-Long)和RAG均能通过喂入外部信息来优化输出,但它们各有所长。长文本大模型会全面审视输入文本的每个Token,因此通常在深度理解和总结长篇文本方面表现更佳,但这同时也带来了更高的计算和推理成本;RAG则通过快速跨源检索,只专注于最相关的Token,因此更适合那些无需全局理解,只靠整合最新信息片段即可迅速回答的事实性问题场景。

场景教程

尝试使用阿里云百炼快速构建一个在线知识库问答应用,以便全天候(7 × 24)响应用户咨询,提升用户体验、增强业务竞争力:

RAG效果优化

如果您在使用阿里云百炼应用的 RAG 功能时遇到知识召回不完整或内容不准确的问题,可参考知识库效果优化