AI知识库构建指南

基于Dify平台,介绍AI知识库的构建方法,包括RAG原理、检索模型选择、分片策略、参数调优及业务案例。

背景介绍

在各行各业中,AI知识库的应用正变得越来越普遍,它通过集成自然语言处理和机器学习技术,为物业管理和服务提供智能化解决方案。以下是一些场景介绍,以及今天重要依托于Dify平台的AI知识库体系进行介绍

物业行业AI知识库的场景预测:

  • 智能客服:AI知识库可以训练聊天机器人,使其能够解答居民关于物业费用、报修流程、社区活动等问题,提供24/7的即时服务
  • 设备维护预测:通过集成设备日志和维护手册,AI知识库能够预测设备故障并提前安排维护,减少紧急维修的需求。
  • 安全监控:结合视频监控系统,AI知识库可以帮助识别异常行为,实时警告物业管理人员,提高社区的安全性。
  • 能源管理:通过分析历史能耗数据,AI知识库可以提出节能建议,帮助物业进行更有效的能源管理。
  • 居民行为分析:AI知识库可以分析居民的行为模式,为物业提供定制化服务,比如定期清洁、物业费催缴、社区活动安排等。

Dify平台介绍:

Dify是一个开源的大语言模型(LLM)应用开发平台,它允许用户通过可视化界面快速搭建生产级的AI应用。Dify的特点包括:

  • 低代码/无代码开发:用户可以通过可视化的方式定义Prompt、上下文和插件等,无需深入了解底层技术细节。 + 模块化设计:Dify采用模块化设计,每个模块都有明确的功能和接口,用户可以根据需求选择性地使用这些模块构建AI应用。 + 丰富的功能组件:Dify提供包括AI工作流RAG管道Agent模型管理等丰富的功能组件。 + 支持多种大语言模型:Dify支持多种大型语言模型,如Claude3、OpenAI等,用户可以根据需求选择最适合的模型。

Dify通过提供强大的数据集管理功能、可视化的Prompt编排以及应用运营工具,大大降低了AI应用开发的复杂度。它特别适合需要快速开发和部署AI应用的场景,为用户提供了灵活、高效的解决方案。

AI问答知识产品案例

智慧数据懂车帝-AI购车总经理助手知乎知识库问答美团知识客服

RAG与知识库

如果我们要做AI智能问答系统,那么就不得不替代:RAG系统(检索增强生成系统)并不是一个纯粹的知识库模式,而是一种结合了知识库和其他组件的复杂系统。它利用知识库来增强语言模型的生成能力,但还包括其他关键的组成部分和步骤。下面是RAG系统与知识库模式的主要区别:

  • 知识库模式(是一种模式向量化的文档片段(构建后)
  • 知识库是一种存储和管理结构化数据的系统,通常包含事实、规则、概念和关系等。
  • 它侧重于数据的组织和检索,以便快速访问和查询。
  • 知识库可以被看作是静态的,它们包含的信息是预先定义好的,并且不经常变化。
  • RAG系统(是一种能力检索-增强-生成
  • RAG系统是一种动态的、集成了检索和生成的系统,它使用外部信息源(如知识库)来增强语言模型的输出。
  • 它不仅检索信息,还利用这些信息来生成新的文本或回答,这涉及到理解、处理和生成自然语言的过程。
  • RAG系统通常包括以下组件:
  • 检索器:从知识库或其他数据源中检索相关信息。
  • 语言模型:利用检索到的信息来生成回答或文本。
  • 请求转换:对用户的查询进行优化,以提高检索的准确性。
  • 路由:决定将请求发送到哪个数据源。
  • 生成器:基于检索到的信息和用户查询生成回答。
  • 评估器:评估生成的回答的质量。
  • RAG与知识库的结合
  • 在RAG系统中,知识库可以作为检索组件的数据源之一,提供必要的背景信息和上下文。
  • 知识库在RAG系统中的作用是提供最新的、准确的信息,以支持语言模型生成更高质量的回答。

RAG系统是一个可以使用知识库来增强语言模型的性能,但还包括了许多其他处理步骤和组件。而知识库模式更多关注于数据的存储和检索。dify就是一个落地的RAG应用平台,支持个性化的知识库结构的构建和AI内容的编排

利用RAG 引入知识库上下文

RAG引用知识库

Prompt 加工AI知识角色

定义分析角色

知识库模式

选择合适的检索模型

在AI知识库构建中,选择合适的知识库模式是至关重要的。检索构建模型决定了知识内容如何被组织、存储和检索。常见的文本检索模型有:

| 特性/模型 | Embedding 模型(在线型) | 向量检索引擎(内置-离线) | Rerank 模型(重排序) | 全文检索引擎(类SQL引擎) | | :— | :— | :— | :— | :— | | 定义 | 将输入数据(如文本、图像、声音)转换成数值向量的过程。 | 利用向量空间模型进行文档相似度计算的搜索引擎。 | 用于评估搜索结果,并进行重新排序以提升查询结果相关性的模型。 | 通过扫描文档中的每一个词建立索引,并根据索引进行匹配查找的搜索引擎。 | | 技术原理 | 通过模型(如Word2Vec、BERT)将数据转换为向量表示,捕捉数据特征。 | 采用如倒排索引、向量数据库等技术,进行高效的向量相似性检索。 | 利用深度学习模型,对问题和文档之间的语义相似度进行打分。 | 通过倒排索引等数据结构,快速定位关键词在文档中的位置。 | | 应用场景 | 用于构建知识库、进行文本相似度判定、语义搜索等。 | 适用于大规模的文本、图像或声音数据的相似性检索。 | 用于提高搜索引擎的准确性,尤其是在需要精细化排序的场景中。 | 适用于需要快速全文搜索的场景,如文章、论文的数据库查询。 | | 优点 | 能够捕捉数据深层次的语义特征,广泛应用于NLP任务。 | 高效处理大规模数据,快速检索相似文档。 | 可以显著提高搜索结果的相关性和准确性。 | 速度快,准确度高,适用于大量文本数据。 | | 缺点 | 需要大量的计算资源来训练和推理,对于资源有限的环境可能不适用。 | 对于实时数据更新可能不够及时。 | 可能会增加系统的复杂性和计算成本。 | 对非结构化数据处理能力有限,如图片、视频等。 | | 关键技术 | 大语言模型如BERT、GPT;词嵌入技术如Word2Vec、GloVe。 | 向量数据库如Faiss、Milvus;索引技术如HNSW。 | 深度学习模型,如BGE Re-Ranker、Jina Reranker。 | 倒排索引、TF-IDF算法、自然语言处理技术。 | | 性能考量 | 模型的泛化能力,以及在不同任务和领域中的适应性。 | 检索速度和准确性,以及对大规模数据的支持能力。 | 重排效果和计算效率,尤其是在处理大量候选结果时。 | 索引构建的速度和查询响应时间。 |

然后分片给文本模型

在文档处理给检索模型之前要先进行分片,分片是一个重要的步骤,它涉及将文档内容分割成更小的片段或块。这样做有几个目的:

提高检索的相关性优化性能减少计算资源消耗适应不同的检索需求

为什么要分片?

  • 处理大型文档:大型文档如果作为一个整体处理,会非常庞大,难以有效索引和检索。通过分片,可以将大型文档分解为更小、更易于管理的部分。
  • 提高检索的相关性:分片可以根据内容的语义进行切分,这样每个分片都是一个相对独立和完整的语义单元。这有助于在检索时提供更加相关和精确的结果。
  • 优化性能:索引和检索整个大型文档可能非常耗时。通过分片,可以并行处理和检索,从而提高性能。

分片有什么劣势?

  • word、pdf、excel格式不一定比较规整 + RAG内置的分片规则构建的内容不一定是可靠

:::info 不同的应用场景可能需要不同的检索粒度。分片允许系统根据需求提供不同粒度的检索结果。

会存在连续语义化断层的问题,分片时需要考虑的挑战。为了减少这种影响,可以采取以下措施:

:::

一个健康的知识库

  • 良好的分片规则-本身提供的结构化文档 + 更高效的全文、没有语义化的中断 + 保持知识库的时效性 + 外部数据源word、pdf、excel格式规整、有明显的段落区分

倒排索引(免费)

倒排索引是信息检索系统中常用的一种索引方法,它将文档中出现的每个单词映射到一个包含该单词的所有文档列表。在AI知识库中,倒排索引可以用于快速检索包含特定关键词的文档。

https://cdn.nlark.com/yuque/0/2024/png/315567/1725414863418-959eee3c-eeda-4b8d-a012-f54c68d64865.png

混合索引(流量)

混合索引结合了多种索引技术,如倒排索引和B树索引,以优化搜索性能。在AI知识库中,混合索引可以根据不同的查询需求和数据特性,提供更灵活和高效的检索能力

  • 支持多个知识库模型

https://cdn.nlark.com/yuque/0/2024/png/315567/1725414834228-b82b6afe-52ff-4c2a-9d91-e6c344f935b0.png

  • 支持重新排序模型

常见供应商:<font style="color:rgb(0, 0, 0);background-color:rgb(236, 233, 227);">Sagemaker</font>Cohere 等国外模型厂商,国内的厂商到是很少遇到对应提供Rerank模型

,可能是国内**Embedding模型,**比较成熟和优秀

参数调优

https://cdn.nlark.com/yuque/0/2024/png/315567/1725415280682-77ffd624-c5ad-46fb-ba9e-5d0c736852cf.png

语义 > 关键词

一般情况下,语义 > 关键词、就是对应了真实和创造力、需要按照场景进行划分,决定你到底是需要

TopK(预选集)

用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量

Score(阈值)

用于设置文本片段筛选的相似度阈值,即:只召回超过设置分数的文本片段。系统默认关闭该设置,即不会对召回的文本片段相似值过滤。打开后默认值为

召回测试

根据问题,可以测试构建好的知识库,是否是符合预期的结构和命中

https://cdn.nlark.com/yuque/0/2024/png/315567/1725415527014-bd68ea90-bdbb-42de-a613-a2698685a7e6.png

专属知识库 -(规范案例)

添加知识库

https://cdn.nlark.com/yuque/0/2024/png/315567/1725414618677-9f77e104-bc1d-4d27-9a9d-420c6f39d0b4.png

知识库文档

从KMS知识库系统文档,导入的文档体系

https://cdn.nlark.com/yuque/0/2024/png/315567/1725414337601-52299724-ac75-473b-a049-4b961a98802a.png

数据中台-AI智能问答

Dify

业务模式(特殊案例)

构建AI知识库时,考虑其支持的业务模式是必要的。业务模式决定了知识库如何支持特定的业务流程和决策。本章节将讨论不同的业务模式,以及它们如何影响知识库的设计和实现。

参数微调 (召回)

参数微调是机器学习模型训练过程中的一个重要步骤,它涉及到调整模型参数以提高模型在特定任务上的性能。在AI知识库中,参数微调可以帮助优化知识检索和数据管理。

https://cdn.nlark.com/yuque/0/2024/png/315567/1725414226911-e595b139-3f9e-470b-a85e-b357aa107296.png

AI知识库调用流程(案例)-解决分片语义化中断问题

画板

自定义分段模型

数据分片-年、月

项目的指标的所有年和月的数据集合、一般来说会有**13**条数据

业务分片(绝对的合理分片)

财务、工单、招商租赁等业务条线,分别构建不同的文档模型,这样可以保障规范化的数据,不会出现语义化的中断,导致备选的增强检索量未达到所属的预期

https://cdn.nlark.com/yuque/0/2024/png/315567/1725414287203-19b47fb8-a799-40e2-bace-ef104c17642c.png

维度一(指标)

按照不同的指标进行划分-指标具有唯一区分性,保证分片的合理性

维度二 (时间)

  • 按照年月进行划分统一到一个数据组之中统一到 (13条数据)
  • 日度的数据进行统一维度划分 (365条数据)

维度三(项目)

  • 按照不同的项目再次进行拆分
  • 分片长度上线性保证在一个区间内

:::color5 最终形式:指标 * 时间(年月、日) * 项目 (自建分片知识库检索)

:::

课后作业

  • 研发组长对于实施经常性问到的问题,可以给个人抬头建一个AI问答
  • 使用商业版地址 https://cloud.dify.ai/apps,(可能需要挂梯子,dify主要服务器在海外),推荐用这个的原因是因为saas版本的key是独立性的,这样大家的免费token额度不会有冲突。比如我们公司的公网独立化部署的环境,因为目前一种模型只能有一种key
  • APIkey可以使用阿里通义、百炼、不限,自行在对应的商业个人版账号环境上进行个人的key申请使用
markdown8 行
-- 年度
`项目名称` + `指标名称` + `x年` + `指标数值`
-- 月度
`项目名称` + `指标名称` + `x年01月` + `指标数值`
`项目名称` + `指标名称` + `x年02月` + `指标数值`
...
`项目名称` + `指标名称` + `x年12月` + `指标数值`