知识库索引管理

在大模型应用开发领域,RAG(Retrieval-Augmented Generation,检索增强生成)是当前较流行的应用方向。其中知识库索引作为一个关键组件,用于高效地组织和检索大量知识库中的相关信息,以辅助生成更准确和相关的回答。本文为您介绍LangStudio知识库索引的配置方法。

功能介绍

通过知识库索引,大语言模型可以获得更多领域相关的知识,从而提高回答的准确性和相关性。您可以通过预置的工作流,完成OSS数据源知识库索引的创建和同步。

当创建新的知识库索引时,系统会自动提交一个PAI工作流任务,工作流节点均通过DLC任务来执行,用于对OSS数据源中的文件进行预处理、分块和Embedding转换,入库到向量数据库之后在PAI注册一个知识库索引,以便在应用流开发中实现高效的信息检索。

通过知识库索引的同步功能,您可以基于OSS数据源,实现知识库的增量更新。在应用流开发中,您可以基于预置的知识库查询工具,方便地将知识库查询功能集成到您的应用中。

前提条件

请确保已创建知识库索引所需的连接。具体操作,请参见连接管理

新建知识库索引

  1. 登录PAI控制台,在右侧选择目标工作空间后,单击进入LangStudio,切换到知识库索引页签,然后单击新建知识库索引image

  2. 新建知识库索引页面,配置以下关键参数,然后单击确定image

    参数

    描述

    基础配置

    知识库索引名称

    根据控制台提示自定义知识库索引名称。相应工作流任务执行成功后,系统会自动生成一个同名的数据集。

    知识库数据集

    知识库数据来源,仅支持挂载对象存储OSS路径。

    输出存储路径

    用于保存文档解析生成的中间结果和索引相关信息,仅支持挂载对象存储OSS路径。最终输出内容与所选向量数据库类型相关。

    文档解析分块配置

    文本分块大小

    将知识库索引文件基于固定大小进行切分,默认为1024(字符)。

    文本分块重叠大小

    为确保检索信息连贯性,相邻两个分块间存在的重叠大小。默认为20(字符)。

    Embedding模型和数据库

    Embedding类型

    支持配置以下两种连接类型:

    • 通用Embedding模型:已在PAI-EAS平台部署好的大语言模型服务连接。

    • 百炼DashScope连接:百炼大模型服务连接。

    Embedding连接

    选择Embedding类型后,下拉列表中会显示已创建的对应类型的连接供您选择。您也可以单击新建连接,创建新的连接。

    Embedding模型

    填写创建知识库索引时使用的具体模型:

    • 使用快速开始 > Model Gallery搭建的通用Embedding模型时,默认填充为 default,表示调用对应模型。

    • 使用百炼DashScopeEmbedding模型时,您需要在下拉框中选择可调用的Embedding模型。

    向量数据库类型

    支持使用以下两种向量数据库类型:

    • FAISS:选择该类型时,知识库索引的配置文件及最终结果将存放于输出存储路径中。

    • 向量数据库Milvus:选择该类型时,您需要配置以下参数:

      • 向量数据库连接:选择已创建的Milvus数据库连接。您也可以在下拉列表中单击新建连接进行创建。

      • 数据表名

    计算资源

    执行工作流节点任务所需的计算资源。支持使用通用计算资源配额或公共资源。

    专有网络配置

    专有网络配置

    建立知识库索引时,需要依赖模型服务、数据库资源,因此需添加VPC配置。该VPC应与连接资源的VPC保持一致,或确保网络可连通。例如,使用百炼DashScope连接时需要公网网络环境,你需要为该VPC开通访问公网的权限,详情请参见配置公网连接

    安全组

    交换机

  3. 查看工作流任务。

    知识库索引创建成功后,系统将自动生成工作流任务。您可以按以下两种方法查看:

    • 方法一:在弹出的提示对话框中单击确定。系统将跳转至PAI工作流的任务详情页面。image

    • 方法二:登录PAI控制台,选择目标地域和工作空间后,单击进入任务。切换到工作流任务页面,并单击任务名称,查看已创建的工作流任务详情。image

    工作流任务包括以下两个节点,每个节点会创建一个DLC Job来执行任务。单击节点,您可以查看具体任务运行详情,包括运行信息、任务日志和输出结果。您还可以通过日志中的Job URL来查看DLC任务详情。

    • rag-parse-chunk:对知识库文档进行预处理和分块,将分块后的文档数据传递至下一个节点。

    • rag-create-index:对预处理后的文档数据进行Embedding处理,生成配置文件并注册至向量数据库。

    当工作流任务执行成功后,系统会自动将OSS上的输出存储路径,注册为PAIAI资产中的数据集。您可以在数据集列表中查看资产详情。image

更新知识库索引

您可以在知识库索引页面,单击目标知识库索引操作列中的更新,来修改已创建的知识库索引,以确保知识库的实时性和准确性。

说明

在进行任何更新操作前,请先备份当前的知识库数据和索引,以防在更新过程中出现意外问题导致数据丢失。

image

支持调整的参数包括基础配置下的知识库数据集输出存储路径。默认情况下,输出存储路径会填充为新建知识库索引时配置的路径。image

完成更新后,系统会自动创建工作流任务。您可以在弹出的提示对话框中单击确定,在工作流任务详情页面查看节点执行状态。

更新知识库索引的工作流任务会去比对存储在向量数据库中的文档和新挂载数据源中的文档,根据文件的新增、修改和删除情况,更新知识库中存储的向量和文档。

使用知识库索引

您可以在应用流开发过程中使用已成功创建的知识库索引,进行信息检索。image在应用流开发界面,选择更多工具 > Index Lookup,创建索引查找工具,详情请参见应用流开发。该工具用于根据给定的查询字符串搜索已注册的知识库,并从中获取前top_k条匹配的数据。其中:

  • registered_index是指定的已注册知识库索引。

  • 返回结果为List[Dict],其中DictKeyscore、content、idmetadata,分别对应文档分片与输入查询的相似度得分、内容、id和元数据。返回结果包含得分最高的top_k条记录,内容示例如下:

    [
    
      {
    
        "score": 0.8057173490524292,
    
        "content": "受疫情带来的不确定性影响,xx银行根据经济走势及中国或中国内地环境预判,主动\n加大了贷款和垫款、非信贷资产减值损失的计提力度,加大\n不良资产核销处置力度,提升拨备覆盖率,2020 年实现净利\n289.28亿元,同比增长 2.6%,盈利能力逐步改善。\n(人民币百万元) 2020年 2019年 变动(%)\n经营成果与盈利\n营业收入 153,542 137,958 11.3\n减值损失前营业利润 107,327 95,816 12.0\n净利润 28,928 28,195 2.6\n成本收入比(1)(%) 29.11 29.61下降 0.50个\n百分点\n平均总资产收益率 (%) 0.69 0.77下降 0.08个\n百分点\n加权平均净资产收益率 (%) 9.58 11.30下降 1.72个\n百分点\n净息差(2)(%) 2.53 2.62下降 0.09个\n百分点\n注: (1) 成本收入比 =业务及管理费/营业收入。",
    
        "id": "49f04c4cb1d48cbad130647bd0d75f***1cf07c4aeb7a5d9a1f3bda950a6b86e",
    
        "metadata": {
    
          "page_label": "40",
    
          "file_name": "2021-02-04_中国xx保险集团股份有限公司_xx_中国xx_2020年__年度报告.pdf",
    
          "file_path": "oss://my-bucket-name/datasets/chatglm-fintech/2021-02-04__中国xx保险集团股份有限公司__601318__中国xx__2020年__年度报告.pdf",
    
          "file_type": "application/pdf",
    
          "file_size": 7982999,
    
          "creation_date": "2024-10-10",
    
          "last_modified_date": "2024-10-10"
    
        }
    
      },
    
      {
    
        "score": 0.7708036303520203,
    
        "content": "72亿元,同比增长 5.2%。\n2020年\n(人民币百万元)寿险及\n健康险业务财产保险\n业务 银行业务 信托业务 证券业务其他资产\n管理业务 科技业务其他业务\n及合并抵消 集团合并\n归属于母公司股东的净利润 95,018 16,083 16,766 2,476 2,959 5,737 7,936 (3,876) 143,099\n少数股东损益 1,054 76 12,162 3 143 974 1,567 281 16,260\n净利润 (A) 96,072 16,159 28,928 2,479 3,102 6,711 9,503 (3,595) 159,359\n剔除项目 :\n 短期投资波动(1)(B) 10,308 – – – – – – – 10,308\n 折现率变动影响 (C) (7,902) – – – – – – – (7,902)\n 管 理层认为不属于  \n日常营运收支而剔除的  \n一次性重大项目及其他 (D) – – – – – – 1,282 – 1,282\n营运利润 (E=A-B-C-D) 93,666 16,159 28,928 2,479 3,102 6,711 8,221 (3,595) 155,670\n归属于母公司股东的营运利润 92,672 16,",
    
        "id": "8066c16048bd722d030a85ee8b1***36d5f31624b28f1c0c15943855c5ae5c9f",
    
        "metadata": {
    
          "page_label": "19",
    
          "file_name": "2021-02-04_中国xx保险集团股份有限公司_xxx_中国xx__2020年__年度报告.pdf",
    
          "file_path": "oss://my-bucket-name/datasets/chatglm-fintech/2021-02-04__中国xx保险集团股份有限公司__601318__中国xx__2020年__年度报告.pdf",
    
          "file_type": "application/pdf",
    
          "file_size": 7982999,
    
          "creation_date": "2024-10-10",
    
          "last_modified_date": "2024-10-10"
    
        }
    
      }
    
    ]