前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搭建一个本地AI知识库需要用到哪些技术栈?

搭建一个本地AI知识库需要用到哪些技术栈?

作者头像
测试蔡坨坨
发布2024-07-01 13:21:00
820
发布2024-07-01 13:21:00
举报
文章被收录于专栏:蔡坨坨的测试笔记

“阅读本文大概需要5分钟。

前言

你好,我是测试蔡坨坨。

随着AI热度愈发火热,越来越多的产品在AI的“赋能”下不断革新和进化。

AI技术的飞速发展不仅改变了人们的生活方式,也大大提升了各行各业的生产效率和创新能力。

在此背景下,我们不妨自己动手丰衣足食,搭建一套属于自己的本地的AI ChatBot?顺便学习下“高大上”的AI技术,亲身体验和把握这股“科技潮流”?

本篇,我们将通过全局的视角来看一下 “基于本地上传的文档进行QA问答” 类似的案例,需要学习哪些知识点以及会用到哪些技术栈。

框架

目前,根据我所了解到的知识,市面上深层次的ChatBot主流实现框架基本都是大同小异。

本地大模型 + LangChain + 前端界面

结合RAG框架:上传本地文件 + 文件切片 + Embedding向量编码 + LLM大语言模型

整体流程图
doc flow 文档处理流程
  1. 首先,从本地加载文档(upload & loader),比如:pdf、txt、csv、md等 从许多不同来源加载文档,LangChain提供了100多种不同的文档加载器。
  2. 加载完成后,对文档进行处理,提取文档信息
  3. 提取完文档信息后,进行文本切分
    • 为什么要切分文本? 因为有时候我们的文档内容比较多,比如一本书,这种情况下不可能一次性去处理,就需要将文本切成一块一块的,分块处理。
    • 如何进行合理切分? 我们通常希望将主题相同的文本片段放在一块。例如,Markdown文件是由h1、h2、h3等多级标题组织的,我们可以根据Markdown标题分割文本内容,把标题相同的文本片段组织在一块。借助LangChain的MarkdownHeaderTextSplitter文本切割器实现。
  4. 文档切割后得到文本块
  5. 对切割完成后的文本块进行Embedding向量编号 Embedding这里我们会用到很多模型,比如可以调用OpenAI的接口(收费),还可以用HuggingFaceHub(免费)等。
  6. 将所有文本的编码全部存储到向量数据库中 例如:Faiss、Pinecone、Chroma、Milvus等。
token flow 用户提问&AI回答
  1. 用户进行提问,输入一个问题
  2. 对用户输入的问题进行Embedding编码
  3. 将用户输入的向量与数据库中所有的向量进行相似性计算,即用户的提问跟数据库里哪些文本的相关性最高
  4. 文本召回,把达到某一个阈值的相关文本全部召回
  5. 将召回的文本结合问题,形成一个上下文的模板
  6. 基于上下文模板向大模型LLM提问
  7. 获取到我们想要的答案
优点

这种实现方式有什么好处呢?

  • 我们可以让大语言模型在回答问题的时候是基于我们提供的文档范围去回答,减少AI幻觉,避免一本正经的胡说八道。
  • 大语言模型可能信息更新不及时,基于我们提供的文档去回答,也解决了信息不及时的问题。

以上,完。

脚踏实地,仰望星空,和坨坨一起学习软件测试,升职加薪!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试蔡坨坨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 框架
    • 整体流程图
      • doc flow 文档处理流程
        • token flow 用户提问&AI回答
          • 优点
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档