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

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 提问相同问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dify是一个开源的Python库,用于快速开发机器学习模型和部署机器学习服务。它提供了一系列的工具和接口,帮助开发者在机器学习项目中更高效地进行数据处理、特征工程、模型训练和模型部署等任务。 dify的主要特点包括: 1. 简单易用:dify提供了简洁的API和丰富的功能,使得开发者可以快速上手并进行高效的开发。 2. 模块化设计dify采用模块化的设计,每个模块都有清晰的功能和接口,可以根据需求选择性地使用。 3. 数据处理和特征工程:dify提供了丰富的数据处理和特征工程工具,包括数据清洗、特征选择、特征变换等功能,帮助开发者更好地准备数据。 4. 模型训练和评估:dify支持多种常见的机器学习算法,并提供了模型训练和评估的接口,方便开发者进行模型选择和性能评估。 5. 模型部署和服务化:dify支持将训练好的模型部署为API服务,方便其他应用程序进行调用和集成。 如果你想开发新模块,可以按照以下步骤进行: 1. 确定模块的功能和接口:明确你的模块要解决的问题,并设计好相应的功能和接口。 2. 实现模块代码:使用Python编写你的模块代码,可以借助dify提供的工具和接口来简化开发过程。 3. 测试和调试:对你的模块进行测试和调试,确保其功能正常并符合预期。 4. 文档编写:编写清晰的文档,介绍你的模块的功能、使用方法和示例代码等。 5. 提交和分享:将你的模块提交到dify的开源社区,与其他开发者分享你的成果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值