aiWithDoc可研分析
作者:企起期小编 阅读次数:

演示视频

市场分析

背景

ChatGPT的成功迅速带火了一类产品,与文档对话。这类软件目前比较火爆的有ChatPDF,ChatDOC,chatpaper等等。

ChatPDF是一个在不到一周时间里,就让10万份PDF学会了聊天的应用!无需注册,登录,通过上传PDF文件到ChatPDF,就能实现和PDF跨语言对话,并根据PDF内容进行回答。如果我们的想象力再丰富一些,比如:

  • PDF是一本历史书,那么我们可以直接和历史对话。

  • PDF是法律法规,可以提问政策相关问题,使其产品符合法律法规要求(即合规性)。

  • PDF是一套试卷,那么可以直接问答案。(逻辑推理类型效果不行)

ChatDOC 是一种工具,旨在帮助用户通过上传文件并与 AI 聊天机器人进行自然语言对话来获取知识。它提供了多种功能,例如摘要、提取、数据分析、搜索和定位、头脑风暴、考试问题准备、提供建议等。ChatDOC 还提供了有关如何充分利用其服务的指南,例如使用建议的查询、执行多文档查询、启动线程和引用引用。该平台通过提供参考来源和提供调整模式来确保 AI 解释值得信赖,聊天机器人可以在其中回答文档之外的问题。用户可以通过编写更好的提示来改善聊天机器人的响应,要求它用更简单的术语解释复杂的概念,并指示它分析数据。研究人员、学生、专业人士和出版商也可以使用 ChatDOC 来加快他们的工作速度并更有效地定位信息。

应用前景

"与文档对话"是一款非常实用的工具,它可以帮助用户在不需要任何额外的软件或技术知识的情况下,将普通的文档文件转换为具有实时聊天功能的文档文件。这类工具的出现,使得团队内的协作变得更加便捷和高效。 随着远程工作的普及,团队内的协作变得越来越重要。而"与文档对话"的工具出现,正是满足了这一需求。通过它,团队成员可以在阅读文档时,直接在文件中进行聊天交流,从而避免了邮件或即时通讯软件的不便。这种实时的交流方式,可以极大地提高工作效率,减少沟通成本。 随着远程工作的普及和全球化趋势的增强,"与文档对话"市场前景非常广阔。全球有数亿人使用PDF文件进行工作或学习,而这些人都可能成为"与文档对话"工具的用户。同时,随着越来越多的企业和组织意识到"与文档对话"的优势,他们也会加大对这一工具的投入和使用。这将进一步推动"与文档对话"市场的发展。典型的应用场景如下:

1.学术研究与文献综述:对于学术界的研究人员和学生而言,"与文档对话"是一款强大的工具。它可以帮助他们快速浏览大量的学术论文和研究成果,提取关键信息和观点,加快文献综述的过程。同时,"与文档对话"还能够自动生成文献摘要和参考文献列表,帮助用户快速整理和引用相关文献。

2.商业与法律文件分析:"与文档对话"对商业和法律领域的专业人士来说是一项强大的工具。它可以快速解析和分析商业合同、法律文件和报告,提取重要条款、法律条文和关键信息。这对于律师、企业法务团队和商业顾问来说,可以节省大量时间和努力,并减少信息漏洞和风险。

3.教育与学习辅助:"与文档对话"可以成为学生的学习伙伴。学生可以利用它来更高效地阅读教科书、参考书和学术文章。"与文档对话"的摘要生成功能可以帮助学生迅速了解文档的核心内容,提供重要概念和知识点,帮助他们更好地掌握学习材料。

4.企业知识管理:对于企业来说,"与文档对话"可以用于知识管理和信息检索。企业通常有大量的内部文档和报告,而"与文档对话"可以帮助企业快速索引和搜索这些文档,提取有价值的信息,促进知识共享和团队协作。

5. 新闻与媒体分析:媒体和新闻机构可以利用"与文档对话"来分析和摘要大量的新闻文章和报道。它可以帮助记者快速获取新闻事件的关键信息和主要观点,为新闻报道和分析提供有力支持。

技术原理

本质上这类工具是在LLM等模型的API接口上进行二次开发,例如使用OpenAI的接口进行二次开发,其中最主要的部分是涉及到向量数据库,大体的步骤如下(用OpenAI举例):

  • 文章切片到段落

  • 通过 OpenAI 的 embedding 接口将每个段落转换为 embedding 并存入到向量数据库中

  • 将提问的问题转换为 embedding

  • 把问题的 embedding 比较所有段落 embedding 得到近似程度并排序

  • 把和提问(语义)最接近的一个或几个段落作为上下文,通过 OpenAI 的对话接口得到最终的答案

文档切片并向量化流程

LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。

以下用LangChain的图来解释文档切片及向量化过程:


  1. 如上图所示,LangChain可以调用各种文档加载工具进行文档加载(例如pdf,doc,txt,html,md等等)

  2. 加载完对应文档后,就需要对文件进行切片,因为目前所有的大语言模型对token长度都有限制。

  3. 切完片后,需要对内容进行向量化,例如利用OpenAI的embedding模型进行向量化。向量化的好处是可以将复杂的数据结构转化为简单的数学对象,从而方便进行计算和分析。

  4. 向量化完毕后把结果存入到向量数据库或者index文件中。

  5. 当需要进行文档对话时,就可以把问题和向量结果进行比对,也就是上图的"Retrieve"步骤。

向文档提问流程

以下用网络上的一张图来解释文档对话的过程:

  1. 如上图所示,当用户提问时,首先是把问题进行向量化,也就是上图的"question_embedding"

  2. 拿到向量化的提问后,需要去与向量库中的各个分片的向量进行比对,有很多种数学的比对方法,后续文章接着探讨。

  3. 比对完后,拿到相似度最高的n个切片,一般取3或5个。

  4. 然后把对应的切片内容以及问题,按照组织好的prompt调用LLM模型的API得到答案。上图示例中用的是ChatGPT大语言模型。

第三方示意图

从文档处理角度来看,实现流程如下:

https://github.com/chatchat-space/langchain-ChatGLM

技术可行性分析

系统架构设计分析

当前流行的软件架构是B/S方式,所谓B就是指浏览器,又称瘦客户端,用户仅仅只需要有一个浏览器就可以使用系统,而不需要安装其他的软件。总而言之,B/S架构好处如下:

  1. 跨平台:B/S架构基于Web技术开发,所以可以跨越不同的操作系统和浏览器,在任何地方通过网络就可以使用。

  2. 维护简单:因为所有的应用都在服务器上,所以维护升级比较简单,只需要在服务器端更新就行了,不需要在每个客户端上都进行升级和安装。

  3. 灵活性强:B/S架构的应用是通过Web浏览器访问的,因此可以随时随地连接到互联网,提供更大的灵活性和可扩展性。

  4. 安全性高:B/S架构中的应用程序都是运行在服务器上,客户端无法修改、破解或者盗取数据;同时,也容易实现权限管理和控制,保证数据的安全性。

  5. 降低成本:B/S架构中客户端的硬件配置要求不高,只需要一个浏览器就可以访问,这大大降低了客户端的硬件成本。

根据目前软件开发行业的技术成熟度及流行度,我司企起期也采用B/S架构进行系统构建,使用前后端分离技术,具体系统架构分析如下:

  1. 前端界面层:前端界面层通过网页,提供给用户直观的、易于操作的界面。此层包括用户登录、数据输入、查询、显示等功能,负责与用户进行交互。

  2. 应用逻辑层:应用逻辑层是处理业务逻辑的核心层,主要负责对用户输入数据进行验证和处理,生成报表和统计数据,并将结果返回给前端界面层。

  3. 数据访问层:数据访问层是连接数据库的中间层,负责将应用逻辑层的请求翻译成数据库语言,访问数据库,进行数据的读取、更新、删除等操作。

  4. 数据库层:通常采用关系型数据库,如MySQL、Oracle等。

  5. 服务层:服务层是一些公共的工具类,为其他层提供支持,例如安全认证、缓存管理、日志记录等。

总体来说,aiWithDoc的系统架构设计应该注重可扩展性和稳定性,同时保证系统的安全性和易用性。对于每一层的设计需根据实际情况进行调整和优化,例如前端界面层需要注重界面美观和易用性,应用逻辑层需要注重业务逻辑的处理和数据安全性,数据访问层需要注重数据库的读写性能和可靠性等等。

技术选型与实现方案分析

企起期通过多年的软件开发,目前采用非常流行的前后端技术进行开发,后端框架用SpringBoot,中间层采用Pyhton FastAPI进行开发,前端框架用VUE,前端UI采用ElementUI。对应的优势如下:

Spring Boot 是一种基于 Spring 框架的快速开发应用程序的工具,作为后端开发有以下优势:

  1. 快速构建:Spring Boot 提供了许多自动配置和默认值,可以快速地构建出一个完整的Web应用程序并运行,不需要手动配置和管理复杂的依赖关系。

  2. 易于维护:Spring Boot 的模块化设计使得应用程序易于维护和更新。应用程序中的各个模块都是独立的,并且可以单独进行测试、部署和升级,因此减少了对整个应用程序进行操作的风险。

  3. 易于扩展:Spring Boot 通过提供很多插件和扩展点来支持应用程序的扩展,开发人员可以根据自己的需求进行灵活的扩展和定制。

  4. 健壮性和高可靠性:Spring Boot 提供了很多功能和组件来保证应用程序的健壮性和高可靠性,例如内置的Tomcat容器、监控和诊断工具等,能够更好地帮助开发人员维护和监控应用程序。

  5. 开发体验友好:Spring Boot 的开发方式非常简单易懂,开发人员可以快速上手,并且提供了丰富的文档和示例,大大提高了开发体验。


Vue 是一种流行的前端开发框架,作为前端开发有以下优势:

  1. 数据绑定:Vue 的核心是响应式数据绑定系统。当数据发生变化时,Vue.js 自动更新视图,让开发者专注于业务逻辑而不是手动操作DOM。

  2. 组件化开发:Vue 支持组件化开发,将页面拆分为多个可复用的组件,提高代码的可读性和重用性,并且可以减少开发和维护的工作量。

  3. 轻量级:Vue 是一款轻量级的JavaScript框架,文件大小小,对性能影响小,加载速度快,同时也不需要其他额外的依赖库。

  4. 易于学习和使用:Vue 的语法简单明了,易于学习和使用。它提供了详细的文档和示例,以及大量的扩展插件和工具,方便快速开发出高性能的Web应用程序。

  5. 高度灵活:Vue 可以与其他JavaScript库和框架无缝集成,例如React、Angular等,同时还提供了丰富的API和选项,可以满足各种不同的需求。

  6. 兼容性好:Vue 兼容各种主流浏览器。

总之,Vue 作为一款流行的前端开发框架,具有数据绑定、组件化开发、轻量级、易于学习和使用、高度灵活和兼容性好等优势。它可以提高Web应用程序的开发效率和质量,使得前端开发更加简单、快速和高效。


ElementUI 是一个基于 Vue 的桌面端组件库,作为前端 UI 组件库有以下优势:

  1. 丰富的组件:ElementUI 提供了丰富的组件,包括表格、表单、按钮、弹窗、导航等等,适用于各种场景和使用需求。

  2. 简洁易用:ElementUI 的组件风格简洁明了,易于使用和定制。它提供了大量的选项和 API,使得开发者可以按照自己的需求灵活地进行配置和调整。

  3. 贴近设计规范:ElementUI 的组件设计贴近业界的设计规范,符合人性化的交互体验,提高用户界面的友好性和易用性。

  4. 样式易于修改:ElementUI 的样式易于修改,通过提供的变量和 Mixin 可以轻松地对组件的样式进行定制和扩展,满足不同项目的品牌色、样式需求。

  5. 社区活跃:ElementUI 是一个开源项目,拥有庞大的社区支持,有很多优秀的第三方插件和工具,能够更好地帮助开发者快速构建出高质量的Web应用程序。


FastAPI是一个基于Python的现代、快速(高性能)的Web框架,具有以下优势:

  1. 高性能:FastAPI基于Starlette框架构建,使用异步(async)编程模型,利用Python的协程和异步IO特性,能够处理大量并发请求,提供出色的性能。

  2. 快速开发:FastAPI提供了自动化的API文档生成功能,可以根据代码自动生成交互式API文档,大大减少了编写文档的工作量。同时,FastAPI还提供了强大的类型提示功能,可以在编码过程中自动检查类型错误,提高开发效率。

  3. 强大的请求处理能力:FastAPI支持处理各种类型的请求,包括GET、POST、PUT、DELETE等,同时还支持路径参数、查询参数、请求体参数等多种参数传递方式,非常灵活。

  4. 安全性:FastAPI内置了许多安全性功能,包括身份验证、授权、CSRF保护等,可以帮助开发者构建安全可靠的Web应用。

  5. 易于部署:FastAPI可以轻松地与各种Web服务器(如Uvicorn、Gunicorn等)和部署工具(如Docker、Kubernetes等)集成,方便部署和扩展。

总之,FastAPI是一个功能强大、性能优越、易于使用和部署的Web框架,适用于构建高性能的Web应用和API。

后端技术选型

  • 核心框架:Spring Boot

  • 安全框架:Apache Shiro

  • 持久层框架:MyBatis

  • 数据库连接池:Druid

  • 日志管理:Logback

  • 缓存数据: Redis

  • 工具类: HuTool

中间层技术选型

  • 核心框架:FastAPI

  • LLM工具: LangChain

  • 大语言模型: ChatGPT

  • 向量数据库: Chroma

前端技术选型

  • Node.js

  • ES6

  • Axios

  • ElementUI

  • JS-cookie



返回列表

扫码关注不迷路!!!

郑州升龙商业广场B座25层

service@iqiqiqi.cn

企起期科技 qiqiqi

联系电话:187-0363-0315

联系电话:199-3777-5101