企业私有知识问答系统常面临回答准确性不足的挑战。通过Dify集成阿里云表格存储(Tablestore)向量数据库构建RAG(检索增强生成)应用,可实现高精度知识检索和智能问答能力。
方案介绍
Tablestore作为高性能向量数据库,提供毫秒级查询响应,支持向量检索与全文检索混合的检索模式,单表可存储百亿级向量数据。Dify负责应用编排和用户交互界面,大幅简化RAG应用的构建和部署流程。
RAG应用通过以下核心流程实现智能问答:
知识向量化:Dify将企业文档自动切分为知识片段并转换为向量表示,统一存储到Tablestore向量数据库中。
相似度检索:当用户提问时,系统在Tablestore中快速检索与问题最相关的知识片段。
增强生成:将检索到的相关知识与用户问题组合,输入大语言模型生成准确且有依据的回答。
准备部署环境
创建Tablestore实例
Tablestore将作为RAG应用的向量数据库,用于存储文档的向量化表示并提供高效的相似度检索能力。
登录表格存储控制台,单击创建实例,选择VCU模式(原预留模式),单击前往开通。
按照下方配置列表选择实例参数,其余配置项可保持默认设置。
地域:选择实例所在地域,如
华东1(杭州)
。预留VCU:修改为0,表示不为实例预留计算资源。
弹性能力:选择启用。
存储类型:选择高性能。
依次单击
,完成实例创建。
创建ECS实例
ECS实例将作为Dify应用的运行环境,需要具备足够的计算资源来支持Docker容器集群的运行。
按照下方配置列表创建ECS实例,其余配置项可保持默认设置。
付费类型:选择按量付费。
地域:选择实例所在地域,由于网络原因,本文使用的是中国香港地域。
网络及可用区:选择默认的专有网络和可用区。
实例:单击全部规格,搜索并选择
ecs.e-c1m2.large
。说明如果实例规格已售罄,请选择其它实例规格。
镜像:选择公共镜像的Alibaba Cloud Linux(Alibaba Cloud Linux 3.2104 LTS 64位)。
系统盘:设置ESSD Entry的容量为 40 GiB。
公网IP:勾选分配公网 IPv4 地址。
带宽计费模式:选择按使用流量,以节约成本。
带宽峰值:选择5 Mbps或以上。
安全组:选择已有安全组。
登录凭证:选择自定义密码,登录名选择root,登录密码请自行设置并妥善保存。
部署和访问Dify
步骤一:安装Docker环境
Dify采用容器化部署方式,需要先在ECS实例上安装Docker和Docker Compose来支持多服务容器编排。
安装dnf-plugins-core插件。
dnf -y install dnf-plugins-core
配置Docker官方仓库源。
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker 引擎和 Docker Compose 插件。
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动并设置Docker服务开机自启。
systemctl enable --now docker
步骤二:部署Dify服务
接下来将获取Dify源码并配置环境变量,特别是配置Tablestore作为向量数据库的连接参数。
安装Git版本控制工具。
yum -y install git
克隆Dify官方源码仓库。
git clone https://github.com/langgenius/dify.git
进入Docker部署目录。
cd dify/docker
复制环境配置文件模板。
cp .env.example .env
编辑环境配置文件。
vi .env
按照以下配置项进行修改:
配置项
说明
VECTOR_STORE
向量数据库类型,设置为
tablestore
。TABLESTORE_ENDPOINT
重要新创建的表格存储实例默认关闭公网访问,如需使用公网访问地址,请前往表格存储控制台实例管理的网络管理页签,在允许网络类型设置中勾选公网,并单击设置保存配置。
前往表格存储控制台,在实例列表中单击实例别名进入实例管理页面,复制实例名称和实例访问地址。根据部署情况选择访问地址:
ECS与Tablestore在同一地域:可选择公网地址或者VPC地址。
ECS与Tablestore不在同一地域:必须使用公网地址。
TABLESTORE_INSTANCE_NAME
TABLESTORE_ACCESS_KEY_ID
前往AccessKey管理页面创建云账号AccessKey,获取并保存ACCESS_KEY_ID和ACCESS_KEY_SECRET。
TABLESTORE_ACCESS_KEY_SECRET
启动Dify容器集群。
docker compose up -d
启动成功后,将看到如下输出信息。
✔ Network docker_default Created 0.1s ✔ Network docker_ssrf_proxy_network Created 0.1s ✔ Container docker-sandbox-1 Started 0.8s ✔ Container docker-redis-1 Started 1.0s ✔ Container docker-ssrf_proxy-1 Started 1.3s ✔ Container docker-web-1 Started 1.0s ✔ Container docker-db-1 Started 0.9s ✔ Container docker-plugin_daemon-1 Started 2.4s ✔ Container docker-api-1 Started 2.4s ✔ Container docker-worker-1 Started 2.3s ✔ Container docker-nginx-1 Started 3.8s
步骤三:配置安全组访问规则
为了能够通过公网访问Dify管理界面,需要在ECS安全组中开放相应的端口访问权限。
前往ECS控制台,在目标实例中单击 。
配置安全组规则:选择授权策略为允许,协议类型为Web HTTP 流量访问,在访问目的(本实例)中输入Dify服务端口(默认80端口)并添加,如下图所示。
单击确定,完成安全组访问规则配置。
步骤四:访问Dify管理界面
通过浏览器访问 http://server_ip
,其中 server_ip
为ECS实例的公网IP地址。首次访问将自动跳转到初始化页面,按照提示设置管理员账户,设置完成后系统将自动完成登录。
构建RAG应用并验证效果
步骤一:配置模型服务和API-KEY
RAG应用需要大语言模型来理解问题和生成回答,同时需要Embedding模型将文本转换为向量表示。
安装模型供应商并配置API Key。
在Dify首页单击用户头像,在下拉菜单中单击设置。
在设置页面单击模型供应商,选择通义千问,单击安装。
安装完成后,在待配置的模型列表中单击设置。
根据页面提示获取阿里云百炼的API Key并完成配置,然后单击保存。
配置系统默认模型。
在模型供应商页面单击模型列表右侧的系统模型设置。
根据以下推荐配置设置各类模型,也可根据实际需求选择其他模型。
系统推理模型:选择qwen3-max-preview。
Embedding模型:选择text-embedding-v4。
Rerank模型:选择gte-rerank-v2。
语音转文本模型:选择paraformer-realtime-v2。
文本转语音模型:选择tts-1。
模型配置完成后,单击ESC返回Dify首页。
步骤二:创建知识库
知识库是RAG应用的核心组件,用于存储企业文档并提供智能检索能力。文档将自动切分、向量化并存储到Tablestore中。
在Dify首页单击知识库,然后单击创建知识库。
单击创建一个空知识库。在弹出的创建空知识库对话框中,输入知识库名称(例如Tablestore),然后单击创建,完成知识库创建。
在知识库详情页面单击添加文件,选择示例文件百炼系列手机产品介绍.docx进行上传,单击下一步进入文本分段与清洗设置。
配置知识处理参数:选择索引方式为高质量,检索设置为混合检索。参数配置完成后单击保存并处理,可单击前往文档查看上传文档的处理状态。
可以前往表格存储控制台查看已保存到向量数据库的知识数据。
步骤三:创建智能问答助手并验证RAG效果
最后创建一个聊天助手应用,通过对比加入知识库前后的回答效果,验证RAG应用的检索增强能力。
在Dify首页单击工作室,然后单击创建空白应用。
选择新手适用模板,然后选择聊天助手应用类型,输入应用名称后单击创建。
直接向聊天助手提问测试,例如询问
百炼有哪些手机型号
,此时助手的回答可能不够准确或详细。在应用编排页面单击知识库右侧的添加,选择之前创建的知识库,然后根据页面提示单击重新开始重置调试区域。
再次向聊天助手提出相同问题。结合知识库中的文档内容,助手现在能够提供准确且详细的回答。
应用于生产环境
最佳实践
为确保Dify应用在生产环境中的高可用性,建议使用ACK进行部署。具体实施方案请参见解决方案快速部署 Dify,高效搭建 AI 应用并选择生产环境部署(使用 ACK 部署)。
风险防范
成本优化
基于业务流量峰值特征,为Tablestore实例合理配置预留VCU资源以优化成本支出,同时开启弹性能力以应对突发流量增长,详情请参见VCU计费模式。
资源清理
体验完成后,如果不计划进行生产环境部署,建议及时清理相关云资源以避免产生不必要的费用。
释放 ECS 实例
前往ECS控制台,找到目标实例,单击 ,按照页面指引完成实例释放。
删除 Tablestore 数据表
前往表格存储控制台,在实例列表中单击目标实例别名, 在实例管理页面先单击目标数据表右侧的索引管理,在索引管理页面删除多元索引,然后返回数据表列表,单击目标数据表右侧的 ,删除数据表。
释放 Tablestore 实例
当预留VCU设置为0且实例内无数据时,不会产生费用。如需彻底清理资源,可按以下步骤释放Tablestore实例。
前往资源退订页面,选择商品名称为表格存储标准实例,单击搜索。
在目标订单的操作列单击退订资源,仔细阅读退订规则并确认后单击立即退订,选择退订原因(如业务变化不再需要)后单击确定后完成资源退订。如出现身份验证提示,请按照页面指引完成验证。