如何搭建基于大模型的智能知识库

大模型外挂知识库rag综述 大模型外挂知识库rag的综述 阅读详情
AI摘要

本文介绍如何利用RAG(检索增强生成)技术和LLM(大型语言模型)构建智能知识库,涵盖数据收集、处理、向量索引建立及模型选择与微调等关键步骤,并展示FastGPT、AnythingLLM和LangChain-Chatchat三个开源项目。

自从2022年底ChatGPT横空出世引爆了大模型技术浪潮,时至今日已经一年有余,如何从技术侧向商业侧落地转化是一直以来业内普遍关注的问题。

从目前企业端观察到的情况来看,基于大模型的知识库是一个比较有潜力和价值的应用场景,能够帮助企业大幅提高知识的整合和应用效率。然而由于通用预训练大模型的训练数据主要来源于公开渠道,缺乏企业专业和私有知识,直接使用将难以支撑企业内部的专业知识问答。

通过重新训练或微调的方式可以实现知识扩充,但存在以下缺点:

  1. 需要的数据量大,训练代价高、周期长;
  2. 对于企业知识的快速更新无法及时响应;
  3. 对已有知识无法有效更新或删除;
  4. 大模型存在的“幻觉”问题。

而RAG(Retrieval-Augmented Generation,检索增强生成)技术,能够在一定程度上解决以上问题。RAG,顾名思义,即通过引入存储在外部数据库中的知识以增强大模型的问答能力。具体来说,大模型在回答问题或生成内容前,首先在外部数据库中进行检索,将相似度高的内容返回给大模型再进一步整理生成。这种模式能够提高输出的准确性和相关性,避免大模型产生“幻觉”生成事实不正确的内容。RAG与LLM的集成正被迅速应用于构建知识库、聊天机器人以及其他大模型应用中。

本文将简要介绍基于RAG与LLM的智能知识库的搭建过程,并展示一些开源的知识库项目。

一、搭建过程

主要可以分为以下几个步骤。

1. 数据收集

若企业已有知识管理系统,后续可直接与原系统进行对接并进行下一步处理;对于相当一部分目前没有建设知识管理系统的企业,那么首先要做的是收集企业内部的各种知识数据,包括各种格式的文档数据,以及表格、图片、音频、视频等多模态数据等,用于后续与大模型进行交互。

2. 数据处理
2.1 数据清洗与预处理

了解机器学习建模的读者可能听过“garbage in garbage out”这句经典,数据清洗与预处理将对后续模型性能起到关键作用。

以最常见的文本类数据为例,一般的数据清洗与预处理包括去噪声,去除特殊格式、特殊字符、停用词、标点符号,以及进行词干化或分词以减少词汇量等。

2.2 文本分块

在RAG方法中,将大型文档分割成“块”(chunk)进行存储,一方面将有助于提高检索效率,另一方面通过基于特定“块”的上下文检索方法还能够在一定程度上弥补检索精度的不足。由此可见,分块的结果将直接影响最终的应用效果,因此选择合适的分块方法至关重要。

目前常用的文本分块的方法主要有如下几种:

  • 按字符数分割:根据设定分块的字符长度进行分割,这是最简单的分块方法,比较“傻瓜式”,对语义理解不足;
  • 按段落分割:结合文档的层次分级结构进行分割,对文档解析的能力要求较高,分割效果优于按字符数切割;
  • 按语义分割:需要结合模型能力对文档内容加以理解,并按语义进行分割和拼接,分割效果好,但是技术难度较大。

LangChain提供了很多文本分割工具,以下是一些示例:

  • RecursiveCharacterTextSplitter():按字符串分割文本,递归地尝试按不同的分隔符进行分割文本。LangChain默认使用该方法。
  • CharacterTextSplitter():按字符来分割文本。
  • MarkdownHeaderTextSplitter():基于指定的标题来分割markdown 文件。
  • TokenTextSplitter():按token来分割文本。

从目前观察到已产品化的分割模块来看,主要使用的方法还是按字符数和段落进行分割。选择按字符数分割,用户可定义分割的字符串长度以及分块后字符串的重叠长度;选择按段落分割,需要结合OCR能力方可实现。

2.3 微调数据格式统一

大模型或embedding模型的微调并非必需,如需进行微调,那么用于微调的数据需按照模型和任务要求进行格式统一。

以下示例由ChatGPT生成,可以直观地感受一下其中的差异。如:

文本分类任务

  • 输入格式: 通常是文本数据,可以是句子、段落或文档。
  • 标签格式: 标签通常是类别标识,可以是单一类别或多类别。
  • 样本格式示例:
Text                                  Label
"This is a positive sentence."        Positive
"Negative sentiment in this text."    Negative
"Neutral statement here."             Neutral

问答类任务

数据通常包括问题和相应的答案,当需要结合上下文信息理解问题语境时,通常还需要加上上下文信息,样本格式示例:

Context                                   Question                            Answer
"The Eiffel Tower is located in Paris."   "Where is the Eiffel Tower?"       "Paris"
"There are nine planets in our solar system, including Earth." 
                                         "How many planets are there?"      "Nine"
"William Shakespeare, a famous playwright, wrote 'Romeo and Juliet'." 
                                         "Who is the author of this play?"  "William Shakespeare"
"Guacamole is a popular Mexican dish made with mashed avocados." 
                                         "What is the main ingredient?"     "Avocado"

3. 建立向量索引

将文档分块以后,通常需要对每个分块建立索引用于后续的检索。

常见的建立索引的方法如下:

  • 链式索引:通过链表结构对文本块进行顺序索引。
  • 树索引:将文本块构建成具有层级的树状索引结构,检索时无需像链式索引一样按顺序查询。
  • 关键词表索引:从文档块中提取关键词,构建关键词和文档块之间的多对多映射,检索时金鱼关键词对文档块进行筛选。
  • 向量索引:将文本块映射成向量以后,通过相似度计算的方法进行查询。

其中,建立向量索引是当下最为流行的一种方法。首先,通过embedding模型将高维度的数据映射到低维空间生成向量表示,再对这些向量进行索引和搜索。

embedding模型需要根据任务的性质和输入数据的特点进行选择。以文本嵌入为例,早期的有Word2Vec、GloVe等模型,现在常用的有 Sentence Transformers、OpenAI的text-embedding-ada-002等。为了更好地匹配数据类型和任务性质,还需要对embedding模型进行微调处理。

为分块的文档生成向量表示后,通常采用相似度检索的方式进行查询,可以采用内积、欧式距离、余弦距离等方法,其中余弦距离最为常用。

在实际应用中,建立向量索引和查询存在以下需要考虑的问题,可能并不全面,提出来供大家讨论:

1、向量化以后的数据膨胀问题

2、大规模向量相似性检索的效率问题

4. 大模型选择与微调

目前已经开源的大模型项目有很多,如何选择适合的大模型,可结合任务类型、算力水平等因素综合考虑,具体可参考之前的文章《该选多大参数量的大模型?》
如果基础预训练大模型无法满足在特定任务上的应用要求,还需要对模型进行微调。目前常用的高效微调方法主要有LoRA、P- Tuning、Prompt Tuning等,能够以较低的数据量,以及算力和时间的投入取得较好的微调效果。

完成大模型微调以后,可以结合任务要求选择适合的公开数据集进行测评,以验证微调效果。

二、开源知识库项目

1. FastGPT

FastGPT是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景。项目地址:https://github.com/labring/FastGPT。

功能架构图如下。可以看到,FastGPT可接入多种LLM,将存入知识库的知识处理为QA对或问题的形式,向量化后存入数据库。对话时将提问内容向量化,在数据库中进行向量相似性搜索,将搜索到的内容发送给LLM进行输出。
在这里插入图片描述

应用FastGPT时,首先要创建一个知识库,在知识库中上传文档后自动生成QA对或分块,然后再创建一个对话式的应用并与创建的知识库相关联,这样大模型在回答时就能够应用到我们创建的知识库中的知识。

2. Anything LLM

Anything LLM是一个开源的企业智能知识库解决方案,能够通过聊天的形式,快速地获取曾经喂给它的任何信息。

目前可以通过https://useanything.com/免费试用。
在这里插入图片描述

使用步骤

  1. 选择使用的大模型:目前提供OpenAI,Azure OpenAI和Anthropic Claude 2三种大模型可供选择,后续的版本中将允许用户使用自己的大模型;
  2. 选择向量数据库:目前提供Chroma、Pinecone、Qdrant、Weaviate和LanceDB,默认使用LanceDB;
  3. 可定制界面和使用方式:用户可自定义logo;支持个人使用or团队使用,进行相关配置即可;
  4. 创建workspace:用于上传与LLM对话时需要用到的文档;上传的文档可以在多个workspace中进行复用。在workspace中可定义“temperature”这个参数,它主要影响LLM回答的随机性和创造性;此外,可以配置展示历史对话的个数,以及自定义对话的prompt。
  5. 进行对话:对话时大模型能够根据上传的文档进行回答,并展示引用的文档以及具体段落,确保回答可信可溯源。
3. LangChain-Chatchat

LangChain-Chatchat(原LangChain-ChatGLM),基于ChatGLM等大模型与LangChain等应用框架实现,是一款开源、可离线部署的RAG大模型知识库项目,能够解决数据安全保护、私域化部署的企业痛点。

实现原理如下图所示。过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。

在这里插入图片描述

在最佳实践中推荐的模型组合如下,用户也可以根据需要自由选择,目前项目支持的大模型、向量数据库、开源embedding模型等非常丰富,可通过官方wiki进行查看。

LLM: Chatglm2-6b

Embedding Models: m3e-base

TextSplitter: ChineseRecursiveTextSplitter

Kb_dataset: faiss

结语

基于RAG与LLM的知识库作为目前最有潜力的企业端大模型应用之一,从技术角度可以看到,建设方案已经完备;从业务角度,最终的应用效果和业务价值还需要观察,并通过业务侧的反馈不断地促进建设方案的进一步优化,比如增加对多模态知识的处理能力等。让我们共同期待这类应用普及那一天的到来。

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

大模型里的知识库是什么? 是指用于存储、组织和检索结构化或非结构化知识的系统,通常作为外部数据源与大模型(如GPT-4、LLaMA等)结合,以增强模型对专业领域或实时信息的理解能力。,通过RAG等技术弥补模型固有缺陷,成为落地应用的核心组件。,未来将更注重实时性与自动化。 阅读详情

相关推荐

基于开源大模型快速构建本地知识库应用

作为新一代人工智能产业的核心动力,AI大模型广泛应用于各行各业,打开了迈向通用人工智能的大门。本文通过大模型相关技术背景、构建需求、实现原理、模型选型及工程实践等方面介绍了如何基于开源大模型快速构建本地知识库应用。通过分析大模型应用的存在的问题,提出并详细描述了知识库构建思路及RAG技术路线应用的解决方法,最后,基于LangChain-Chatchat工程实现,为快速构建本地知识库应用提供了一种有效的解决方案。

fzq0625的博客 1643

基于大模型构建本地知识库

支持的格式: 根据语义 目前来说,由于语义的不确定性,用规则会取得更好的效果,文本分句长度为800。语义检索的重要前提是Sentence Embeddings。可惜目前看到的绝大部分材料都是使用OpenAIEmbeddings。OpenAIEmbeddings 调用的mode_name=“text-embedding-ada-002” 排在第6位MTEB 排行榜 - MTEB 的拥抱面孔空间 (huggingface.co)对于中文模型在政府语料问题的匹配,在这里测试了ernie-base模型和tex

qq128252的博客 1万+

Ubuntu20.04下Docker无缝升级实战指南

本文提供了一份在Ubuntu20.04系统上安全、无缝升级Docker的实战指南。文章详细阐述了升级前的版本检查、数据备份等准备工作,逐步演示了通过APT包管理器进行升级或指定版本安装的操作步骤,并强调了升级后的验证与常见问题回滚方案,确保业务容器平稳过渡。

postgres8guard的博客 481

如何搭建高效智能知识库?大模型知识库的最佳实践

大模型知识库是指结合人工智能(AI)大模型(如GPT、文心一言等)能力的知识管理系统。它能够智能搜索、生成内容,并基于用户需求提供精准的知识推荐。相较于传统知识库,大模型知识库具有以下优势:智能检索:利用自然语言处理(NLP)技术,实现语义级搜索,用户无需精准匹配关键词即可获取所需内容。交互式问答:支持智能问答功能,用户可像与客服对话一样获取精准答案。搭建高效智能知识库的关键在于合理的知识架构、优秀的知识库工具以及大模型AI的智能化赋能。如果你正在寻找一款强大的智能知识库工具,不妨试试HelpLook。

LookLook同学的博客 899

OpenClaw 报错 TypeError: Cannot read properties of undefined (reading ‘prototype‘):Node.js 版本不兼容

国产化环境中部署OpenClaw云边协同平台时,出现"TypeError: Cannot read properties of undefined (reading 'prototype')"报错。经分析发现根本原因是Node.js版本与依赖生态不兼容,新版本Node(如v21)移除了旧依赖使用的内部API。解决方案包括:1)使用nvm切换至兼容的Node 16/18 LTS版本;2)容器化部署固定Node版本;3)遵循官方推荐的引擎版本范围。该问题揭示现代工程中版本管理的重要性,

博客 2313

ECU诊断功能测试:从理论到实践

ECU诊断功能是指通过特定的诊断协议与ECU进行通信,以获取ECU的状态信息、故障码、数据流等,并执行特定的诊断操作。诊断功能的主要目的是帮助开发人员和维修人员快速定位和解决ECU中的问题,确保车辆的安全性和可靠性。UDS协议是ISO 14229标准的一部分,定义了一系列的诊断服务,如读取故障码、清除故障码、读取数据流等。UDS协议基于CAN(Controller Area Network)总线,具有较高的灵活性和扩展性。读取故障码是诊断功能中最基本的操作之一。通过读取故障码,可以快速定位ECU中的问题。

闲人编程的博客 1807

一文教你如何搭建基于大模型的智能知识库,看到就是赚到!

自从2022年底ChatGPT横空出世引爆了大模型技术浪潮,时至今日已经一年有余,如何从技术侧向商业侧落地转化是一直以来业内普遍关注的问题。前排提示,文末有大模型AGI-优快云独家资料包哦!从目前企业端观察到的情况来看,基于大模型的知识库是一个比较有潜力和价值的应用场景,能够帮助企业大幅提高知识的整合和应用效率。然而由于通用预训练大模型的训练数据主要来源于公开渠道,缺乏企业专业和私有知识,直接使用将难以支撑企业内部的专业知识问答。

lvaolan168的博客 1316

github创建账号第一步始终出错

github创建账号总结:第一次注册GitHub,填好用户名邮箱密码后进入下一步就卡在哪里,上面还提示Unable to verify your captcha response等,进入网址的解决办法以及下载其他的浏览器也无法解决,用手机浏览器抱着试一试的心态竟然成功了,分享给大家。手机下载谷歌浏览器,进入GitHub正常注册,能向下继续,邮箱验证完以后再用电脑登陆就ok啦

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 4376

如何搭建基于大模型的智能知识库_大模型知识库构建

基于RAG与LLM的知识库作为目前最有潜力的企业端大模型应用之一,从技术角度可以看到,建设方案已经完备;从业务角度,最终的应用效果和业务价值还需要观察,并通过业务侧的反馈不断地促进建设方案的进一步优化,比如增加对多模态知识的处理能力等。让我们共同期待这类应用普及那一天的到来。

qkh1234567的博客 1637

芒果YOLOv12改进90:检测头篇之ShareSepHead:即插即用|原创新颖共享Sep检测头,更省参数量,更高效,打造新型YOLOv8检测器,精度高效涨点

芒果YOLOv12改进90:检测头篇之ShareSepHead:即插即用|原创新颖共享Sep检测头,更省参数量,更高效,打造新型YOLOv8检测器,精度高效涨点

包括YOLOv5、YOLOv7、YOLOv8等模型改进 344

整理 钢琴 约翰汤普森-简易钢琴(小汤)

文件名:(小汤1)约翰-汤普森钢琴1 超清PDF (原版引进)文件名:(小汤2)约翰-汤普森钢琴2 超清PDF (原版引进)文件名:(小汤3)约翰-汤普森钢琴3 超清PDF (原版引进)文件名:(小汤4)约翰-汤普森钢琴4 超清PDF (原版引进)文件名:(小汤5)约翰-汤普森钢琴5 超清PDF (原版引进)文件大小:20.1 MB。文件大小:23.7 MB。文件大小:45.7 MB。文件大小:51.7 MB。文件大小:72.0 MB。

TS的博客 5万+

一文教你如何搭建基于大模型的智能知识库,看到就是赚到!!

自从2022年底ChatGPT横空出世引爆了大模型技术浪潮,时至今日已经一年有余,如何从技术侧向商业侧落地转化是一直以来业内普遍关注的问题。前排提示,文末有大模型AGI-优快云独家资料包哦!从目前企业端观察到的情况来看,基于大模型的知识库是一个比较有潜力和价值的应用场景,能够帮助企业大幅提高知识的整合和应用效率。然而由于通用预训练大模型的训练数据主要来源于公开渠道,缺乏企业专业和私有知识,直接使用将难以支撑企业内部的专业知识问答。

xiangxueerfei的博客 1027

详解FreeRTOS:低功耗Tickless模式(高级篇—7)

FreeRTOS提供了一个叫做Tickless的低功耗模式,本篇博文我们就来学习一下如何使用这个Tickless模式。

不脱发的程序猿 1898

一文教你如何搭建基于大模型的智能知识库,看到就是赚到!!!

自从2022年底ChatGPT横空出世引爆了大模型技术浪潮,时至今日已经一年有余,如何从技术侧向商业侧落地转化是一直以来业内普遍关注的问题。前排提示,文末有大模型AGI-优快云独家资料包哦!从目前企业端观察到的情况来看,基于大模型的知识库是一个比较有潜力和价值的应用场景,能够帮助企业大幅提高知识的整合和应用效率。然而由于通用预训练大模型的训练数据主要来源于公开渠道,缺乏企业专业和私有知识,直接使用将难以支撑企业内部的专业知识问答。

程序员鑫港的博客 1184

【人工智能】向量数据库全生命周期数据安全防护体系:破解向量化与检索双环节泄露风险

大模型时代,向量数据库已成为RAG(检索增强生成)架构、语义检索、多模态应用的核心基础设施,解决了大模型幻觉、长上下文窗口限制、私有知识落地等核心痛点。但行业普遍存在认知误区:将Embedding向量等同于“无害的语义压缩乱码”,忽视了向量数据原生的泄露风险。

奶爸的编程之路,也就一周冷个三天 159

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 大模型所谓的参数是什么?大模型为什么需要训练?大模型训练到底干了什么?
下一篇: 在大模型时代,我们应该如何有效的去学习大模型?
我爱学大模型
博客等级 码龄3年 7883粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值