背景信息
Dify 是一款面向开发者与企业的 AI 应用开发平台,致力于简化大语言模型(LLM)集成与开发流程,助力用户高效构建智能化应用。腾讯云向量数据库作为其官方支持的向量数据库组件,凭借高效的 向量检索与稀疏向量 能力,为 Dify 平台上的 RAG(检索增强生成)应用提供底层支持,显著提升语义理解与检索精度。用户可将文档、图表等数据向量化存储,结合 Dify 的 LLM 交互逻辑,直接搭建智能知识库,实现精准问答与知识检索。 准备工作
1. 选型并购买向量数据库实例,具体操作,请参见 购买实例。 2. 在向量数据库中,创建数据库。具体操作,请参见 create。 3. 客户端运行环境准备。
|
地域与网络环境 | 使用腾讯云外网访问,需手动配置白名单,开通外网功能。具体操作,请参见 开启外网访问。 使用腾讯云内网方式访问,确保购买的 CVM 所处地域与向量数据库为同地域,且 VPC 和安全组策略能正常连通向量数据库实例。 |
客户端 | 使用腾讯云外网方式,可使用本地客户端操作环境即可。 使用腾讯云内网方式,推荐选择 云服务器 CVM,如 SA3.LARGE8、SA3.2XLARGE16等规格。 |
快速搭建
1. 登录客户端环境,进入克隆的 dify 目录的 docker 文件。
2. 执行cp .env.example .env
拷贝一份配置文件。
3. 使用 vim .env 打开配置文件,将配置文件中的 VECTOR_STORE 修改为 tencent,并配置向量数据库信息。
|
TENCENT_VECTOR_DB_URL | 向量数据库实例的内网地址或外网地址。建议使用内网方式。 | |
TENCENT_VECTOR_DB_API_KEY | 向量数据库实例 API 密钥,用于进行身份认证。 | |
TENCENT_VECTOR_DB_TIMEOUT | 连接超时时间。 | - |
TENCENT_VECTOR_DB_USERNAME | 指定访问向量数据库的用户名。 | |
TENCENT_VECTOR_DB_DATABASE | 指定已准备的向量数据库名。 | Database 命名要求如下: 只能使用英文字母,数字,下划线_、中划线-,并以英文字母开头。 长度要求:[1,128]。 |
TENCENT_VECTOR_DB_SHARD | 指定创建集合所需的分片数量。 | 取值类型:uint64。 取值范围:[1,100]。例如:5。 配置建议:在搜索时,全部分片是并发执行的,分片数量越多,平均耗时越低,但是过多的分片会带来额外开销而影响性能。 单分片数据量建议控制在300万以内,例如500万向量,可设置2个分片。 如果数据量小于300万,建议使用1分片。系统对1分片有特定优化,可显著提升性能。 |
TENCENT_VECTOR_DB_REPLICAS | 指定创建集合的副本数量。 | 取值类型:uint64。 取值范围如下所示。搜索请求量越高的索引,建议设置越多的副本数,避免负载不均衡。 单可用区实例:0。 两可用区实例:[1,节点数-1]。 三可用区实例:[2,节点数-1]。 |
TENCENT_VECTOR_DB_ENABLE_HYBRID_SEARCH | 指定是否开启混合检索。 | true:开启。 |
4. 在浏览器地址栏中,输入部署的服务器的 IP 地址,进入 Dify 平台并完成账号创建,如下图所示。
5. 在 Dify 工作空间上方,选择知识库,并单击创建知识库,如下所示。
6. 在创建知识库的导航页面,上传知识库的数据源文本,单击下一步。
7. 在文本分段与清洗指引页面,设置分段规则,Embedding 模型以及检索方式。
7.1 在分段设置区域,选择父子分段,保持默认配置。
7.2 在索引方式区域,选择高质量,在 Embedding 模型的下拉列表,选择嵌入模型。
说明:
第一次使用,在 Embedding 模型的下拉列表,单击模型设置,可在模型供应商页面,选择所需的模型并安装。
7.3 在检索设置区域,选择混合检索,并根据页面指引,选择检索结果排序方式。
说明:
Dify 已支持使用腾讯云向量数据库自带的稠密向量 + 稀疏向量 实现混合检索,通过双路检索的方式,整体提升 RAG 应用的效果,实现精准问答与知识检索。 8. 单击保存并处理,在如下图所示页面,知识库默认以导入的数据源文件命名,等待数据源文件嵌入完成,则知识库创建成功。
9. 在Dify工作空间上方,选择工作室,并单击创建空白应用,单击创建。如下图所示。
10. 在创建空白应用页面,选择应用类型为聊天助手,并在应用名称 & 图标的输入框,输入应用名称,如下所示。
11. 在创建的工作室中,在知识库区域,单击添加,导入新建的知识库(本示例以腾讯云向量数据库的官网文档为例搭建,知识库文件 demo_file1.pdf),便可以在下方输入框,输入具体问题进行知识问答,如下图所示。