微信扫码
与创始人交个朋友
我要投稿
导读
登录 TiDB Cloud 并创建 cluster
选择 Serverless并设置 Region 为 Frankfurt (eu-central-1)
开启 Vector Search 并设置集群名
创建集群
create schema dify;
# 将 VECTOR_STORE 修改为 tidb_vector,文件中的默认值是 weaviate
VECTOR_STORE: tidb_vector
# 将以下配置改为保存好的连接 TiDB 配置
TIDB_VECTOR_HOST: xxx.eu-central-1.prod.aws.tidbcloud.com
TIDB_VECTOR_PORT: 4000
TIDB_VECTOR_USER: xxx.root
TIDB_VECTOR_PASSWORD: xxxxxx
TIDB_VECTOR_DATABASE: dify
docker compose up -d
向量检索:基于 ANN 查询的检索,Reranker 模型为可选
全文检索:基于 BM25 检索,Reranker 模型为可选(目前 TiDB Vector 类型未支持)
混合(向量+全文):ANN + BM25 检索,Reranker 模型为必选
CREATE TABLE IF NOT EXISTS ${collection_name} (
# id: 这里的id是在 Dify 中生成 uuid
id CHAR(36) PRIMARY KEY,
# text: 分片后的文本内容
text TEXT NOT NULL,
# meta: 元数据,记录数据集id、文档id、知识库id等,用于条件查询
meta JSON NOT NULL,
# vector: 分片向量,需要设置向量维度
vector VECTOR<FLOAT>(${dimension}) NOT NULL COMMENT "hnsw(distance=${distance_func})",
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
${dimension} 表示向量的维度,这个取决于选择的 Embedding 模型。
${distance_func} 表示用户设置的距离度量方法,目前支持的值有cosine 和 l2 ,目前仅支持cosine。
SELECT meta, text FROM (
SELECT meta, text, ${tidb_func}(vector, "${query_vector}") as distance
FROM ${collection_name}
ORDER BY distance
LIMIT ${top_k}
) t WHERE distance < ${distance};
${query_vector} 表示查询向量,即用户问题向量化后的结果
${tidb_func} 表示 TiDB Vector 中支持的向量距离度量防范,目前支持的方法有 Vec_Cosine_Distance 和 Vec_l2_Distance
${top_k} 表示结果 TopK 的具体个数
${distance} 表示向量库中的节点离查询节点的距离,Dify 知识库可以设置距离/分数阈值
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-04-25
2024-04-24
2024-07-20
2024-07-16
2024-05-08
2024-05-07
2024-05-09
2024-06-21
2024-04-25
2024-08-06