Dify.AI 用户直面会总结:Embedding 技术与 Dify 数据集设计/规划

Dify.AI 的直面会分享了 Embedding 技术如何减少 LLM 计算量,提高响应速度和降低成本。Dify 数据集设计包括自定义分段和 Q2Q 匹配模式,优化数据命中预期。未来规划包括多模型兼容、向量数据库优化和对话数据集收集。问答环节解答了数据集模式、文本分块、文档格式支持等问题,强调数据集描述的重要性和模型选择的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7 月 29 日晚,Dify 主创团队如约与社区朋友们线上直面交流,由 Dify 的数据集产品&架构负责人姜勇(Jyong)给大家分享在企业知识库嵌入 AI ChatBot 应用中最核心的 Embedding 技术概念和 Dify 数据集的设计和规划。我们还整理了本次会议中用户关心的问题,供大家阅读参考。

头图.jpg

📑 Embedding 技术的文本向量化

"Embedding"是一种将离散型变量(如单词、句子或者整个文档)转化为连续的向量表示的技术。 这个向量表示(Embedding)可以捕捉到离散型变量间的相似性和关系。这段话听起来很晦涩,但其实它的本质是特征性的收集,将事物所有的特征进行向量化,我们可以叫它叫特征工程。

目前市面上的 LLM 模型的 token 有长度限制,尽管现在 Claude2 支持 100K 的 token,可以直接分析大约 75000 字的文本,但是其分析时间长并且 token 昂贵的计费,目前用户还不能接受。在性能和成本的要求之下, Embedding 技术应运而生。我们将文本进行分段之后转化为向量,当用户提出相关问题时,搜索的内容会转换成向量,然后在向量数据库中搜索最相似的向量,匹配最相似的几个上下文,最后将上下文组成的 prompt 一起提供给模型。 这样不仅可以大大减少模型的计算量,提高响应速度,更重要的是降低成本,并丰富了模型的知识库。

📍 Dify 的数据集模式设计与规划

从数据集的整体模式出发,Dify 有如下的设计:
将文本进行自定义分段,用户自定义分隔符以及 token 大小,将文本分成多个串。Dify 目前用的是 ada002 模型,用户文档进行 embedding 后存入向量数据库。当用户在 App 端提问时会带着他的问题和上下文组成新的问题,然后匹配向量数据库里相似的段落,将这些内容组成 prompt 传到 LLM 并输出标准的回答。

10.1.jpg

Dify 数据集工作模式分为以下两种方式:

  • Dify 最近刚上线的 Q2Q 匹配模式,可大幅提高数据命中预期。 用户提出的问题会匹配到数据集里问题和段落,数据集基于用户的文档分成若干个分段,内容以 QA 形式储存在向量数据库。用户的问题会与在与向量库数据库里的问题进行相似度对比,完成后将匹配得到的答案直接返回给用户。问题和问题的匹配不管从语义还是从整体文本上都十分准确,这样可以很大程度提升文本的搜索精确度。这个功能的使用场景更适用于一些常用高频问题的回答,用户提出的问题需要在问答库里才能匹配到,问题和答案的具体内容可以进行动态调整。

  • 将文档段落直接存入 Dify 的线上数据库。用户提出的问题直接在文档中命中了一些段落并返回至模型生成回答。 由于用户短小的问题需要匹配一整段文档,召回率存在问题;文档窗口的切分可能会导致上下文语义的丢失。Dify 现在支持分段的编辑,用户不需要的文档内容可以做一些动态的调整。

10.2.jpg

关于 Dify 数据集功能的规划:

  • 基于 app 对话的数据集收集: Dify 将整理高质量的回复,将文本作为做 QA(问答)的切分。这会在 app 端聊天时起到缓存的作用,优化性能和减少与 GPT 的交互所需的 token 成本。

  • 多模型兼容: Dify 计划能够支持多种不同 LLM 的返回值。通过记录和缓存来自不同模型的回答,兼容多个返回值。如某一个问题 GPT4 的回答更好,就可以缓存到数据集里,用户在用 GPT3.5 提问相同问题的

### 解决 Win11 上 Git Clone 出现 SSL Certificate Problem 的方案 当在 Windows 11 系统上运行 `git clone` 命令时,如果遇到错误提示 `SSL certificate problem: unable to get local issuer certificate`[^1],这通常是因为 Git 默认不信任系统的根证书存储中的 CA 证书。以下是几种可能的解决方案: #### 方法一:禁用 SSL 验证 可以通过设置环境变量或配置文件来临时关闭 SSL 验证功能。 - 设置全局环境变量: ```bash export GIT_SSL_NO_VERIFY=true ``` - 或者通过修改 `.gitconfig` 文件实现永久生效: ```bash git config --global http.sslVerify false ``` 这种方法虽然简单有效,但由于完全绕过了 SSL 验证机制,可能会带来安全风险,因此仅建议用于测试环境[^2]。 #### 方法二:更新 CA 证书库 Git 使用自己的 CA 证书列表而不是依赖于操作系统自带的信任链表。可以手动下载最新的 CA 证书并将其路径告知给 Git。 具体步骤如下: 1. 下载最新版本的 cacert.pem 文件: ```bash curl https://curl.se/ca/cacert.pem -o C:\path\to\cacert.pem ``` 2. 将该文件的位置告诉 Git 客户端: ```bash git config --global http.sslCAInfo "C:\\path\\to\\cacert.pem" ``` 此方式能够修复因过期或者缺失某些特定颁发机构而导致验证失败的情况[^3]。 #### 方法三:切换到 HTTPS 替代协议 SSH 如果上述两种办法均不可行,则考虑改用SSH方式进行远程连接替代原有的HTTPS URL形式。首先需要生成一对新的密钥对,并上传公钥至目标服务器账户下;之后调整仓库地址即可完成迁移过程[^4]。 --- ### 提供一段 Python 脚本帮助自动化处理部分流程 下面给出一个小工具样例代码片段用来自动检测当前安装好的 Git 是否已经加载了正确的 CA Bundle 并打印出来方便排查问题所在之处。 ```python import subprocess def check_git_ssl_cert(): try: result = subprocess.run(['git', 'config', '--get', 'http.sslcainfo'], capture_output=True, text=True) if result.returncode == 0 and result.stdout.strip() != "": print(f"Current Git is using custom CA bundle located at {result.stdout}") else: default_path = r'C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt' print(f"No specific CA bundle configured for Git on this machine.\nDefault path should be:{default_path}") except Exception as e: print(e) if __name__ == "__main__": check_git_ssl_cert() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值