首页 向量检索与通义千问搭建专属问答服务

向量检索与通义千问搭建专属问答服务

更新时间: 2025-01-09 14:37:27

手动部署

30

https://www.aliyun.com/solution/tech-solution/dashvector

方案概览

大语言模型(LLM)作为自然语言处理领域的核心技术,具有丰富的自然语言处理能力。但其训练语料库具有一定的局限性,一般由普适知识、常识性知识,如维基百科、新闻、小说,和各种领域的专业知识组成。导致 LLM 在处理特定领域的知识表示和应用时存在一定的局限性,特别对于垂直领域内,或者企业内部等私域专属知识。

实现专属领域的知识问答的关键,在于如何让LLM能够理解并获取存在于其训练知识范围外的特定领域知识。同时可以通过特定Prompt构造,提示LLM在回答特定领域问题的时候,理解意图并根据注入的领域知识来做出回答。在通常情况下,用户的提问是完整的句子,而不像搜索引擎只输入几个关键字。这种情况下,直接使用关键字与企业知识库进行匹配的效果往往不太理想,同时长句本身还涉及分词、权重等处理。相比之下,倘若我们把提问的文本,和知识库的内容,都先转化为高质量向量,再通过向量检索将匹配过程转化为语义搜索,那么提取相关知识点就会变得简单而高效。

接下来我们将基于中文突发事件语料库(CEC Corpus)演示关于突发事件新闻报道的知识问答。

方案架构

本方案主要分为 3 个阶段:

  1. 本地知识库的向量化。通过文本向量模型将其转化为高质量低维度的向量数据,再写入DashVector 向量检索服务。这里数据的向量化我们采用了百炼模型服务上的 Embedding API 实现。

  2. 相关知识点的提取。将提问文本向量化后,通过 DashVector 提取相关知识点的原文。

  3. 构造 Prompt 进行提问。将相关知识点作为“限定上下文+提问” 一起作为 prompt 询问通义千问。

image

本方案的技术架构包括以下基础设施和云服务:

  • 1 个专有网络 VPC :1 个专有网络,提供云上私有网络。

  • 1 台交换机:在 VPC 内部划分子网。

  • 1 个安全组:提供网络安全访问。

  • 1 台云服务器 ECS :部署示例应用。

  • 1 个向量检索服务:DashVector 向量检索服务。

部署准备

5

准备账号

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值。本方案的云资源支持按量付费,且默认设置均采用按量付费引导操作。如果确定任何一个云资源采用按量付费方式部署,账户余额必须大于等于 100 元。

开通百炼模型服务

  1. 登录阿里云百炼大模型服务平台

    如果顶部显示如下消息,您需要开通百炼的模型服务,以获得免费额度。

    image

  2. 鼠标悬停于页面右上角的image图标上,在下拉菜单中单击API-KEY

    image

  3. 在左侧导航栏,选择全部API-KEY我的API-KEY,然后创建或查看API Key。

    说明
    • 仅主账号拥有查看全部API-KEY的权限。主账号可以获取所有子账号的API-KEY,子账号仅能获取自己的API-KEY。

    • 请不要将API Key以任何方式公开,避免因未经授权的使用造成安全风险或资金损失。

开通 DashVector 向量检索服务

  1. 开通向量检索服务,获取 DashVector API-KEY ,并创建 Cluster 。

    1. 登录向量检索服务控制台开通 DashVector 向量检索服务

    2. 前往 DashVector API-Key 管理,点击创建新的 API-KEY ,并复制保存。

    3. 切换到左侧 Cluster 列表,单击创建免费 Cluster ,创建一个免费的向量检索服务Cluster 。(体验本方案建议采用免费 Cluster ,创建后 30 个自然日到期会自动释放,删除所有数据。如有重要业务数据,请及时转移到付费 Cluster 或者将免费试用 Cluster 升配为付费 Cluster。)

  2. 单击 Cluster 列表右侧操作栏中的详情,获取 Cluster 的访问端口 Endpoint

部署资源

15

创建专有网络和交换机

  1. 登录专有网络管理控制台

  2. 在顶部菜单栏,选择华东 1(杭州)地域。

  3. 在左侧导航栏,单击专有网络

  4. 专有网络页面,单击创建专有网络

  5. 创建专有网络页面,配置1个专有网络和1台交换机。

    项目

    说明

    示例值

    VPC 名称

    建议您在部署过程中新建一个 VPC 作为本方案的专有网络。部署过程中填写 VPC 名称即可创建对应名称的 VPC 。

    长度为 2~128 个字符,以英文大小字母或中文开头,可包含数字、下划线(_)和连字符(-)。

    VPC_HZ

    IPv4 网段

    在创建 VPC 时,您必须按照无类域间路由块(CIDR block)的格式为您的专有网络划分私网网段。阿里云 VPC 支持的网段信息请参见什么是专有网络

    在网络规划时可以按照管理网段-开发网段-测试网段-生产网段等规则做好规划。网段一旦投入使用,调整过程复杂,因此规划十分重要。

    192.168.0.0/16

    交换机

    建议您在部署过程中在新建的 VPC 内创建虚拟交换机。在部署过程中填写交换机名称即可创建对应名称的虚拟交换机。

    长度为 2~128个 字符,以英文大小写字母或中文开头,可包含数字、下划线(_)和连字符(-)。

    app-v-switch

    可用区

    建议选择排序靠后的,一般此类可用区较新。新可用区资源更充沛,新规格也会在新的可用区优先上线。

    可用区 J

    IPv4 网段

    每台虚拟交换机需要一个 IPv4 网段

    app-v-switch:192.168.1.0/24

创建安全组和云服务器 ECS

创建安全组

  1. 登录 ECS 管理控制台

  2. 在左侧导航栏,选择网络与安全>安全组

  3. 在顶部菜单栏,选择华东 1(杭州)地域。

  4. 安全组页面,单击创建安全组

  5. 创建安全组页面,创建1个安全组。

    项目

    说明

    示例值

    名称

    设置安全组的名称。

    sg-dashvector

    网络

    选择之前规划的专有网络 VPC 。

    VPC_HZ

    安全组类型

    本方案选择普通安全组,具体差异您可以参考普通安全组与企业级安全组

    普通安全组

    入方向

    入方向保持默认的端口号,确保80端口开启。

    80

创建云服务器 ECS

  1. 在左侧导航栏,选择实例与镜像>实例

  2. 实例页面,单击创建实例

  3. 在云服务器 ECS 购买页面,创建 1 台云服务器 ECS ,可用区(与专有网络创建交换机时所使用的可用区一致,本示例为可用区J)。

    项目

    说明

    示例值

    实例名称

    实例的名称。

    dashvector

    网络

    VPC 专有网络

    选择上一步创建的专有网络

    可用区及交换机

    使用之前创建的交换机所对应的可用区。

    可用区 J app-v-switch

    付费类型

    按量付费

    实例规格

    ECS 的实例规格及内核、vCPU 数量。关于 ECS 选型的最佳实践请参见实例规格选型指导

    ecs.e-c1m2.large

    镜像

    ECS 的“装机盘”,为 ECS 实例提供操作系统、预装软件等。

    Alibaba Cloud Linux

    镜像版本

    镜像的版本。

    Alibaba Cloud Linux 3.2104 LTS 64位

    系统盘类型

    硬盘类型。

    ESSD 云盘

    系统盘容量

    硬盘容量。

    40 GiB

    公网 IP

    用于在云服务器 ECS 对外访问公网资源。

    选中分配公网 IPv4 地址

    带宽计费方式

    由于本方案为解决方案示例,因此选择按使用流量,以节省流量成本。

    按使用流量(CDT)

    带宽值

    本方案以 5 Mbps为例。

    5 Mbps

    安全组

    使用之前创建的安全组。

    sg-dashvector

    管理设置

    使用自定义密码,方便后续登录服务器安装相关软件。

    自定义密码

应用部署

5

  1. 登录 ECS 管理控制台

  2. 在左侧导航栏,选择实例与镜像>实例

  3. 在顶部菜单栏,选择华东 1(杭州)地域。

  4. 部署示例应用程序。

    1. 实例页面,找到前面步骤中创建的 ECS 实例,在其右侧操作列,单击远程连接

    2. 远程连接对话框的通过 Workbench 远程连接区域,单击立即登录,然后根据页面提示登录。

    3. 执行以下命令部署本示例应用程序。

      说明

      请替换以下BAILIAN_API_KEYDASHVECTOR_API_KEYDASHVECTOR_CLUSTER_ENDPOINT环境变量为真实的值。

      cat << EOF >> ~/.bash_profile
      export BAILIAN_API_KEY="上一步骤获取的百炼模型服务API-KEY"
      export DASHVECTOR_API_KEY="上一步骤获取的DashVector API-KEY"
      export DASHVECTOR_CLUSTER_ENDPOINT="上一步骤获取的DashVector Cluster Endpoint"
      EOF
      
      source ~/.bash_profile
      
      curl -fsSL https://help-static-aliyun-doc.aliyuncs.com/install-script/dashvector/install.sh|bash
    4. 当出现Installation completed!时说明应用部署完成。

验证及清理

5

方案验证

  1. 在浏览器中输入http://<ECS公网IP>/,即可用界面化的方式体验问答服务。

  2. 输入突发事件新闻报道海南安定追尾事故,发生在哪里?原因是什么?人员伤亡情况如何?

    small-clip.gif

清理资源

在本方案中,您创建了 1 台云服务器 ECS 实例、1 台交换机、1 个专有网络 VPC 、1 个安全组、DashVector 向量检索服务。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用:

  1. 释放 1 台云服务器 ECS 实例:

    登录 ECS 控制台,在实例页面,找到目标实例,然后在操作列选择216更多-竖向..png>释放设置,根据界面提示释放实例。

  2. 释放 1 台交换机:

    登录专有网络控制台,在交换机页面,找到目标交换机,然后在操作列单击删除,按照界面提示释放实例。

  3. 释放 1 个专有网络 VPC :

    登录专有网络控制台,在专有网络页面,找到目标 VPC ,然后在操作列单击删除,按照界面提示释放实例。

  4. 释放 1 个安全组。

    登录 ECS 控制台,在网络与安全 > 安全组页面,找到目标安全组,然后在操作列单击删除,根据界面提示释放实例。

  5. 登录向量检索服务 DashVector 控制台,在左侧 Cluster 列表中,找到您创建的 Cluster ,单击右侧操作列的释放

一键部署

20

https://www.aliyun.com/solution/tech-solution/dashvector

方案概览

大语言模型(LLM)作为自然语言处理领域的核心技术,具有丰富的自然语言处理能力。但其训练语料库具有一定的局限性,一般由普适知识、常识性知识,如维基百科、新闻、小说,和各种领域的专业知识组成。导致 LLM 在处理特定领域的知识表示和应用时存在一定的局限性,特别对于垂直领域内,或者企业内部等私域专属知识。

实现专属领域的知识问答的关键,在于如何让LLM能够理解并获取存在于其训练知识范围外的特定领域知识。同时可以通过特定Prompt构造,提示LLM在回答特定领域问题的时候,理解意图并根据注入的领域知识来做出回答。在通常情况下,用户的提问是完整的句子,而不像搜索引擎只输入几个关键字。这种情况下,直接使用关键字与企业知识库进行匹配的效果往往不太理想,同时长句本身还涉及分词、权重等处理。相比之下,倘若我们把提问的文本,和知识库的内容,都先转化为高质量向量,再通过向量检索将匹配过程转化为语义搜索,那么提取相关知识点就会变得简单而高效。

接下来我们将基于中文突发事件语料库(CEC Corpus)演示关于突发事件新闻报道的知识问答。

方案架构

本方案主要分为 3 个阶段:

  1. 本地知识库的向量化。通过文本向量模型将其转化为高质量低维度的向量数据,再写入DashVector 向量检索服务。这里数据的向量化我们采用了百炼模型服务上的 Embedding API 实现。

  2. 相关知识点的提取。将提问文本向量化后,通过 DashVector 提取相关知识点的原文。

  3. 构造 Prompt 进行提问。将相关知识点作为“限定上下文+提问” 一起作为 prompt 询问通义千问。

image

本方案的技术架构包括以下基础设施和云服务:

  • 1 个专有网络 VPC :1 个专有网络,提供云上私有网络。

  • 1 台交换机:在 VPC 内部划分子网。

  • 1 个安全组:提供网络安全访问。

  • 1 台云服务器 ECS :部署示例应用。

  • 1 个向量检索服务:DashVector 向量检索服务。

部署准备

5

准备账号

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值。本方案的云资源支持按量付费,且默认设置均采用按量付费引导操作。如果确定任何一个云资源采用按量付费方式部署,账户余额必须大于等于 100 元。

开通百炼模型服务

  1. 登录阿里云百炼大模型服务平台

    如果顶部显示如下消息,您需要开通百炼的模型服务,以获得免费额度。

    image

  2. 鼠标悬停于页面右上角的image图标上,在下拉菜单中单击API-KEY

    image

  3. 在左侧导航栏,选择全部API-KEY我的API-KEY,然后创建或查看API Key。

    说明
    • 仅主账号拥有查看全部API-KEY的权限。主账号可以获取所有子账号的API-KEY,子账号仅能获取自己的API-KEY。

    • 请不要将API Key以任何方式公开,避免因未经授权的使用造成安全风险或资金损失。

开通 DashVector 向量检索服务

  1. 开通向量检索服务,获取 DashVector API-KEY ,并创建 Cluster 。

    1. 登录向量检索服务控制台开通 DashVector 向量检索服务

    2. 前往 DashVector API-Key 管理,点击创建新的 API-KEY ,并复制保存。

    3. 切换到左侧 Cluster 列表,单击创建免费 Cluster ,创建一个免费的向量检索服务Cluster 。(体验本方案建议采用免费 Cluster ,创建后 30 个自然日到期会自动释放,删除所有数据。如有重要业务数据,请及时转移到付费 Cluster 或者将免费试用 Cluster 升配为付费 Cluster。)

  2. 单击 Cluster 列表右侧操作栏中的详情,获取 Cluster 的访问端口 Endpoint

一键部署

10

单击一键部署前往 ROS 控制台,填入您在部署准备中获取的百炼 API-KEY DashVector API-KEY 。本模板会自动创建一个免费的 DashVector 集群。同时,还会额外创建一个抢占式 ECS 实例,用于前端效果展示。按照本文选择规格,约花费 0.471 元/小时。具体产生的费用根据您选择的 ECS 规格而不同,以控制台显示为准。

image

开始创建后,等待约 5 分钟左右,显示创建成功。

image

完成及清理

5

方案验证

  1. 在创建成功的资源栈单击输出页签,获取到 WebUrl

    image

  2. 将 WebUrl 复制到浏览器,即可用界面化的方式体验问答服务。

  3. 输入突发事件新闻报道海南安定追尾事故,发生在哪里?原因是什么?人员伤亡情况如何?

    small-clip.gif

清理资源

在本方案中,您创建了 1 个云服务器 ECS 实例、1 个免费的 DashVectorCluster 。如果您无需继续使用,请尽快删除资源,避免继续产生费用:

  1. 登录 ROS 控制台

  2. 在左侧导航栏,选择资源栈

  3. 资源栈页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧操作列,单击删除

  4. 删除资源栈对话框,选择删除方式释放资源,然后单击确定,根据提示完成资源释放。